Invoke-SqlColumnMasterKeyRotation
Initiiert die Rotation eines Spaltenhauptschlüssels.
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>]
Beschreibung
Das Cmdlet Invoke-SqlColumnMasterKeyRotation initiiert das Ersetzen einer vorhandenen Quellspalte master Schlüssels durch eine neue Zielspalte master Schlüssel für das feature Always Encrypted.
Das Cmdlet ruft alle Spaltenverschlüsselungsschlüsselobjekte ab, die verschlüsselte Schlüsselwerte enthalten, die mit der angegebenen Quellspalte master Schlüssel verschlüsselt sind.
Anschließend entschlüsselt das Cmdlet die aktuellen verschlüsselten Werte, verschlüsselt die resultierenden Klartextwerte mit der Zielspalte master Schlüssel neu und aktualisiert dann die betroffenen Spaltenverschlüsselungsschlüsselobjekte, um die neuen verschlüsselten Werte hinzuzufügen.
Daher enthält jeder betroffenen Spaltenverschlüsselungsschlüssel zwei verschlüsselte Werte: einen, der mit der aktuellen Quellspalte master schlüssel erstellt wurde, und ein anderer, der mit der Zielspalte master Schlüssel erstellt wurde.
Wenn eine Quell- oder Zielspalte master Schlüssel in Azure gespeichert ist, müssen Sie ein gültiges Authentifizierungstoken (oder Token) für einen Schlüsseltresor oder ein verwaltetes HSM angeben, das den Schlüssel enthält. Alternativ können Sie sich bei Azure mit Add-SqlAzureAuthenticationContext authentifizieren, bevor Sie dieses Cmdlet aufrufen.
Module requirements: version 21+ on PowerShell 5.1; version 22+ on PowerShell 7.x.
Beispiele
Beispiel 1: Initiieren sie den Prozess der Drehung der Spalte master Schlüssels.
Invoke-SqlColumnMasterKeyRotation -SourceColumnMasterKeyName "CMK1" -TargetColumnMasterKeyName "CMK2"
Dieser Befehl initiiert den Prozess, die Spalte master Schlüssel namens CMK1 zu rotieren und durch die Spalte master Schlüssel namens CMK2 zu ersetzen.
Beispiel 2: Initiieren des Prozesses zum Rotieren der Spalte master Schlüssels mit angegebenen Authentifizierungstoken
# 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
Im Beispiel wird der Prozess initiiert, bei dem die Spalte master Schlüssel mit dem Namen CMK1 gedreht und durch die Spalte master Schlüssel namens CMK2 ersetzt wird.
Wir gehen davon aus, dass einer der Schlüssel in einem Schlüsseltresor und der andere Schlüssel in einem verwalteten HSM in Azure Key Vault gespeichert ist.
Verwendet Invoke-SqlColumnMasterKey
die abgerufenen Authentifizierungstoken für die Kommunikation mit Schlüsseltresor und verwalteten HSM-Endpunkten.
Parameter
-AccessToken
Das Zugriffstoken, das zur Authentifizierung bei SQL Server verwendet wird, als Alternative zur Benutzer-/Kennwort- oder Windows-Authentifizierung.
Dies kann z. B. verwendet werden, um eine Verbindung mit SQL Azure DB
und SQL Azure Managed Instance
mithilfe von oder Service Principal
herzustellen Managed Identity
.
Der zu verwendende Parameter kann entweder eine Zeichenfolge sein, die das Token darstellt, oder ein PSAccessToken
Objekt, das durch Ausführen Get-AzAccessToken -ResourceUrl https://database.windows.net
von zurückgegeben wird.
Dieser Parameter ist in v22 des Moduls neu.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encrypt
Der Verschlüsselungstyp, der beim Herstellen einer Verbindung mit SQL Server verwendet werden soll.
Dieser Wert wird der Encrypt
-Eigenschaft SqlConnectionEncryptOption
des SqlConnection-Objekts des Microsoft.Data.SqlClient-Treibers zugeordnet.
In v22 des Moduls ist Optional
der Standardwert (aus Kompatibilität mit v21). In Version 23 und höher des Moduls lautet der Standardwert "Obligatorisch", was zu einer Breaking Change für vorhandene Skripts führen kann.
Dieser Parameter ist in v22 des Moduls neu.
Type: | String |
Accepted values: | Mandatory, Optional, Strict |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-HostNameInCertificate
Der Hostname, der beim Überprüfen des TLS/SSL-Zertifikats von SQL Server verwendet werden soll. Sie müssen diesen Parameter übergeben, wenn Ihr SQL Server instance für "Verschlüsselung erzwingen" aktiviert ist und Sie eine Verbindung mit einem instance mithilfe des Hostnamens/Kurznamens herstellen möchten. Wenn dieser Parameter ausgelassen wird, ist die Übergabe des vollqualifizierten Domänennamens (Fully Qualified Domain Name, FQDN) an -ServerInstance erforderlich, um eine Verbindung mit einem für die Verschlüsselung erzwingen aktivierten SQL Server instance herzustellen.
Dieser Parameter ist in v22 des Moduls neu.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Gibt das SQL-Datenbankobjekt an, für das dieses Cmdlet den Vorgang ausführt.
Type: | Database |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-KeyVaultAccessToken
Gibt ein Zugriffstoken für Schlüsseltresore in Azure Key Vault an. Verwenden Sie diesen Parameter, wenn die aktuelle und/oder die Zielspalte master Schlüssel in einem Schlüsseltresor in Azure Key Vault gespeichert ist.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ManagedHsmAccessToken
Gibt ein Zugriffstoken für verwaltete HSMs in Azure Key Vault an. Verwenden Sie diesen Parameter, wenn die aktuelle und/oder die Zielspalte master Schlüssel in einem verwalteten HSM in Azure Key Vault gespeichert ist.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Gibt den Pfad der SQL-Datenbank an, für die dieses Cmdlet den Vorgang ausführt.
Wenn Sie keinen Wert für diesen Parameter angeben, verwendet das Cmdlet den aktuellen Arbeitsspeicherort.
Type: | String |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Script
Gibt an, dass dieses Cmdlet ein Transact-SQL-Skript ausführt, das die Aufgabe ausführt.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SourceColumnMasterKeyName
Gibt den Namen der Quellspalte master Schlüssels an.
Type: | String |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-TargetColumnMasterKeyName
Gibt den Namen der Zielspalte master Schlüssels an.
Type: | String |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-TrustServerCertificate
Gibt an, ob der Kanal verschlüsselt wird, während das Durchlaufen der Zertifikatkette zum Überprüfen der Vertrauensstellung umgangen wird.
In v22 des Moduls ist $true
der Standardwert (aus Kompatibilität mit v21). In Version 23 und höher des Moduls lautet der Standardwert "$false", was zu einer Breaking Change für vorhandene Skripts führen kann.
Dieser Parameter ist in v22 des Moduls neu.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Eingaben
Microsoft.SqlServer.Management.Smo.Database