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