New-SqlColumnMasterKey

在資料庫中建立資料行主要金鑰物件。

Syntax

New-SqlColumnMasterKey
   -ColumnMasterKeySettings <SqlColumnMasterKeySettings>
   [-Name] <String>
   [-InputObject] <Database>
   [-Script]
   [-AccessToken <PSObject>]
   [-TrustServerCertificate]
   [-HostNameInCertificate <String>]
   [-Encrypt <String>]
   [<CommonParameters>]
New-SqlColumnMasterKey
   -ColumnMasterKeySettings <SqlColumnMasterKeySettings>
   [-Name] <String>
   [[-Path] <String>]
   [-Script]
   [-AccessToken <PSObject>]
   [-TrustServerCertificate]
   [-HostNameInCertificate <String>]
   [-Encrypt <String>]
   [<CommonParameters>]

Description

New-SqlColumnMasterKey Cmdlet 會在資料庫中建立數據行主要密鑰物件。 數據行主要密鑰物件會擷取實體密碼編譯密鑰的位置,此金鑰是用來作為 Always Encrypted 功能的數據行主要金鑰。

範例

範例 1:建立參考憑證的數據行主要密鑰物件

$CmkSettings = New-SqlCertificateStoreColumnMasterKeySettings -CertificateStoreLocation 'CurrentUser' -CertificateThumbprint 'f2260f28d909d21c642a3d8e0b45a830e79a1420'
New-SqlColumnMasterKey -Name 'CMK1' -ColumnMasterKeySettings $CmkSettings

第一個命令會使用 New-SqlCertificateStoreColumnMasterKeySettings Cmdlet 來建立參考 Windows 證書存儲中憑證的數據行主要設定,並將結果儲存在名為 $CmkSettings的變數中。

範例 2:建立參考 Azure 金鑰保存庫 中金鑰的數據行主要密鑰物件

$CmkSettings = New-SqlAzureKeyVaultColumnMasterKeySettings -KeyUrl 'https://myvault.vault.contoso.net/keys/CMK/4c05f1a41b12488f9cba2ea964b6a700'
New-SqlColumnMasterKey 'CMK1' -ColumnMasterKeySettings $CmkSettings

第一個命令會使用 New-SqlCertificateStoreColumnMasterKeySettings Cmdlet,在 Azure 金鑰保存庫 中建立參考密鑰的數據行主要密鑰物件,並將結果儲存在名為$CmkSettings的變數中。

範例 3:建立參考支援 CNG 之金鑰的數據行主要密鑰物件

$CmkSettings = New-SqlCngColumnMasterKeySettings -CngProviderName 'Microsoft Software Key Storage Provider' -KeyName 'AlwaysEncryptedKey'
New-SqlColumnMasterKey 'CMK1' -ColumnMasterKeySettings $CmkSettings

第一個命令會使用 New-SqlCertificateStoreColumnMasterKeySettings Cmdlet 來建立參考密鑰存放區中密鑰的數據行主要密鑰物件,以支援密碼編譯新一代 (CNG) API,並將結果儲存在名為 $CmkSettings的變數中。

範例 4:建立參考支援 CSP 之金鑰的數據行主要金鑰物件

$CmkSettings = New-SqlCspColumnMasterKeySettings 'MyCspProvider' 'AlwaysEncryptedKey'
New-SqlColumnMasterKey 'CMK1' -ColumnMasterKeySettings $CmkSettings

第一個命令會使用 New-SqlCertificateStoreColumnMasterKeySettings Cmdlet,建立參考密鑰存放區密鑰存放區密鑰存放區中密鑰的數據行主要密鑰物件, (CSP) 支援加密 API (CAPI) 。

範例 5:建立參考憑證的數據行主要密鑰物件,它會自動簽署並支援記憶體保護區計算

$CmkSettings = New-SqlCertificateStoreColumnMasterKeySettings -CertificateStoreLocation 'CurrentUser' -CertificateThumbprint 'f2260f28d909d21c642a3d8e0b45a830e79a1420' -AllowEnclaveComputations
New-SqlColumnMasterKey -Name 'CMK1' -ColumnMasterKeySettings $CmkSettings

第一個命令會使用 New-SqlCertificateStoreColumnMasterKeySettings Cmdlet 來建立參考支援記憶體保護區計算且儲存在 Windows 證書存儲中的憑證的數據行主要設定。

參數

-AccessToken

用來驗證 SQL Server 的存取令牌,作為使用者/密碼或 Windows 驗證的替代方案。

例如,這可用來連線至 SQL Azure DB 或使用 或使用 SQL Azure Managed InstanceService PrincipalManaged 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

-ColumnMasterKeySettings

指定指定實際數據行主要密鑰位置的 SqlColumnMasterKeySettings 物件。

SqlColumnMasterKeySettings 物件有兩個屬性:KeyStoreProviderNameKeyPath

KeyStoreProviderName 指定資料行主要密鑰存放區提供者的名稱,啟用 Always Encrypted 的用戶端驅動程式必須用來存取包含數據行主要密鑰的金鑰存放區。

KeyPath 會指定金鑰存放區中數據行主要金鑰的位置。 KeyPath 格式專屬於密鑰存放區。

Type:SqlColumnMasterKeySettings
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

-HostNameInCertificate

用於驗證 SQL Server TLS/SSL 憑證的主機名稱。 如果您的 SQL Server 實例已啟用強制加密,而且您想要使用主機名/shortname 連線到實例,則必須傳遞此參數。 如果省略此參數,則必須將完整域名 (FQDN) 傳遞至 -ServerInstance,才能連線到啟用強制加密的 SQL Server 實例。

這個參數是模組 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

-Name

指定這個 Cmdlet 所建立的數據行主要金鑰物件名稱。

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 腳本,以執行此 Cmdlet 執行的工作。

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

輸出

Microsoft.SqlServer.Management.Smo.SqlColumnMasterKey