Freigeben über


New-SqlColumnEncryptionKeyEncryptedValue

Erstellt den verschlüsselten Wert eines Spaltenverschlüsselungsschlüssels.

Syntax

New-SqlColumnEncryptionKeyEncryptedValue
   [-TargetColumnMasterKeySettings] <SqlColumnMasterKeySettings>
   [[-ColumnMasterKeySettings] <SqlColumnMasterKeySettings>]
   [[-EncryptedValue] <String>]
   [-KeyVaultAccessToken <String>]
   [-ManagedHsmAccessToken <String>]
   [-ProgressAction <ActionPreference>]
   [<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 dem angegebenen Spaltenmasterschlüssel.

  • Wenn ein verschlüsselter Wert angegeben wird, entschlüsselt das Cmdlet zuerst den angegebenen verschlüsselten Wert und verschlüsselt dann den abgerufenen Nur-Text-Schlüssel mit dem angegebenen Spaltenmasterschlüssel erneut. Das Cmdlet kommuniziert mit einem Schlüsselspeicher, der den Spaltenmasterschlüssel 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 eines Schlüssels 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 eines Spaltenmasterschlü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 mit einem Spaltenmasterschlüssel erstellt wurde, der ein Zertifikat ist. Verschlüsseln Sie den Schlüsselwert erneut mithilfe eines Spaltenmasterschlüssels, der ein Schlüssel im Azure Key Vault ist.

# 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 der Spaltenmasterschlüssel gespeichert ist.

Typ:SqlColumnMasterKeySettings
Position:1
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren: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 des Spaltenmasterschlüssels, auf den der ColumnMasterKeySettings-Parameter verweist, und verschlüsselt ihn dann mithilfe des Spaltenmasterschlüssels, auf den der Parameter TargetColumnMasterKeySettings verweist.

Typ:String
Position:2
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-KeyVaultAccessToken

Gibt ein Zugriffstoken für Schlüsseltresor in Azure Key Vault an. Verwenden Sie diesen Parameter, wenn der Spaltenmasterschlüssel zum Verschlüsseln oder Entschlüsseln eines symmetrischen Spaltenverschlüsselungsschlüssels in einem Schlüsseltresor im Azure Key Vault gespeichert ist.

Typ:String
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-ManagedHsmAccessToken

Gibt ein Zugriffstoken für verwaltete HSMs im Azure Key Vault an. Verwenden Sie diesen Parameter, wenn der Spaltenmasterschlüssel zum Verschlüsseln oder Entschlüsseln eines symmetrischen Spaltenverschlüsselungsschlüssels in einem verwalteten HSM im Azure Key Vault gespeichert wird.

Typ:String
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-ProgressAction

Bestimmt, wie PowerShell auf Statusaktualisierungen reagiert, die von einem Skript, Cmdlet oder Anbieter generiert werden, z. B. auf die Statusanzeigen, die vom Cmdlet Write-Progress generiert werden. Das Cmdlet Write-Progress erstellt Statusanzeigen, die den Status eines Befehls anzeigen.

Typ:ActionPreference
Aliase:proga
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-TargetColumnMasterKeySettings

Gibt das SqlColumnMasterKeySettings -Objekt an, das dieses Cmdlet verwendet, um zu bestimmen, wo der Spaltenmasterschlüssel zum Verschlüsseln des neuen verschlüsselten Werts verwendet werden soll.

Typ:SqlColumnMasterKeySettings
Position:0
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

Ausgaben

String