sp_describe_parameter_encryption(Transact-SQL)
적용 대상: SQL Server 2016(13.x) 이상 Azure SQL DatabaseAzure SQL Managed Instance
지정된 Transact-SQL 문 및 해당 매개 변수를 분석하여 Always Encrypted 기능을 사용하여 보호되는 데이터베이스 열에 해당하는 매개 변수를 결정합니다. 암호화된 열에 해당하는 매개 변수에 대한 암호화 메타데이터를 반환합니다.
구문
sp_describe_parameter_encryption
[ @tsql = ] N'Transact-SQL_batch' ,
[ @params = ] N'parameters'
[ ;]
인수
[ @tsql = ] 'Transact-SQL_batch'
하나 이상의 Transact-SQL 문입니다. Transact-SQL_batch nvarchar(n) 또는 nvarchar(max)일 수 있습니다.
[ @params = ] N'parameters'
@params sp_executesql 유사한 Transact-SQL 일괄 처리에 대한 매개 변수에 대한 선언 문자열을 제공합니다. 매개 변수는 nvarchar(n) 또는 nvarchar(max)일 수 있습니다.
Transact-SQL_batch 포함된 모든 매개 변수의 정의를 포함하는 하나의 문자열입니다. 문자열은 유니코드 상수 또는 유니코드 변수여야 합니다. 각 매개 변수 정의는 매개 변수 이름과 데이터 형식으로 구성됩니다. n 은 추가 매개 변수 정의를 나타내는 자리 표시자입니다. 문에 지정된 모든 매개 변수는 @params 정의해야 합니다. 문의 Transact-SQL 문 또는 일괄 처리에 매개 변수 가 없는 경우 @params 필요하지 않습니다. NULL이 이 매개 변수의 기본값입니다.
반환 값
0은 성공을 나타냅니다. 다른 것은 실패를 나타냅니다.
결과 집합
sp_describe_parameter_encryption 두 개의 결과 집합을 반환합니다.
데이터베이스 열에 대해 구성된 암호화 키를 설명하는 결과 집합으로, 지정된 Transact-SQL 문의 매개 변수가 해당합니다.
특정 매개 변수를 암호화하는 방법을 설명하는 결과 집합입니다. 이 결과 집합은 첫 번째 결과 집합에 설명된 키를 참조합니다.
첫 번째 결과 집합의 각 행은 키 쌍을 설명합니다. 암호화된 열 암호화 키 및 해당 열 마스터 키입니다.
열 이름 | 데이터 형식 | 설명 |
---|---|---|
column_encryption_key_ordinal | int | 결과 집합에 있는 행의 ID입니다. |
database_id | int | 데이터베이스 ID입니다. |
column_encryption_key_id | int | 열 암호화 키 ID입니다. 참고: 이 ID는 sys.column_encryption_keys(Transact-SQL) 카탈로그 뷰의 행을 나타냅니다. |
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 | 열 암호화 키의 암호화된 값을 생성하는 데 사용된 열 마스터 키가 포함된 키 저장소에 대한 공급자의 이름입니다. |
column_master_key_path | nvarchar(4000) | 열 암호화 키의 암호화된 값을 생성하는 데 사용된 열 마스터 키의 키 경로입니다. |
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 권한이 필요합니다.
예
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 =
0x016E000001630075007200720065006E00740075007300650072002F006D007
9002F00610036003600620062003000660036006400640037003000620064006
6006600300032006200360032006400300066003800370065003300340030003
200380038006500360066003900330030003500CA0D0CEC74ECADD1804CF991
37B4BD06BBAB15D7EA74E0C249A779C7768A5B659E0125D24FF827F5EA8CA51
7A8E197ECA1353BA814C2B0B2E6C8AB36E3AE6A1E972D69C3C573A963ADAB6
686CF5D24F95FE43140C4F9AF48FBA7DF2D053F3B4A1F5693A1F905440F8015B
DB43AF8A04BE4E045B89876A0097E5FBC4E6A3B9C3C0D278C540E46C53938B8
C957B689C4DC095821C465C73117CBA95B758232F9E5B2FCC7950B8CA00AFE3
74DE42847E3FBC2FDD277035A2DEF529F4B735C20D980073B4965B4542A3472
3276A1646998FC6E1C40A3FDB6ABCA98EE2B447F114D2AC7FF8C7D51657550E
C5C2BABFFE8429B851272086DCED94332CF18FA854C1D545A28B1EF4BE64F8E0
35175C1650F6FC5C4702ACF99850A4542B3747EAEC0CC726E091B36CE24392D8
01ECAA684DE344FECE05812D12CD72254A014D42D0EABDA41C89FC4F545E88B
4B8781E5FAF40D7199D4842D2BFE904D209728ED4F527CBC169E2904F6E711FF8
1A8F4C25382A2E778DD2A58552ED031AFFDA9D9D891D98AD82155F93C58202F
C24A77F415D4F8EF22419D62E188AC609330CCBD97CEE1AEF8A18B0195883360
4707FDF03B2B386487CC679D7E352D0B69F9FB002E51BCD814D077E82A09C14E
9892C1F8E0C559CFD5FA841CEF647DAB03C8191DC46B772E94D579D8C80FE93C
3827C9F0AE04D5325BC73111E07EEEDBE67F1E2A73580085
);
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 | database_id | column_encryption_key_id | column_encryption_key_version | column_encryption_key_metadata_version | column_encryption_key_encrypted_value |
---|---|---|---|---|---|
6 | 5 | 1 | 6 | 0x99EDA60083A50000 | 0x016E000001630075007200720065006E00740075007300650072002F006D0079002F006100360036006200620030006600360064006400370030006200640066006600300032006200360032006400300066003800370065003300340030003200380038006500360066003900330030003500CA0D0CEC74ECADD1804CF99137B4BD06BBAB15D7EA74E0C249A779C7768A5B659E0125D24FF827F5EA8CA517A8E197ECA1353BA814C2B0B2E6C8AB36E3AE6A1E972D69C3C573A963ADAB6686CF5D24F95FE43140C4F9AF48FBA7DF2D053F3B4A1F5693A1F905440F8015BDB43AF8A04BE4E045B89876A0097E5FBC4E6A3B9C3C0D278C540E46C53938B8C957B689C4DC095821C465C73117CBA95B758232F9E5B2FCC7950B8CA00AFE374DE42847E3FBC2FDD277035A2DEF529F4B735C20D980073B4965B4542A34723276A1646998FC6E1C40A3FDB6ABCA98EE2B447F114D2AC7FF8C7D51657550EC5C2BABFFE8429B851272086DCED94332CF18FA854C1D545A28B1EF4BE64F8E035175C1650F6FC5C4702ACF99850A4542B3747EAEC0CC726E091B36CE24392D801ECAA684DE344FECE05812D12CD72254A014D42D0EABDA41C89FC4F545E88B4B8781E5FAF40D7199D4842D2BFE904D209728ED4F527CBC169E2904F6E711FF81A8F4C25382A2E778DD2A58552ED031AFFDA9D9D891D98AD82155F93C58202FC24A77F415D4F8EF22419D62E188AC609330CCBD97CEE1AEF8A18B01958833604707FDF03B2B386487CC679D7E352D0B69F9FB002E51BCD814D077E82A09C14E9892C1F8E0C559CFD5FA841CEF647DAB03C8191DC46B772E94D579D8C80FE93C3827C9F0AE04D5325BC73111E07EEEDBE67F1E2A73580085 |
(결과는 계속됩니다.)
column_master_key_store_provider_name | column_master_key_path | column_encryption_key_encryption_algorithm_name |
---|---|---|
MSSQL_CERTIFICATE_STORE | CurrentUser/my/A66BB0F6DD70BDFF02B62D0F87E340288E6F9305 | RSA_OAEP뿐입니다. |
두 번째 결과 집합은 다음과 같습니다.
parameter_ordinal | parameter_name | column_encryption_algorithm | column_encryption_type |
---|---|---|---|
6 | @c1 | 6 | 6 |
(결과는 계속됩니다.)
column_encryption_key_ordinal | column_encryption_normalization_rule_version |
---|---|
6 | 6 |
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기