다음을 통해 공유


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