sp_describe_parameter_encryption (Transact-SQL)
적용 대상: SQL Server 2016(13.x) 이상 Azure SQL 데이터베이스 Azure SQL Managed Instance
지정된 Transact-SQL 문 및 해당 매개 변수를 분석하여 Always Encrypted 기능을 사용하여 보호되는 데이터베이스 열에 해당하는 매개 변수를 결정합니다. 암호화된 열에 해당하는 매개 변수에 대한 암호화 메타데이터를 반환합니다.
구문
sp_describe_parameter_encryption
[ @tsql = ] N'tsql'
[ , [ @params = ] N'@parameter_name data_type [ , ... n ]' ]
[ ; ]
인수
[ @tsql = ] 'tsql'
하나 이상의 Transact-SQL 문입니다. @tsql nvarchar(n) 또는 nvarchar(max)일 수 있습니다.
[ @params = ] N'@parameter_name data_type [ ,... n ]'
@params 다음과 유사한 @tsql 매개 변수에 대한 선언 문자열을 sp_executesql
제공합니다. 매개 변수는 nvarchar(n) 또는 nvarchar(max)일 수 있습니다.
Transact-SQL_batch 포함된 모든 매개 변수의 정의를 포함하는 문자열입니다. 문자열은 유니코드 상수 또는 유니코드 변수여야 합니다. 각 매개 변수 정의는 매개 변수 이름과 데이터 형식으로 구성됩니다. n 은 추가 매개 변수 정의를 나타내는 자리 표시자입니다. n 은 추가 매개 변수 정의를 나타내는 자리 표시자입니다. 문에 지정된 모든 매개 변수는 @params 정의해야 합니다. 문의 Transact-SQL 문 또는 일괄 처리에 매개 변수 가 포함되어 있지 않으면 @params 필요하지 않습니다. NULL
는 이 매개 변수의 기본값입니다.
반환 값
0
는 성공을 나타냅니다. 다른 항목은 실패를 나타냅니다.
결과 집합
sp_describe_parameter_encryption
는 다음 두 개의 결과 집합을 반환합니다.
데이터베이스 열에 대해 구성된 암호화 키를 설명하는 결과 집합으로, 지정된 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 | 열 암호화 키의 암호화 값을 생성하는 데 사용되는 암호화 알고리즘의 이름입니다. |
두 번째 결과 집합의 각 행에는 하나의 매개 변수에 대한 암호화 메타데이터가 포함됩니다.
열 이름 | 데이터 형식 | 설명 |
---|---|---|
parameter_ordinal |
int | 결과 집합에 있는 행의 ID입니다. |
parameter_name |
sysname | @params 인수에 지정된 매개 변수 중 하나의 이름입니다. |
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 | 값 |
---|---|
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 |
두 번째 결과 집합은 다음과 같습니다.
Column | 값 |
---|---|
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 |