共用方式為


Invoke-SqlColumnMasterKeyRotation

起始數據行主要金鑰的輪替。

語法

Invoke-SqlColumnMasterKeyRotation
      -SourceColumnMasterKeyName <String>
      -TargetColumnMasterKeyName <String>
      [-KeyVaultAccessToken <String>]
      [-ManagedHsmAccessToken <String>]
      [-InputObject] <Database>
      [-Script]
      [-AccessToken <PSObject>]
      [-TrustServerCertificate]
      [-HostNameInCertificate <String>]
      [-Encrypt <String>]
      [-ProgressAction <ActionPreference>]
      [<CommonParameters>]
Invoke-SqlColumnMasterKeyRotation
      -SourceColumnMasterKeyName <String>
      -TargetColumnMasterKeyName <String>
      [-KeyVaultAccessToken <String>]
      [-ManagedHsmAccessToken <String>]
      [[-Path] <String>]
      [-Script]
      [-AccessToken <PSObject>]
      [-TrustServerCertificate]
      [-HostNameInCertificate <String>]
      [-Encrypt <String>]
      [-ProgressAction <ActionPreference>]
      [<CommonParameters>]

Description

Invoke-SqlColumnMasterKeyRotation Cmdlet 會起始以 Always Encrypted 功能的新目標數據行主要密鑰取代現有的源數據行主要密鑰。

Cmdlet 會擷取包含使用指定源數據行主要密鑰加密之加密金鑰值的所有資料行加密密鑰物件。

然後,Cmdlet 會解密目前的加密值、使用目標數據行主要密鑰重新加密產生的純文字值,然後更新受影響的數據行加密密鑰物件以新增加密的值。

因此,每個受影響的數據行加密密鑰都包含兩個加密值:一個使用目前的源數據行主要密鑰產生,另一個則使用目標數據行主要密鑰產生。

如果來源或目標數據行主要金鑰儲存在 Azure 中,您必須為金鑰保存庫或保存金鑰的受控 HSM 指定有效的驗證權杖(或令牌)。 或者,您可以在呼叫此 Cmdlet 之前,先使用 Add-SqlAzureAuthenticationContext 向 Azure 進行驗證。

Module requirements: version 21+ on PowerShell 5.1; version 22+ on PowerShell 7.x.

範例

範例 1:起始輪替數據行主要密鑰的程式。

Invoke-SqlColumnMasterKeyRotation -SourceColumnMasterKeyName "CMK1" -TargetColumnMasterKeyName "CMK2"

此命令會起始輪替名為 CMK1 的數據行主要金鑰的程式,並將它取代為名為 CMK2 的數據行主要密鑰。

範例 2:使用指定的驗證令牌起始輪替數據行主要密鑰的程式

# Connect to Azure account.
Import-Module Az.Accounts -MinimumVersion 2.2.0
Connect-AzAccount

# Obtain access tokens. 
$keyVaultAccessToken = (Get-AzAccessToken -ResourceUrl https://vault.azure.net).Token  
$managedHSMAccessToken = (Get-AzAccessToken -ResourceUrl https://managedhsm.azure.net).Token  

# Pass the tokens to the cmdlet.  
Invoke-SqlColumnMasterKey -SourceColumnMasterKeyName CMK1 -TargetColumnMasterKeyName CMK2 -KeyVaultAccessToken $keyVaultAccessToken -ManagedHSMAccessToken $managedHSMAccessToken

此範例會起始輪替名為 CMK1 的數據行主要密鑰,並將它取代為名為 CMK2 的數據行主要密鑰的程式。 我們假設其中一個金鑰會儲存在金鑰保存庫中,另一個密鑰則儲存在 Azure Key Vault 的受控 HSM 中。 Invoke-SqlColumnMasterKey 會使用取得的驗證令牌來與金鑰保存庫和受控 HSM 端點通訊。

參數

-AccessToken

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

例如,這可用來使用 Service PrincipalManaged Identity來連線到 SQL Azure DBSQL Azure Managed Instance

要使用的參數可以是字串,表示令牌或 PSAccessToken 物件,如執行 Get-AzAccessToken -ResourceUrl https://database.windows.net所傳回。

此參數是模組 v22 的新功能。

類型:PSObject
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Encrypt

線上到 SQL Server 時要使用的加密類型。

此值會對應至 Microsoft.Data.SqlClient 驅動程式之 SqlConnection 物件上的 Encrypt 屬性 SqlConnectionEncryptOption

在模組的 v22 中,預設值為 Optional (為了與 v21 相容)。 在模組的 v23+ 中,預設值會是 「強制」,這可能會為現有的腳本建立重大變更。

此參數是模組 v22 的新功能。

類型:String
接受的值:Mandatory, Optional, Strict
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-HostNameInCertificate

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

此參數是模組 v22 的新功能。

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-InputObject

指定此 Cmdlet 執行作業的 SQL 資料庫物件。

類型:Database
Position:1
預設值:None
必要:True
接受管線輸入:True
接受萬用字元: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

-Path

指定此 Cmdlet 執行作業的 SQL 資料庫路徑。

如果您未指定此參數的值,Cmdlet 會使用目前的工作位置。

類型:String
Position:1
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-ProgressAction

決定 PowerShell 如何回應腳本、Cmdlet 或提供者所產生的進度更新,例如 Write-Progress Cmdlet 所產生的進度列。 Write-Progress Cmdlet 會建立顯示命令狀態的進度列。

類型:ActionPreference
別名:proga
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Script

指出此 Cmdlet 會執行執行工作的 Transact-SQL 腳本。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-SourceColumnMasterKeyName

指定源資料列主要金鑰的名稱。

類型:String
Position:Named
預設值:None
必要:True
接受管線輸入:False
接受萬用字元:False

-TargetColumnMasterKeyName

指定目標資料列主要金鑰的名稱。

類型:String
Position:Named
預設值:None
必要:True
接受管線輸入:False
接受萬用字元:False

-TrustServerCertificate

指出通道是否會在略過憑證鏈結以驗證信任時加密。

在模組的 v22 中,預設值為 $true (為了與 v21 相容)。 在模組的 v23+ 中,預設值會是 『$false』,這可能會為現有的腳本建立重大變更。

此參數是模組 v22 的新功能。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

輸入

Microsoft.SqlServer.Management.Smo.Database