New-SqlColumnEncryptionKeyEncryptedValue
Erstellt den verschlüsselten Wert eines Spaltenverschlüsselungsschlüssels.
Syntax
New-SqlColumnEncryptionKeyEncryptedValue
[-TargetColumnMasterKeySettings] <SqlColumnMasterKeySettings>
[[-ColumnMasterKeySettings] <SqlColumnMasterKeySettings>]
[[-EncryptedValue] <String>]
[-KeyVaultAccessToken <String>]
[-ManagedHsmAccessToken <String>]
[<CommonParameters>]
Beschreibung
Das Cmdlet New-SqlColumnEncryptionKeyEncryptedValue erstellt den verschlüsselten Wert eines Spaltenverschlüsselungsschlüssels. Der zurückgegebene verschlüsselte Wert ist eine hexadezimale Zeichenfolge.
Das Cmdlet unterstützt zwei Betriebsmodi:
Wenn kein verschlüsselter Wert angegeben wird, generiert das Cmdlet einen neuen symmetrischen Klartextschlüssel und verschlüsselt den Schlüssel mit der angegebenen Spalte master Schlüssel.
Wenn ein verschlüsselter Wert angegeben wird, entschlüsselt das Cmdlet zunächst den angegebenen verschlüsselten Wert und verschlüsselt dann den abgerufenen Klartextschlüssel mit der angegebenen Spalte master Schlüssel erneut. Das Cmdlet kommuniziert mit einem Schlüsselspeicher, der die Spalte master Schlüssels enthält. Wenn der Schlüssel in Azure gespeichert ist, müssen Sie ein gültiges Authentifizierungstoken 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: Generieren eines Schlüssels und Verschlüsseln mithilfe eines Zertifikats
$cmkSettings = New-SqlCertificateStoreColumnMasterKeySettings -CertificateStoreLocation 'CurrentUser' -certificateThumbprint 'f2260f28d909d21c642a3d8e0b45a830e79a1420'
New-SqlColumnEncryptionKeyEncryptedValue -TargetColumnMasterKeySettings $cmkSettings
Beispiel 2: Generieren sie einen Spaltenverschlüsselungsschlüsselwert, und verschlüsseln Sie ihn mithilfe einer Spalte master Schlüssels, der in einem Schlüsseltresor in Azure Key Vault gespeichert ist.
# Obtain an access token for key vaults.
$keyVaultAccessToken = (Get-AzAccessToken -ResourceUrl https://vault.azure.net).Token
# Pass the token to the cmdlet. It will use the token to communicate with the key vault containing the column master key to sign the column master key metadata properties.
$cmkSettings = New-SqlAzureKeyVaultColumnMasterKeySettings -KeyUrl 'https://myvault.vault.azure.net/keys/CMK/4c05f1a41b12488f9cba2ea964b6a700' -AllowEnclaveComputations -KeyVaultAccessToken $keyVaultAccessToken
# Generate a column encryption key value and encrypt it with the column master key. Pass the access token, so that the cmdlet can communicate with Azure Key Vault.
New-SqlColumnEncryptionKeyEncryptedValue -TargetColumnMasterKeySettings $cmkSettings -KeyVaultAccessToken $keyVaultAccessToken
Beispiel 3: Entschlüsseln eines vorhandenen verschlüsselten Schlüsselwerts, der mithilfe einer Spalte master Schlüssels erstellt wurde, bei dem es sich um ein Zertifikat handelt. Verschlüsseln Sie den Schlüsselwert erneut mithilfe einer Spalte master Schlüssels, bei dem es sich um einen Schlüssel in Azure Key Vault handelt.
# Connect to Azure account.
Import-Module Az.Accounts -MinimumVersion 2.2.0
Connect-AzAccount
# Obtain an access token for key vaults.
$keyVaultAccessToken = (Get-AzAccessToken -ResourceUrl https://vault.azure.net).Token
# Create a SqlColumnMasterKeySettings object referencing a certificate.
$currentCmkSettings = New-SqlCertificateStoreColumnMasterKeySettings -CertificateStoreLocation 'CurrentUser' -certificateThumbprint 'f2260f28d909d21c642a3d8e0b45a830e79a1420'
# Create a SqlColumnMasterKeySettings object, referencing a column master key in a key vault in Azure Key Vault.
$targetCmkSettings = New-SqlAzureKeyVaultColumnMasterKeySettings -KeyUrl 'https://myvault.vault.azure.net/keys/CMK/4c05f1a41b12488f9cba2ea964b6a700'
# Decrypt a column encryption key value using the current column master key and re-encrypt it with the new column master key. Pass the access token, so that the cmdlet can communicate with Azure Key Vault.
New-SqlColumnEncryptionKeyEncryptedValue -TargetColumnMasterKeySettings $targetCmkSettings -ColumnMasterKeySettings $currentCmkSettings -KeyVaultAccessToken $keyVaultAccessToken -EncryptedValue '0x016E000001630075007200720065006E00740075007300650072002F006D0079002F006200330039003900340035006200370031003100330037003700350032006400380061003100310033003900660035006200640036006400380066003700330038006600320033006200360032003000307925663D2C3E275DD272E15E606927DA4326F5735C2C8E84F91B9EFE44F503ED01C130984E83AF4513F8A4A8D0878D42364E958291AE25111A868D25B69FC5143EEC04131DA27D05F3442CB665ACB4BB3F6A7A9F07DBD5D212A772414A2CCA03BEBEB7BF0E22C644C715D739B983872AFB2D390229A0B5311BCA07E3C1D857EE8982320BBBE9382C960B9674E3CC3D618AD623D6A362BEAEF68B1B1BB49660DD643A4375A9285CD9EAA5B13BFE2792DA92025351E7B6067BA07B6178D03041F40F00D84326627094C9D6944DD912497B080058A529D2DA11C8D609604449714420B4E44ECD1EB26DEE18BF712146A51DD99A02E3D4EE692A503CF02F874497010772DE743DDFB2A74801AC9A94C876D1F93554B70CE0ECC437E7FC28BC11A08222977CDA807E256ED536C41700C631878226E513AFE1199A1DB4732F975AA09A1E75B8A19802AE018871A7A0AD5B1E29B942F30490EDABD310A4170B991EBCFDA2AFE43285D5406476204B381D8A33EEB0B967073B4C0127B1C7F0281AB310EE4B9A3C2D3EAB44A1F5D15D4739FFAEF6110ED4808446F6A05DBF4121B2B33A0AF5A457CD38F895B8F7ABDF792E3ADBC3AF55B1442625F88F80127D08DE9E4AC1BB2AAA46843A477135053CEEFA4327D8C999C16D8B49C225F34AD7588A5F9E93FB5532B1F1DC5AFB3CE23DDC8DC12327DD6B5985104D14F4A1BC0F61F0AACD'
Parameter
-ColumnMasterKeySettings
Gibt das SqlColumnMasterKeySettings-Objekt an, das dieses Cmdlet verwendet, um zu ermitteln, wo die Spalte master Schlüssel gespeichert ist.
Type: | SqlColumnMasterKeySettings |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-EncryptedValue
Gibt den vorhandenen verschlüsselten Wert an.
Wenn Sie einen Wert für diesen Parameter angeben, entschlüsselt das Cmdlet diesen Wert zunächst mithilfe der Spalte master Schlüssels, auf den der ColumnMasterKeySettings-Parameter verweist, und verschlüsselt ihn dann erneut mithilfe der Spalte master Schlüssels, auf den der Parameter TargetColumnMasterKeySettings verweist.
Type: | String |
Position: | 2 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-KeyVaultAccessToken
Gibt ein Zugriffstoken für Schlüsseltresore in Azure Key Vault an. Verwenden Sie diesen Parameter, wenn die Spalte master Schlüssel zum Verschlüsseln oder Entschlüsseln eines symmetrischen Spaltenverschlüsselungsschlüssels in einem Schlüsseltresor in Azure Key Vault gespeichert wird.
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 Spalte master Schlüssel zum Verschlüsseln oder Entschlüsseln eines symmetrischen Spaltenverschlüsselungsschlüssels in einem verwalteten HSM in Azure Key Vault gespeichert wird.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-TargetColumnMasterKeySettings
Gibt das SqlColumnMasterKeySettings-Objekt an, das dieses Cmdlet verwendet, um zu bestimmen, wo die Spalte master Schlüssels gespeichert wird, der zum Verschlüsseln des neuen verschlüsselten Werts verwendet werden soll.
Type: | SqlColumnMasterKeySettings |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Ausgaben
String