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>]
説明
Invoke-SqlColumnMasterKeyRotation コマンドレットは、既存のソース列マスター キーを Always Encrypted 機能の新しいターゲット列マスター キーに置き換えます。
このコマンドレットは、指定したソース列マスター キーで暗号化された暗号化されたキー値を含むすべての列暗号化キー オブジェクトを取得します。
次に、コマンドレットは現在の暗号化された値を復号化し、結果のプレーンテキスト値をターゲット列マスター キーで再暗号化した後、影響を受ける列暗号化キー オブジェクトを更新して、新しい暗号化された値を追加します。
その結果、影響を受けた各列暗号化キーには 2 つの暗号化された値が含まれます。1 つは現在のソース列マスター キーを使用して生成され、もう 1 つはターゲット列マスター キーを使用して生成されます。
ソースまたはターゲット列のマスター キーが Azure に格納されている場合は、キー コンテナーまたはキーを保持するマネージド HSM の有効な認証トークン (またはトークン) を指定する必要があります。 または、このコマンドレットを呼び出す前に、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 という名前の列マスター キーに置き換えるプロセスを開始します。
キーの 1 つがキー コンテナーに格納され、もう 1 つのキーが Azure Key Vault のマネージド HSM に格納されていることを前提としています。
Invoke-SqlColumnMasterKey
では、取得した認証トークンを使用して、キー コンテナーとマネージド HSM エンドポイントと通信します。
パラメーター
-AccessToken
ユーザー/パスワードまたは Windows 認証の代わりに、SQL Server に対する認証に使用されるアクセス トークン。
これは、たとえば、Service Principal
または Managed Identity
を使用して SQL Azure DB
と SQL Azure Managed Instance
に接続するために使用できます。
使用するパラメーターには、トークンを表す文字列、または Get-AzAccessToken -ResourceUrl https://database.windows.net
を実行して返される PSAccessToken
オブジェクトを指定できます。
このパラメーターは、モジュールの v22 の新機能です。
型: | PSObject |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Encrypt
SQL Server に接続するときに使用する暗号化の種類。
この値は、Microsoft.Data.SqlClient ドライバーの SqlConnection オブジェクトの Encrypt
プロパティ SqlConnectionEncryptOption
にマップされます。
モジュールの v22 では、既定値は Optional
です (v21 との互換性のため)。 モジュールの v23 以降では、既定値は "必須" になり、既存のスクリプトに重大な変更が生じる可能性があります。
このパラメーターは、モジュールの v22 の新機能です。
型: | String |
指定可能な値: | Mandatory, Optional, Strict |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-HostNameInCertificate
SQL Server TLS/SSL 証明書の検証に使用するホスト名。 SQL Server インスタンスで Force Encryption が有効になっていて、ホスト名/短縮名を使用してインスタンスに接続する場合は、このパラメーターを渡す必要があります。 このパラメーターを省略した場合、強制暗号化が有効になっている SQL Server インスタンスに接続するには、完全修飾ドメイン名 (FQDN) を -ServerInstance に渡す必要があります。
このパラメーターは、モジュールの v22 の新機能です。
型: | String |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-InputObject
このコマンドレットが操作を実行する SQL データベース オブジェクトを指定します。
型: | Database |
配置: | 1 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-KeyVaultAccessToken
Azure Key Vault 内のキー コンテナーのアクセス トークンを指定します。 現在の列マスター キーまたはターゲット列マスター キーが Azure Key Vault のキー コンテナーに格納されている場合は、このパラメーターを使用します。
型: | String |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-ManagedHsmAccessToken
Azure Key Vault 内のマネージド HSM のアクセス トークンを指定します。 現在の列マスター キーまたはターゲット列マスター キーが Azure Key Vault のマネージド HSM に格納されている場合は、このパラメーターを使用します。
型: | String |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Path
このコマンドレットが操作を実行する SQL データベースのパスを指定します。
このパラメーターの値を指定しない場合、コマンドレットは現在の作業場所を使用します。
型: | String |
配置: | 1 |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-ProgressAction
スクリプト、コマンドレット、またはプロバイダーによって生成された進行状況の更新 (Write-Progress コマンドレットによって生成された進行状況バーなど) に対する PowerShell の応答方法を決定します。 Write-Progress コマンドレットは、コマンドの状態を示す進行状況バーを作成します。
型: | ActionPreference |
Aliases: | proga |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Script
このコマンドレットが、タスクを実行する Transact-SQL スクリプトを実行することを示します。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-SourceColumnMasterKeyName
ソース列マスター キーの名前を指定します。
型: | String |
配置: | Named |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-TargetColumnMasterKeyName
ターゲット列マスター キーの名前を指定します。
型: | String |
配置: | Named |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-TrustServerCertificate
信頼を検証するために証明書チェーンのウォークをバイパスしながらチャネルを暗号化するかどうかを示します。
モジュールの v22 では、既定値は $true
です (v21 との互換性のため)。 モジュールの v23 以降では、既定値は "$false" になり、既存のスクリプトに重大な変更が生じる可能性があります。
このパラメーターは、モジュールの v22 の新機能です。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
入力
Microsoft.SqlServer.Management.Smo.Database