New-SqlColumnMasterKeySettings
创建一个 SqlColumnMasterKeySettings 对象,该对象描述存储在任意指定的密钥存储提供程序和路径中的主密钥。
语法
Default (默认值)
New-SqlColumnMasterKeySettings
[-KeyStoreProviderName] <String>
[-KeyPath] <String>
[[-Signature] <String>]
[-KeyVaultAccessToken <String>]
[-ManagedHsmAccessToken <String>]
[-AllowEnclaveComputations]
[<CommonParameters>]
说明
New-SqlColumnMasterKeySettings cmdlet 创建一个 SqlColumnMasterKeySettings 内存中对象,该对象存储 Always Encrypted 列主密钥的属性:KeyStoreProviderName、KeyPath、AllowEnclaveComputations 和 Signature。 此 cmdlet 可用于自定义密钥存储提供程序,当密钥存储提供程序名称和完全格式化的密钥路径都已知时。
该 cmdlet 可以与保存列主密钥的密钥存储进行通信,以生成密钥元数据属性的签名。
如果密钥存储在 Azure 中,则需要为密钥保管库或保存密钥的托管 HSM 指定有效的身份验证令牌。
或者,在调用此 cmdlet 之前,可以使用 Add-SqlAzureAuthenticationContext 向 Azure 进行身份验证。
Module requirements: version 21+ on PowerShell 5.1; version 22+ on PowerShell 7.x.
示例
示例 1:为 Azure Key Vault 中且未启用 enclaved 的列主密钥生成设置。
$cmkSettings = New-SqlColumnMasterKeySettings -KeyStoreProviderName 'AZURE_KEY_VAULT' -KeyPath 'https://myvault.vault.azure.net/keys/CMK/4c05f1a41b12488f9cba2ea964b6a700'
示例 2:为自定义提供程序中的列主密钥生成设置
$cmkSettings = New-SqlColumnMasterKeySettings -KeyStoreProviderName 'CUSTOM_PROVIDER' -KeyPath '\\SecureNetworkShare\Keys\AlwaysEncrypted.key'
示例 3:为 Azure Key Vault 中的列主密钥生成设置,允许 enclave 计算并使用提供的签名进行签名。
$cmkSettings = New-SqlColumnMasterKeySettings -KeyStoreProviderName 'AZURE_KEY_VAULT' -KeyPath 'https://myvault.vault.azure.net/keys/CMK/4c05f1a41b12488f9cba2ea964b6a700' -AllowEnclaveComputations -Signature '0x19BEB4F27F582FDBBD0C7E5F92CF161D79D5E7F5A5183F9C8E710252E7028A3654FBEAF834EE45925024F1A32BD3C6D7D92B46E38690830E20E0777607B073E6665EB05E39263C02557D1208ACECB2251A108D0DEFC25232B67FD223C590258C817292FAFCE2388507812D64A0AEC9E546B0B8E4B2F3EA436053CB158F3CF478C5F5EDA511D0F752F60C3B129BF21356A93368FCC7FD6FAA8DB4E919EB551F375181CA3F4D0404A811C99BD2C8D10C0003AC12B138371F2D76611768B4E84D44116C42F00D679B36D41FBD9467B58291B1F4348C7B422793DA0614EF980CA0A7F42B6D627AFA5A753F0869D2C2F9B0FD38289D5433CE9266C6F867334654BE12'
示例 4:为 Azure Key Vault 中的列主密钥生成设置,允许 enclave 计算并自动签名。
# 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
# Pass the token to the cmdlet. It will use the token to communicate with a key vault in Azure Key Vault to sign the column master key properties.
$cmkSettings = New-SqlColumnMasterKeySettings -KeyStoreProviderName 'AZURE_KEY_VAULT' -KeyPath 'https://myvault.vault.azure.net/keys/CMK/4c05f1a41b12488f9cba2ea964b6a700' -AllowEnclaveComputations -KeyVaultAccessToken $keyVaultAccessToken
参数
-AllowEnclaveComputations
指定列主密钥是否允许 enclave 计算。 如果指定了参数,则允许服务器端安全 enclave 对使用列主密钥保护的数据执行计算。 对 SQL Server 2017 和更早版本无效。
参数属性
类型: SwitchParameter
默认值: False
支持通配符: False
不显示: False
参数集
(All)
Position: 2
必需: False
来自管道的值: False
来自管道的值(按属性名称): False
来自剩余参数的值: False
-KeyPath
指定物理主密钥的密钥存储中的路径。
参数属性
类型: String
默认值: None
支持通配符: False
不显示: False
参数集
(All)
Position: 1
必需: True
来自管道的值: False
来自管道的值(按属性名称): False
来自剩余参数的值: False
-KeyStoreProviderName
指定用于保护物理主密钥的密钥存储的提供程序名称。
参数属性
类型: String
默认值: None
支持通配符: False
不显示: False
参数集
(All)
Position: 0
必需: True
来自管道的值: False
来自管道的值(按属性名称): False
来自剩余参数的值: False
-KeyVaultAccessToken
指定 Azure Key Vault 中密钥保管库的访问令牌。 如果指定的列主密钥存储在 Azure Key Vault 中的密钥保管库中,并且该 cmdlet 应对密钥元数据进行签名,请使用此参数。
参数属性
类型: String
默认值: None
支持通配符: False
不显示: False
参数集
(All)
Position: Named
必需: False
来自管道的值: False
来自管道的值(按属性名称): False
来自剩余参数的值: False
-ManagedHsmAccessToken
指定 Azure Key Vault 中托管 HSM 的访问令牌。 如果指定的列主密钥存储在 Azure Key Vault 的托管 HSM 中,并且该 cmdlet 应对密钥元数据进行签名,请使用此参数。
参数属性
类型: String
默认值: None
支持通配符: False
不显示: False
参数集
(All)
Position: Named
必需: False
来自管道的值: False
来自管道的值(按属性名称): False
来自剩余参数的值: False
-Signature
指定十六进制字符串,该字符串是列主密钥属性的数字签名。 客户端驱动程序可以验证签名,以确保列主密钥属性未被篡改。 仅当指定 AllowEnclaveComputations 时,才允许此参数。 如果指定 AllowEnclaveComputations ,但 未指定 Signature ,则 cmdlet 会自动计算签名并填充新 SqlColumnMasterKeySettings 对象的 Signature 属性。
参数属性
类型: String
默认值: None
支持通配符: False
不显示: False
参数集
(All)
Position: 3
必需: False
来自管道的值: False
来自管道的值(按属性名称): False
来自剩余参数的值: False
CommonParameters
此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters 。