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