Invoke-SqlColumnMasterKeyRotation
Avvia la rotazione di una chiave master della colonna.
Sintassi
Invoke-SqlColumnMasterKeyRotation
-SourceColumnMasterKeyName <String>
-TargetColumnMasterKeyName <String>
[-KeyVaultAccessToken <String>]
[-ManagedHsmAccessToken <String>]
[-InputObject] <Database>
[-Script]
[-AccessToken <PSObject>]
[-TrustServerCertificate]
[-HostNameInCertificate <String>]
[-Encrypt <String>]
[<CommonParameters>]
Invoke-SqlColumnMasterKeyRotation
-SourceColumnMasterKeyName <String>
-TargetColumnMasterKeyName <String>
[-KeyVaultAccessToken <String>]
[-ManagedHsmAccessToken <String>]
[[-Path] <String>]
[-Script]
[-AccessToken <PSObject>]
[-TrustServerCertificate]
[-HostNameInCertificate <String>]
[-Encrypt <String>]
[<CommonParameters>]
Descrizione
Il cmdlet Invoke-SqlColumnMasterKeyRotation avvia la sostituzione di una chiave master della colonna di origine esistente con una nuova chiave master della colonna di destinazione per la funzionalità Always Encrypted.
Il cmdlet recupera tutti gli oggetti chiave di crittografia della colonna che contengono valori di chiave crittografati crittografati con la chiave master della colonna di origine specificata.
Il cmdlet decrittografa quindi i valori crittografati correnti, crittografa nuovamente i valori di testo non crittografato risultanti con la chiave master della colonna di destinazione e quindi aggiorna gli oggetti chiave di crittografia della colonna interessati per aggiungere i nuovi valori crittografati.
Di conseguenza, ogni chiave di crittografia della colonna interessata contiene due valori crittografati: uno prodotto usando la chiave master della colonna di origine corrente e un altro, prodotto usando la chiave master della colonna di destinazione.
Se un'origine o una chiave master della colonna di destinazione viene archiviata in Azure, è necessario specificare un token di autenticazione valido (o token) per un insieme di credenziali delle chiavi o un modulo di protezione hardware gestito che contiene la chiave. In alternativa, è possibile eseguire l'autenticazione in Azure con Add-SqlAzureAuthenticationContext prima di chiamare questo cmdlet.
Module requirements: version 21+ on PowerShell 5.1; version 22+ on PowerShell 7.x.
Esempio
Esempio 1: avviare il processo di rotazione della chiave master della colonna.
Invoke-SqlColumnMasterKeyRotation -SourceColumnMasterKeyName "CMK1" -TargetColumnMasterKeyName "CMK2"
Questo comando avvia il processo di rotazione della chiave master della colonna denominata CMK1 e lo sostituisce con la chiave master della colonna denominata CMK2.
Esempio 2: Avviare il processo di rotazione della chiave master della colonna con i token di autenticazione specificati
# Connect to Azure account.
Import-Module Az.Accounts -MinimumVersion 2.2.0
Connect-AzAccount
# Obtain access tokens.
$keyVaultAccessToken = (Get-AzAccessToken -ResourceUrl https://vault.azure.net).Token
$managedHSMAccessToken = (Get-AzAccessToken -ResourceUrl https://managedhsm.azure.net).Token
# Pass the tokens to the cmdlet.
Invoke-SqlColumnMasterKey -SourceColumnMasterKeyName CMK1 -TargetColumnMasterKeyName CMK2 -KeyVaultAccessToken $keyVaultAccessToken -ManagedHSMAccessToken $managedHSMAccessToken
Nell'esempio viene avviato il processo di rotazione della chiave master della colonna denominata CMK1 e viene sostituito con la chiave master della colonna denominata CMK2.
Si presuppone che una delle chiavi sia archiviata in un insieme di credenziali delle chiavi e che l'altra venga archiviata in un modulo di protezione hardware gestito in Azure Key Vault.
Invoke-SqlColumnMasterKey
Userà i token di autenticazione ottenuti per comunicare con l'insieme di credenziali delle chiavi e gli endpoint del modulo di protezione hardware gestiti.
Parametri
-AccessToken
Token di accesso usato per eseguire l'autenticazione per SQL Server, in alternativa all'autenticazione utente/password o Windows.
Può essere usato, ad esempio, per connettersi a SQL Azure DB
e SQL Azure Managed Instance
usando un Service Principal
oggetto o .Managed Identity
Il parametro da usare può essere una stringa che rappresenta il token o un PSAccessToken
oggetto restituito eseguendo Get-AzAccessToken -ResourceUrl https://database.windows.net
.
Questo parametro è nuovo nella versione 22 del modulo.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encrypt
Tipo di crittografia da utilizzare per la connessione a SQL Server.
Questo valore esegue il Encrypt
mapping alla proprietà SqlConnectionEncryptOption
nell'oggetto SqlConnection del driver Microsoft.Data.SqlClient.
Nella versione 22 del modulo il valore predefinito è Optional
(per compatibilità con la versione 21). Nella versione 23+ del modulo il valore predefinito sarà "Obbligatorio", che può creare una modifica di rilievo per gli script esistenti.
Questo parametro è nuovo nella versione 22 del modulo.
Type: | String |
Accepted values: | Mandatory, Optional, Strict |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-HostNameInCertificate
Nome host da usare per la convalida del certificato TLS/SSL di SQL Server. È necessario passare questo parametro se l'istanza di SQL Server è abilitata per Forza crittografia e si vuole connettersi a un'istanza usando nome host/nome breve. Se questo parametro viene omesso, è necessario passare il nome di dominio completo (FQDN) a -ServerInstance per connettersi a un'istanza di SQL Server abilitata per Forza crittografia.
Questo parametro è nuovo nella versione 22 del modulo.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Specifica l'oggetto di database SQL per il quale questo cmdlet esegue l'operazione.
Type: | Database |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-KeyVaultAccessToken
Specifica un token di accesso per gli insiemi di credenziali delle chiavi in Azure Key Vault. Usare questo parametro se la chiave master della colonna di destinazione e/o corrente viene archiviata in un insieme di credenziali delle chiavi in Azure Key Vault.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ManagedHsmAccessToken
Specifica un token di accesso per i moduli di protezione hardware gestiti in Azure Key Vault. Usare questo parametro se la chiave master della colonna di destinazione e/o corrente viene archiviata in un modulo di protezione hardware gestito in Azure Key Vault.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Specifica il percorso del database SQL per il quale questo cmdlet esegue l'operazione.
Se non si specifica un valore per questo parametro, il cmdlet usa il percorso di lavoro corrente.
Type: | String |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Script
Indica che questo cmdlet esegue uno script Transact-SQL che esegue l'attività.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SourceColumnMasterKeyName
Specifica il nome della chiave master della colonna di origine.
Type: | String |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-TargetColumnMasterKeyName
Specifica il nome della chiave master della colonna di destinazione.
Type: | String |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-TrustServerCertificate
Indica se il canale verrà crittografato durante il bypass della catena di certificati per convalidare l'attendibilità.
Nella versione 22 del modulo il valore predefinito è $true
(per compatibilità con la versione 21). Nella versione 23+ del modulo il valore predefinito sarà "$false", che può creare una modifica di rilievo per gli script esistenti.
Questo parametro è nuovo nella versione 22 del modulo.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Input
Microsoft.SqlServer.Management.Smo.Database