Invoke-SqlColumnMasterKeyRotation
列マスター キーのローテーションを開始します。
構文
Invoke-SqlColumnMasterKeyRotation
-SourceColumnMasterKeyName <String>
-TargetColumnMasterKeyName <String>
[-KeyVaultAccessToken <String>]
[-ManagedHsmAccessToken <String>]
[-InputObject] <Database>
[-Script]
[-AccessToken <PSObject>]
[-TrustServerCertificate]
[-HostNameInCertificate <String>]
[-Encrypt <String>]
[<CommonParameters>]
Invoke-SqlColumnMasterKeyRotation
-SourceColumnMasterKeyName <String>
-TargetColumnMasterKeyName <String>
[-KeyVaultAccessToken <String>]
[-ManagedHsmAccessToken <String>]
[[-Path] <String>]
[-Script]
[-AccessToken <PSObject>]
[-TrustServerCertificate]
[-HostNameInCertificate <String>]
[-Encrypt <String>]
[<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の認証に使用されるアクセス トークン。
これは、たとえば、 または Managed Identity
に接続SQL Azure DB
して SQL Azure Managed Instance
使用するために使用Service Principal
できます。
使用するパラメーターには、 を実行Get-AzAccessToken -ResourceUrl https://database.windows.net
して返されるトークンまたはオブジェクトをPSAccessToken
表す文字列を指定できます。
このパラメーターは、モジュールの v22 の新機能です。
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
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 インスタンスが Force Encryption に対して有効になっており、hostname/shortname を使用してインスタンスに接続する場合は、このパラメーターを渡す必要があります。 このパラメーターを省略した場合、強制暗号化が有効になっているSQL Server インスタンスに接続するには、完全修飾ドメイン名 (FQDN) を -ServerInstance に渡す必要があります。
このパラメーターは、モジュールの v22 の新機能です。
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
このコマンドレットが操作を実行する SQL データベース オブジェクトを指定します。
Type: | Database |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-KeyVaultAccessToken
Azure Key Vaultのキー コンテナーのアクセス トークンを指定します。 現在の列マスター キーまたはターゲット列マスター キーが Azure Key Vaultのキー コンテナーに格納されている場合は、このパラメーターを使用します。
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ManagedHsmAccessToken
Azure Key Vaultのマネージド HSM のアクセス トークンを指定します。 現在の列マスター キーまたはターゲット列マスター キーが Azure Key Vault のマネージド HSM に格納されている場合は、このパラメーターを使用します。
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
このコマンドレットが操作を実行する SQL データベースのパスを指定します。
このパラメーターの値を指定しない場合、コマンドレットは現在の作業場所を使用します。
Type: | String |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Script
このコマンドレットが、タスクを実行する Transact-SQL スクリプトを実行することを示します。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SourceColumnMasterKeyName
ソース列マスター キーの名前を指定します。
Type: | String |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-TargetColumnMasterKeyName
ターゲット列マスター キーの名前を指定します。
Type: | String |
Position: | Named |
Default value: | None |
Required: | True |
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