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