Invoke-SqlColumnMasterKeyRotation
Lance la permutation d’une clé principale de colonne.
Syntax
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>]
Description
L’applet de commande Invoke-SqlColumnMasterKeyRotation initie le remplacement d’une colonne source existante master clé par une nouvelle colonne cible master clé pour la fonctionnalité de Always Encrypted.
L’applet de commande récupère tous les objets de clé de chiffrement de colonne qui contiennent des valeurs de clé chiffrées chiffrées avec la colonne source spécifiée master clé.
Ensuite, l’applet de commande déchiffre les valeurs chiffrées actuelles, rechiffre les valeurs en texte clair résultantes avec la colonne cible master clé, puis met à jour les objets de clé de chiffrement de colonne concernés pour ajouter les nouvelles valeurs chiffrées.
Par conséquent, chaque clé de chiffrement de colonne impactée contient deux valeurs chiffrées : l’une produite à l’aide de la colonne source actuelle master clé et l’autre, produite à l’aide de la colonne cible master clé.
Si une colonne source ou cible master clé est stockée dans Azure, vous devez spécifier un jeton d’authentification valide (ou des jetons) pour un coffre de clés ou un HSM géré qui contient la clé. Vous pouvez également vous authentifier auprès d’Azure avec Add-SqlAzureAuthenticationContext avant d’appeler cette applet de commande.
Module requirements: version 21+ on PowerShell 5.1; version 22+ on PowerShell 7.x.
Exemples
Exemple 1 : Lancer le processus de rotation de la colonne master clé.
Invoke-SqlColumnMasterKeyRotation -SourceColumnMasterKeyName "CMK1" -TargetColumnMasterKeyName "CMK2"
Cette commande lance le processus de rotation de la colonne master clé nommée CMK1 et de remplacement par la colonne master clé nommée CMK2.
Exemple 2 : Lancer le processus de rotation de la colonne master clé avec des jetons d’authentification spécifiés
# 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
L’exemple lance le processus de rotation de la colonne master clé nommée CMK1 et de remplacement par la colonne master clé nommée CMK2.
Nous supposons que l’une des clés est stockée dans un coffre de clés et que l’autre clé est stockée dans un HSM managé dans Azure Key Vault.
utilise Invoke-SqlColumnMasterKey
les jetons d’authentification obtenus pour communiquer avec le coffre de clés et les points de terminaison HSM managés.
Paramètres
-AccessToken
Le jeton d’accès utilisé pour s’authentifier auprès de SQL Server, en guise d’alternative à l’authentification utilisateur/mot de passe ou à l’authentification Windows.
Cela peut être utilisé, par exemple, pour se connecter à et à SQL Azure DB
l’aide d’un Service Principal
ou d’un Managed Identity
.SQL Azure Managed Instance
Le paramètre à utiliser peut être une chaîne représentant le jeton ou un PSAccessToken
objet retourné en exécutant Get-AzAccessToken -ResourceUrl https://database.windows.net
.
Ce paramètre est nouveau dans v22 du module.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encrypt
Type de chiffrement à utiliser lors de la connexion à SQL Server.
Cette valeur est mappée à la Encrypt
propriété SqlConnectionEncryptOption
sur l’objet SqlConnection du pilote Microsoft.Data.SqlClient.
Dans la version 22 du module, la valeur par défaut est Optional
(pour la compatibilité avec v21). Dans v23+ du module, la valeur par défaut est « Obligatoire », ce qui peut créer une modification cassant pour les scripts existants.
Ce paramètre est nouveau dans v22 du module.
Type: | String |
Accepted values: | Mandatory, Optional, Strict |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-HostNameInCertificate
Nom d’hôte à utiliser pour valider le certificat SQL Server TLS/SSL. Vous devez passer ce paramètre si votre SQL Server instance est activé pour Forcer le chiffrement et que vous souhaitez vous connecter à un instance à l’aide d’un nom d’hôte/nom court. Si ce paramètre est omis, le passage du nom de domaine complet (FQDN) à -ServerInstance est nécessaire pour se connecter à un SQL Server instance activé pour forcer le chiffrement.
Ce paramètre est nouveau dans v22 du module.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Spécifie l’objet de base de données SQL pour lequel cette applet de commande exécute l’opération.
Type: | Database |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-KeyVaultAccessToken
Spécifie un jeton d’accès pour les coffres de clés dans Azure Key Vault. Utilisez ce paramètre si la colonne actuelle et/ou la colonne cible master clé est stockée dans un coffre de clés dans Azure Key Vault.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ManagedHsmAccessToken
Spécifie un jeton d’accès pour les HSM managés dans Azure Key Vault. Utilisez ce paramètre si la colonne actuelle et/ou la colonne cible master clé est stockée dans un HSM managé dans Azure Key Vault.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Spécifie le chemin de la base de données SQL pour laquelle cette applet de commande exécute l’opération.
Si vous ne spécifiez pas de valeur pour ce paramètre, l’applet de commande utilise l’emplacement de travail actuel.
Type: | String |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Script
Indique que cette applet de commande exécute un script Transact-SQL qui effectue la tâche.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SourceColumnMasterKeyName
Spécifie le nom de la colonne source master clé.
Type: | String |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-TargetColumnMasterKeyName
Spécifie le nom de la colonne cible master clé.
Type: | String |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-TrustServerCertificate
Indique si le canal sera chiffré tout en contournant la chaîne de certificats pour valider l’approbation.
Dans la version 22 du module, la valeur par défaut est $true
(pour la compatibilité avec v21). Dans v23+ du module, la valeur par défaut est « $false », ce qui peut créer une modification cassant pour les scripts existants.
Ce paramètre est nouveau dans v22 du module.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entrées
Microsoft.SqlServer.Management.Smo.Database