sp_describe_parameter_encryption (Transact-SQL)
適用対象: SQL Server 2016 (13.x) 以降
Azure SQL Database
Azure SQL Managed Instance
指定した Transact-SQL ステートメントとそのパラメーターを分析して、Always Encrypted 機能を使用して保護されているデータベース列に対応するパラメーターを決定します。 暗号化された列に対応するパラメーターの暗号化メタデータを返します。
構文
sp_describe_parameter_encryption
[ @tsql = ] N'tsql'
[ , [ @params = ] N'params [ , ...n ]' ]
[ ; ]
引数
[ @tsql = ] 'tsql'
1 つ以上の Transact-SQL ステートメント。 @tsql は、 nvarchar(n) または nvarchar(max)です。
[ @params = ] N'params'
@paramsは、sp_executesql
に似た@tsqlのパラメーターの宣言文字列を提供します。 パラメーターには、 nvarchar(n) または nvarchar(max)があります。
Transact-SQL_batch に埋め込まれているすべてのパラメーターの定義を含む文字列。 この文字列は Unicode 定数または Unicode 変数にする必要があります。 各パラメーター定義は、パラメーター名とデータ型で構成されます。 n は、追加のパラメーター定義を示すプレースホルダーです。 n は、追加のパラメーター定義を示すプレースホルダーです。 ステートメントで指定されるすべてのパラメーターは、 @paramsで定義する必要があります。 Transact-SQL ステートメントまたはステートメント内のバッチにパラメーターが含まれていない場合、 @params は必要ありません。 NULL
は、このパラメーターの既定値です。
戻り値
0
は成功を示します。 それ以外の場合は失敗を示します。
結果セット
sp_describe_parameter_encryption
は 2 つの結果セットを返します。
データベース列用に構成された暗号化キーを記述する結果セット。指定された Transact-SQL ステートメントのパラメーターが対応します。
特定のパラメーターの暗号化方法を記述する結果セット。 この結果セットは、最初の結果セットで説明されているキーを参照します。
最初の結果セットの各行には、暗号化された列暗号化キーとそれに対応する列マスター キー (CMK) のキーのペアが記述されています。
列名 | データ型 | 説明 |
---|---|---|
column_encryption_key_ordinal |
int | 結果セット内の行の ID。 |
database_id |
int | データベース ID。 |
column_encryption_key_id |
int | 列暗号化キー ID。 注: この ID は、 sys.column_encryption_keys カタログ ビューの行を表します。 |
column_encryption_key_version |
int | 将来の使用のために予約済み。 現在、常に 1 が含まれています。 |
column_encryption_key_metadata_version |
binary(8) | 列暗号化キーの作成時刻を表すタイムスタンプ。 |
column_encryption_key_encrypted_value |
varbinary(4000) | 列暗号化キーの暗号化された値。 |
column_master_key_store_provider_name |
sysname | 列暗号化キーの暗号化された値を生成するために使用された CMK を含むキー ストアのプロバイダーの名前。 |
column_master_key_path |
nvarchar (4000) | 列暗号化キーの暗号化された値を生成するために使用された CMK のキー パス。 |
column_encryption_key_encryption_algorithm_name |
sysname | 列暗号化キーの暗号化値を生成するために使用される暗号化アルゴリズムの名前。 |
2 番目の結果セットの各行には、1 つのパラメーターの暗号化メタデータが含まれています。
列名 | データ型 | 説明 |
---|---|---|
parameter_ordinal |
int | 結果セット内の行の ID。 |
parameter_name |
sysname | @params引数で指定されたパラメーターの 1 つの名前。 |
column_encryption_algorithm |
tinyint | パラメーターが対応する列に対して構成された暗号化アルゴリズムを示すコード。 現在サポートされている値は、AEAD_AES_256_CBC_HMAC_SHA_256 に対して2 。 |
column_encryption_type |
tinyint | 列に対して構成された暗号化の種類を示すコード。パラメーターはこれに対応します。 サポートされる値は次のとおりです。0 - プレーンテキスト (列は暗号化されていません)1 - 決定論的暗号化2 - ランダム化された暗号化。 |
column_encryption_key_ordinal |
int | 最初の結果セット内の行のコード。 参照される行は、列に対して構成された列暗号化キーを記述します。パラメーターは対応します。 |
column_encryption_normalization_rule_version |
tinyint | 型正規化アルゴリズムのバージョン番号。 |
解説
Always Encrypted をサポートする SQL Server クライアント ドライバーは、 sp_describe_parameter_encryption
を自動的に呼び出して、アプリケーションによって発行されたパラメーター化されたクエリの暗号化メタデータを取得します。 次に、ドライバーは暗号化メタデータを使用して、Always Encrypted で保護されているデータベース列に対応するパラメーターの値を暗号化します。 データベース エンジンにクエリを送信する前に、アプリケーションによって送信されたプレーンテキスト パラメーター値を暗号化されたパラメーター値に置き換えます。
アクセス許可
データベースの VIEW ANY COLUMN ENCRYPTION KEY DEFINITION
アクセス許可と VIEW ANY COLUMN MASTER KEY DEFINITION
アクセス許可が必要です。
例
次の例では、表示目的で、 ENCRYPTED_VALUE
の値を切り捨てます。
CREATE COLUMN MASTER KEY [CMK1]
WITH (
KEY_STORE_PROVIDER_NAME = N'MSSQL_CERTIFICATE_STORE',
KEY_PATH = N'CurrentUser/my/A66BB0F6DD70BDFF02B62D0F87E340288E6F9305'
);
GO
CREATE COLUMN ENCRYPTION KEY [CEK1]
WITH VALUES (
COLUMN_MASTER_KEY = [CMK1],
ALGORITHM = 'RSA_OAEP',
ENCRYPTED_VALUE = 0x016E00000163007500720072<...> -- truncated in this example
);
GO
CREATE TABLE t1 (
c1 INT ENCRYPTED WITH (
COLUMN_ENCRYPTION_KEY = [CEK1],
ENCRYPTION_TYPE = Randomized,
ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256'
) NULL,
);
EXEC sp_describe_parameter_encryption
N'INSERT INTO t1 VALUES(@c1)',
N'@c1 INT';
最初の結果セットを次に示します。
列 | 値 |
---|---|
column_encryption_key_ordinal |
1 |
database_id |
5 |
column_encryption_key_id |
1 |
column_encryption_key_version |
1 |
column_encryption_key_metadata_version |
0x99EDA60083A50000 |
column_encryption_key_encrypted_value |
0x016E00000163007500720072<...> |
column_master_key_store_provider_name |
MSSQL_CERTIFICATE_STORE |
column_master_key_path |
CurrentUser/my/A66BB0F6DD70BDFF02B62D0F87E340288E6F9305 |
column_encryption_key_encryption_algorithm_name |
RSA_OAEP |
2 番目の結果セットを次に示します。
列 | 値 |
---|---|
parameter_ordinal |
1 |
parameter_name |
@c1 |
column_encryption_algorithm |
1 |
column_encryption_type |
1 |
column_encryption_key_ordinal |
1 |
column_encryption_normalization_rule_version |
1 |