New-SqlColumnMasterKey

データベースに列マスター キー オブジェクトを作成します。

構文

New-SqlColumnMasterKey
   -ColumnMasterKeySettings <SqlColumnMasterKeySettings>
   [-Name] <String>
   [-InputObject] <Database>
   [-Script]
   [-AccessToken <PSObject>]
   [-TrustServerCertificate]
   [-HostNameInCertificate <String>]
   [-Encrypt <String>]
   [-ProgressAction <ActionPreference>]
   [<CommonParameters>]
New-SqlColumnMasterKey
   -ColumnMasterKeySettings <SqlColumnMasterKeySettings>
   [-Name] <String>
   [[-Path] <String>]
   [-Script]
   [-AccessToken <PSObject>]
   [-TrustServerCertificate]
   [-HostNameInCertificate <String>]
   [-Encrypt <String>]
   [-ProgressAction <ActionPreference>]
   [<CommonParameters>]

説明

New-SqlColumnMasterKey コマンドレットは、データベースに列マスター キー オブジェクトを作成します。 列マスター キー オブジェクトは、Always Encrypted 機能の列マスター キーとして使用される物理暗号化キーの場所をキャプチャします。

例 1: 証明書を参照する列マスター キー オブジェクトを作成する

$CmkSettings = New-SqlCertificateStoreColumnMasterKeySettings -CertificateStoreLocation 'CurrentUser' -CertificateThumbprint 'f2260f28d909d21c642a3d8e0b45a830e79a1420'
New-SqlColumnMasterKey -Name 'CMK1' -ColumnMasterKeySettings $CmkSettings

最初のコマンドでは、New-SqlCertificateStoreColumnMasterKeySettings コマンドレットを使用して、Windows 証明書ストアの証明書を参照する列マスター設定を作成し、結果を $CmkSettingsという名前の変数に格納します。

例 2: Azure Key Vault でキーを参照する列マスター キー オブジェクトを作成する

$CmkSettings = New-SqlAzureKeyVaultColumnMasterKeySettings -KeyUrl 'https://myvault.vault.contoso.net/keys/CMK/4c05f1a41b12488f9cba2ea964b6a700'
New-SqlColumnMasterKey 'CMK1' -ColumnMasterKeySettings $CmkSettings

最初のコマンドでは、New-SqlCertificateStoreColumnMasterKeySettings コマンドレットを使用して、Azure Key Vault 内のキーを参照する列マスター キー オブジェクトを作成し、結果を $CmkSettingsという名前の変数に格納します。

例 3: CNG をサポートするキーを参照する列マスター キー オブジェクトを作成する

$CmkSettings = New-SqlCngColumnMasterKeySettings -CngProviderName 'Microsoft Software Key Storage Provider' -KeyName 'AlwaysEncryptedKey'
New-SqlColumnMasterKey 'CMK1' -ColumnMasterKeySettings $CmkSettings

最初のコマンドは、New-SqlCertificateStoreColumnMasterKeySettings コマンドレットを使用して、Cryptography Next Generation (CNG) API をサポートするキー ストア内のキーを参照する列マスター キー オブジェクトを作成し、結果を $CmkSettingsという名前の変数に格納します。

例 4: CSP をサポートするキーを参照する列マスター キー オブジェクトを作成する

$CmkSettings = New-SqlCspColumnMasterKeySettings 'MyCspProvider' 'AlwaysEncryptedKey'
New-SqlColumnMasterKey 'CMK1' -ColumnMasterKeySettings $CmkSettings

最初のコマンドでは、New-SqlCertificateStoreColumnMasterKeySettings コマンドレットを使用して、Cryptography API (CAPI) をサポートする Cryptography Service Provider (CSP) を使用してキー ストア キー ストア内のキーを参照する列マスター キー オブジェクトを作成します。

例 5: 証明書を参照する列マスター キー オブジェクトを作成し、自動署名され、エンクレーブ計算をサポートする

$CmkSettings = New-SqlCertificateStoreColumnMasterKeySettings -CertificateStoreLocation 'CurrentUser' -CertificateThumbprint 'f2260f28d909d21c642a3d8e0b45a830e79a1420' -AllowEnclaveComputations
New-SqlColumnMasterKey -Name 'CMK1' -ColumnMasterKeySettings $CmkSettings

最初のコマンドでは、New-SqlCertificateStoreColumnMasterKeySettings コマンドレットを使用して、エンクレーブ計算をサポートし、Windows 証明書ストアに格納される証明書を参照する列マスター設定を作成します。

パラメーター

-AccessToken

ユーザー/パスワードまたは Windows 認証の代わりに、SQL Server に対する認証に使用されるアクセス トークン。

これは、たとえば、Service Principal または Managed Identityを使用して SQL Azure DBSQL Azure Managed Instance に接続するために使用できます。

使用するパラメーターには、トークンを表す文字列、または Get-AzAccessToken -ResourceUrl https://database.windows.netを実行して返される PSAccessToken オブジェクトを指定できます。

このパラメーターは、モジュールの v22 の新機能です。

型:PSObject
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-ColumnMasterKeySettings

実際の列マスター キーの場所を指定する sqlColumnMasterKeySettings オブジェクト を指定します。

SqlColumnMasterKeySettings オブジェクトには、KeyStoreProviderName と keyPathの 2 つのプロパティがあります。

KeyStoreProviderName では、列マスター キー ストア プロバイダーの名前を指定します。Always Encrypted 対応クライアント ドライバーは、列マスター キーを含むキー ストアにアクセスするために使用する必要があります。

KeyPath は、キー ストア内の列マスター キーの場所を指定します。 KeyPath 形式は、キー ストアに固有です。

型:SqlColumnMasterKeySettings
配置:Named
規定値:None
必須:True
パイプライン入力を受け取る: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
配置:2
規定値:None
必須:True
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:False

-Name

このコマンドレットで作成する列マスター キー オブジェクトの名前を指定します。

型:String
配置:1
規定値:None
必須:True
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Path

このコマンドレットが操作を実行する SQL データベースのパスを指定します。 このパラメーターの値を指定しない場合、コマンドレットは現在の作業場所を使用します。

型:String
配置:2
規定値: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

-TrustServerCertificate

信頼を検証するために証明書チェーンのウォークをバイパスしながらチャネルを暗号化するかどうかを示します。

モジュールの v22 では、既定値は $true です (v21 との互換性のため)。 モジュールの v23 以降では、既定値は "$false" になり、既存のスクリプトに重大な変更が生じる可能性があります。

このパラメーターは、モジュールの v22 の新機能です。

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

入力

Microsoft.SqlServer.Management.Smo.Database

出力

Microsoft.SqlServer.Management.Smo.SqlColumnMasterKey