New-SqlColumnEncryptionKey
在資料庫中建立資料行加密金鑰物件。
Syntax
New-SqlColumnEncryptionKey
-ColumnMasterKeyName <String>
[-EncryptedValue <String>]
[-KeyVaultAccessToken <String>]
[-ManagedHsmAccessToken <String>]
[-Name] <String>
[-InputObject] <Database>
[-Script]
[-AccessToken <PSObject>]
[-TrustServerCertificate]
[-HostNameInCertificate <String>]
[-Encrypt <String>]
[<CommonParameters>]
New-SqlColumnEncryptionKey
-ColumnMasterKeyName <String>
[-EncryptedValue <String>]
[-KeyVaultAccessToken <String>]
[-ManagedHsmAccessToken <String>]
[-Name] <String>
[[-Path] <String>]
[-Script]
[-AccessToken <PSObject>]
[-TrustServerCertificate]
[-HostNameInCertificate <String>]
[-Encrypt <String>]
[<CommonParameters>]
Description
New-SqlColumnEncryptionKey Cmdlet 會在資料庫中建立資料行加密金鑰物件。 資料行加密金鑰物件會封裝對稱密碼編譯金鑰的加密值,之後可以使用 Always Encrypted 功能來加密資料庫資料行。
此 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:產生和加密資料行加密金鑰
New-SqlColumnEncryptionKey -Name 'CEK1' -ColumnMasterKeyName 'CMK1'
此命令會產生資料行加密金鑰的純文字值、使用指定的主要金鑰加密純文字值,然後建立資料行加密金鑰物件,並在資料庫中封裝產生的加密值。
範例 2:使用儲存在 Azure 金鑰保存庫中的資料行主要金鑰來產生及加密資料行加密金鑰金鑰保存庫。
在此範例中,Azure 金鑰保存庫中金鑰保存庫的權杖會傳遞至 Cmdlet。
# Connect to Azure account.
Import-Module Az.Accounts -MinimumVersion 2.2.0
Connect-AzAccount
# Obtain the access token.
$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.
New-SqlColumnEncryptionKey -Name 'CEK1' -ColumnMasterKeyName 'CMK1' -KeyVaultAccessToken $keyVaultAccessToken
範例 3:為數據行加密金鑰的現有加密值建立資料行加密金鑰物件。
New-SqlColumnEncryptionKey -Name 'CEK1' -ColumnMasterKeyName 'CMK1' -EncryptedValue '0x01700000016C006F00630061006C006D0061006300680069006E0065002F006D0079002F003200660061006600640038003100320031003400340034006500620031006100320065003000360039003300340038006100350064003400300032003300380065006600620063006300610031006300284FC4316518CF3328A6D9304F65DD2CE387B79D95D077B4156E9ED8683FC0E09FA848275C685373228762B02DF2522AFF6D661782607B4A2275F2F922A5324B392C9D498E4ECFC61B79F0553EE8FB2E5A8635C4DBC0224D5A7F1B136C182DCDE32A00451F1A7AC6B4492067FD0FAC7D3D6F4AB7FC0E86614455DBB2AB37013E0A5B8B5089B180CA36D8B06CDB15E95A7D06E25AACB645D42C85B0B7EA2962BD3080B9A7CDB805C6279FE7DD6941E7EA4C2139E0D4101D8D7891076E70D433A214E82D9030CF1F40C503103075DEEB3D64537D15D244F503C2750CF940B71967F51095BFA51A85D2F764C78704CAB6F015EA87753355367C5C9F66E465C0C66BADEDFDF76FB7E5C21A0D89A2FCCA8595471F8918B1387E055FA0B816E74201CD5C50129D29C015895CD073925B6EA87CAF4A4FAF018C06A3856F5DFB724F42807543F777D82B809232B465D983E6F19DFB572BEA7B61C50154605452A891190FB5A0C4E464862CF5EFAD5E7D91F7D65AA1A78F688E69A1EB098AB42E95C674E234173CD7E0925541AD5AE7CED9A3D12FDFE6EB8EA4F8AAD2629D4F5A18BA3DDCC9CF7F352A892D4BEBDC4A1303F9C683DACD51A237E34B045EBE579A381E26B40DCFBF49EFFA6F65D17F37C6DBA54AA99A65D5573D4EB5BA038E024910A4D36B79A1D4E3C70349DADFF08FD8B4DEE77FDB57F01CB276ED5E676F1EC973154F86'
參數
-AccessToken
用來驗證SQL Server的存取權杖,作為使用者/密碼或 Windows 驗證的替代方案。
例如,這可用來連線至 SQL Azure DB
或使用 SQL Azure Managed Instance
Service Principal
或 Managed Identity
。
要使用的參數可以是表示權杖的字串,或是 PSAccessToken
執行 Get-AzAccessToken -ResourceUrl https://database.windows.net
所傳回的物件。
這個參數是模組 v22 中的新功能。
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ColumnMasterKeyName
指定用來產生資料行加密金鑰指定加密值的資料行主要金鑰名稱,或用來產生新加密值的資料行主要金鑰名稱。
Type: | String |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encrypt
連線至SQL Server時要使用的加密類型。
這個值會對應至 Encrypt
Microsoft.Data.SqlClient 驅動程式之 SqlConnection 物件上的 屬性 SqlConnectionEncryptOption
。
在模組的 v22 中,預設為 Optional
(,以便與 v21) 相容。 在模組 v23+ 中,預設值會是「強制」,這可能會為現有的腳本建立重大變更。
這個參數是模組 v22 中的新功能。
Type: | String |
Accepted values: | Mandatory, Optional, Strict |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-EncryptedValue
指定十六進位字串,這是加密的資料行加密金鑰值。
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-HostNameInCertificate
用來驗證SQL Server TLS/SSL 憑證的主機名稱。
這個參數是模組 v22 中的新功能。
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
指定這個 Cmdlet 執行作業的 SQL 資料庫物件。
Type: | Database |
Position: | 2 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-KeyVaultAccessToken
指定 Azure 金鑰保存庫中金鑰保存庫的存取權杖。 如果您想要用來加密新資料行加密金鑰的資料行主要金鑰儲存在 Azure 金鑰保存庫 的金鑰保存庫中,請使用此參數。
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ManagedHsmAccessToken
指定 Azure 金鑰保存庫中受控 HSM 的存取權杖。 如果您想要用來加密新資料行加密金鑰的資料行主要金鑰儲存在 Azure 金鑰保存庫的受控 HSM 中,請使用此參數。
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Name
指定要建立的資料行加密金鑰物件名稱。
Type: | String |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
指定此 Cmdlet 執行作業的 SQL 資料庫路徑。 如果您未指定此參數的值,Cmdlet 會使用目前的工作位置。
Type: | String |
Position: | 2 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Script
表示此 Cmdlet 會執行執行作業的 Transact-SQL 腳本。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-TrustServerCertificate
指出通道是否會在略過憑證鏈結以驗證信任時加密。
在模組的 v22 中,預設為 $true
(,以便與 v21) 相容。 在模組 v23+ 中,預設值會是 '$false',這可能會為現有的腳本建立重大變更。
這個參數是模組 v22 中的新功能。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
輸入
Microsoft.SqlServer.Management.Smo.Database
輸出
SqlColumnEncryptionKey