New-SqlColumnEncryptionKeyEncryptedValue
建立資料行加密金鑰的加密值。
語法
New-SqlColumnEncryptionKeyEncryptedValue
[-TargetColumnMasterKeySettings] <SqlColumnMasterKeySettings>
[[-ColumnMasterKeySettings] <SqlColumnMasterKeySettings>]
[[-EncryptedValue] <String>]
[-KeyVaultAccessToken <String>]
[-ManagedHsmAccessToken <String>]
[-ProgressAction <ActionPreference>]
[<CommonParameters>]
Description
New-SqlColumnEncryptionKeyEncryptedValue Cmdlet 會建立數據行加密密鑰的加密值。 傳回的加密值是十六進位字串。
Cmdlet 支援兩種作業模式:
如果未指定任何加密值,Cmdlet 會產生新的純文字對稱密鑰,並使用指定的數據行主要密鑰來加密金鑰。
如果指定加密值,Cmdlet 會先解密指定的加密值,然後使用指定的數據行主要密鑰重新加密取得的純文字金鑰。 Cmdlet 會與保存數據行主要金鑰的金鑰存放區通訊。 如果金鑰儲存在 Azure 中,您必須為儲存金鑰保存庫或儲存金鑰的受控 HSM 指定有效的驗證令牌。 或者,您可以在呼叫此 Cmdlet 之前,先使用 Add-SqlAzureAuthenticationContext 向 Azure 進行驗證。
Module requirements: version 21+ on PowerShell 5.1; version 22+ on PowerShell 7.x.
範例
範例 1:產生金鑰並使用憑證加密
$cmkSettings = New-SqlCertificateStoreColumnMasterKeySettings -CertificateStoreLocation 'CurrentUser' -certificateThumbprint 'f2260f28d909d21c642a3d8e0b45a830e79a1420'
New-SqlColumnEncryptionKeyEncryptedValue -TargetColumnMasterKeySettings $cmkSettings
範例 2:產生數據行加密金鑰值,並使用儲存在 Azure Key Vault 中密鑰保存庫中之金鑰的數據行主要密鑰進行加密。
# 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
範例 3:解密現有的加密金鑰值,這是使用憑證的數據行主要密鑰所產生。 使用 Azure Key Vault 中金鑰的數據行主要密鑰重新加密金鑰值。
# 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'
參數
-ColumnMasterKeySettings
指定此 Cmdlet 用來尋找資料行主要金鑰儲存位置的 SqlColumnMasterKeySettings 物件。
類型: | SqlColumnMasterKeySettings |
Position: | 1 |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-EncryptedValue
指定現有的加密值。
如果您指定此參數的值,Cmdlet 會先使用 ColumnMasterKeySettings 參數所參考的數據行主要密鑰解密此值,然後使用 TargetColumnMasterKeySettings 參數所參考的數據行主要密鑰重新加密此值。
類型: | String |
Position: | 2 |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-KeyVaultAccessToken
指定 Azure Key Vault 中金鑰保存庫的存取令牌。 如果用於加密或解密對稱數據行加密密鑰的數據行主要金鑰儲存在 Azure Key Vault 中的金鑰保存庫中,請使用此參數。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-ManagedHsmAccessToken
指定 Azure Key Vault 中受控 HSM 的存取令牌。 如果用於加密或解密對稱數據行加密密鑰的數據行主要金鑰儲存在 Azure Key Vault 中的受控 HSM 中,請使用此參數。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-ProgressAction
決定 PowerShell 如何回應腳本、Cmdlet 或提供者所產生的進度更新,例如 Write-Progress Cmdlet 所產生的進度列。 Write-Progress Cmdlet 會建立顯示命令狀態的進度列。
類型: | ActionPreference |
別名: | proga |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-TargetColumnMasterKeySettings
指定此 Cmdlet 用來判斷用來加密新加密值之數據行主要密鑰的位置的 SqlColumnMasterKeySettings 物件。
類型: | SqlColumnMasterKeySettings |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
輸出
String