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