New-SqlColumnEncryptionKey
データベースに列暗号化キー オブジェクトを作成します。
構文
New-SqlColumnEncryptionKey
-ColumnMasterKeyName <String>
[-EncryptedValue <String>]
[-KeyVaultAccessToken <String>]
[-ManagedHsmAccessToken <String>]
[-Name] <String>
[-InputObject] <Database>
[-Script]
[-AccessToken <PSObject>]
[-TrustServerCertificate]
[-HostNameInCertificate <String>]
[-Encrypt <String>]
[-ProgressAction <ActionPreference>]
[<CommonParameters>]
New-SqlColumnEncryptionKey
-ColumnMasterKeyName <String>
[-EncryptedValue <String>]
[-KeyVaultAccessToken <String>]
[-ManagedHsmAccessToken <String>]
[-Name] <String>
[[-Path] <String>]
[-Script]
[-AccessToken <PSObject>]
[-TrustServerCertificate]
[-HostNameInCertificate <String>]
[-Encrypt <String>]
[-ProgressAction <ActionPreference>]
[<CommonParameters>]
説明
New-SqlColumnEncryptionKey コマンドレットは、データベースに列暗号化キー オブジェクトを作成します。 列暗号化キー オブジェクトは、対称暗号化キーの暗号化された値をカプセル化します。その後、Always Encrypted 機能を使用してデータベース列を暗号化するために使用できます。
このコマンドレットは、次の 2 つの操作モードをサポートしています。
列暗号化キーの暗号化された値が指定されている場合、コマンドレットは、指定された暗号化された値をカプセル化する新しい列暗号化キー オブジェクトを作成するだけです。
列暗号化キーの暗号化された値が指定されていない場合、コマンドレットは最初にプレーンテキスト キー値を生成し、指定された列マスター キーで暗号化してから、生成された暗号化された値をカプセル化する新しい列暗号化キー オブジェクトを作成します。 このモードでは、コマンドレットは列マスター キーを保持するキー ストアと通信します。 キーが Azure に格納されている場合は、キー コンテナーまたはキーを保持するマネージド HSM の有効な認証トークンを指定する必要があります。 または、このコマンドレットを呼び出す前に、Add-SqlAzureAuthenticationContext を使用して Azure に対する認証を行うことができます。
Module requirements: version 21+ on PowerShell 5.1; version 22+ on PowerShell 7.x.
例
例 1: 列暗号化キーを生成して暗号化する
New-SqlColumnEncryptionKey -Name 'CEK1' -ColumnMasterKeyName 'CMK1'
このコマンドは、列暗号化キーのプレーンテキスト値を生成し、指定されたマスター キーを使用してプレーンテキスト値を暗号化した後、生成された暗号化された値をデータベースにカプセル化して列暗号化キー オブジェクトを作成します。
例 2: Azure Key Vault のキー コンテナーに格納されている列マスター キーを使用して、列暗号化キーを生成して暗号化する。
この例では、Azure Key Vault 内のキー コンテナーへのトークンがコマンドレットに渡されます。
# Connect to Azure account.
Import-Module Az.Accounts -MinimumVersion 2.2.0
Connect-AzAccount
# Obtain the access token.
$keyVaultAccessToken = (Get-AzAccessToken -ResourceUrl https://vault.azure.net).Token
# Pass the token to the cmdlet. It will use the token to communicate with the key vault containing the column master key.
New-SqlColumnEncryptionKey -Name 'CEK1' -ColumnMasterKeyName 'CMK1' -KeyVaultAccessToken $keyVaultAccessToken
例 3: 列暗号化キーの既存の暗号化値の列暗号化キー オブジェクトを作成する。
New-SqlColumnEncryptionKey -Name 'CEK1' -ColumnMasterKeyName 'CMK1' -EncryptedValue '0x01700000016C006F00630061006C006D0061006300680069006E0065002F006D0079002F003200660061006600640038003100320031003400340034006500620031006100320065003000360039003300340038006100350064003400300032003300380065006600620063006300610031006300284FC4316518CF3328A6D9304F65DD2CE387B79D95D077B4156E9ED8683FC0E09FA848275C685373228762B02DF2522AFF6D661782607B4A2275F2F922A5324B392C9D498E4ECFC61B79F0553EE8FB2E5A8635C4DBC0224D5A7F1B136C182DCDE32A00451F1A7AC6B4492067FD0FAC7D3D6F4AB7FC0E86614455DBB2AB37013E0A5B8B5089B180CA36D8B06CDB15E95A7D06E25AACB645D42C85B0B7EA2962BD3080B9A7CDB805C6279FE7DD6941E7EA4C2139E0D4101D8D7891076E70D433A214E82D9030CF1F40C503103075DEEB3D64537D15D244F503C2750CF940B71967F51095BFA51A85D2F764C78704CAB6F015EA87753355367C5C9F66E465C0C66BADEDFDF76FB7E5C21A0D89A2FCCA8595471F8918B1387E055FA0B816E74201CD5C50129D29C015895CD073925B6EA87CAF4A4FAF018C06A3856F5DFB724F42807543F777D82B809232B465D983E6F19DFB572BEA7B61C50154605452A891190FB5A0C4E464862CF5EFAD5E7D91F7D65AA1A78F688E69A1EB098AB42E95C674E234173CD7E0925541AD5AE7CED9A3D12FDFE6EB8EA4F8AAD2629D4F5A18BA3DDCC9CF7F352A892D4BEBDC4A1303F9C683DACD51A237E34B045EBE579A381E26B40DCFBF49EFFA6F65D17F37C6DBA54AA99A65D5573D4EB5BA038E024910A4D36B79A1D4E3C70349DADFF08FD8B4DEE77FDB57F01CB276ED5E676F1EC973154F86'
パラメーター
-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 |
-ColumnMasterKeyName
列暗号化キーの指定された暗号化値の生成に使用された列マスター キーの名前、または新しい暗号化された値の生成に使用される列マスター キーの名前を指定します。
型: | String |
配置: | 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 |
-EncryptedValue
暗号化された列暗号化キー値である 16 進文字列を指定します。
型: | String |
配置: | 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 |
-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 |
-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
出力
SqlColumnEncryptionKey