sp_describe_parameter_encryption (Transact-SQL)
Область применения: SQL Server 2016 (13.x) и более поздние версии Управляемого экземпляра Базы данныхSQL Azure SQL Azure
Анализирует указанную инструкцию 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 предоставляет строку объявления для параметров пакета Transact-SQL, который аналогичен sp_executesql. Параметры могут быть 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 | Идентификатор строки в наборе результатов. |
database_id | int | Идентификатор базы данных. |
column_encryption_key_id | int | Идентификатор ключа шифрования столбца. Примечание. Этот идентификатор обозначает строку в представлении каталога 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 | Идентификатор строки в результирующем наборе. |
parameter_name | sysname | Имя одного из параметров, указанных в аргументе @params . |
column_encryption_algorithm | tinyint | Код, указывающий алгоритм шифрования, настроенный для столбца, соответствует параметру. Поддерживаемые в настоящее время значения: 2 для AEAD_AES_256_CBC_HMAC_SHA_256. |
column_encryption_type | tinyint | Код, указывающий тип шифрования, настроенный для столбца, соответствует параметру. Поддерживаются такие значения: 0 — открытый текст (столбец не зашифрован) 1 — детерминированное шифрование 2 — случайное шифрование. |
column_encryption_key_ordinal | int | Код строки в первом результирующем наборе. В указанной строке описывается ключ шифрования столбца, настроенный для столбца, соответствующий параметру. |
column_encryption_normalization_rule_version | tinyint | Номер версии алгоритма нормализации типов. |
Замечания
Драйвер клиента SQL Server, поддерживающий Always Encrypted, автоматически вызывает 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 |
---|---|---|---|---|---|
1 | 5 | 1 | 1 | 0x99EDA60083A50000 | 0x016E000001630075007200720065006E00740075007300650072002F006D0079002F006100360036006200620030006600360064006400370030006200640066006600300032006200360032006400300066003800370065003300340030003200380038006500360066003900330030003500CA0D0CEC74ECADD1804CF99137B4BD06BBAB15D7EA74E0C249A779C7768A5B659E0125D24FF827F5EA8CA517A8E197ECA1353BA814C2B0B2E6C8AB36E3AE6A1E972D69C3C573A963ADAB6686CF5D24F95FE43140C4F9AF48FBA7DF2D053F3B4A1F5693A1F905440F8015BDB43AF8A04BE4E045B89876A0097E5FBC4E6A3B9C3C0D278C540E46C53938B8C957B689C4DC095821C465C73117CBA95B758232F9E5B2FCC7950B8CA00AFE374DE42847E3FBC2FDD277035A2DEF529F4B735C20D980073B4965B4542A34723276A1646998FC6E1C40A3FDB6ABCA98EE2B447F114D2AC7FF8C7D51657550EC5C2BABFFE8429B851272086DCED94332CF18FA854C1D545A28B1EF4BE64F8E035175C1650F6FC5C4702ACF99850A4542B3747EAEC0CC726E091B36CE24392D801ECAA684DE344FECE05812D12CD72254A014D42D0EABDA41C89FC4F545E88B4B8781E5FAF40D7199D4842D2BFE904D209728ED4F527CBC169E2904F6E711FF81A8F4C25382A2E778DD2A58552ED031AFFDA9D9D891D98AD82155F93C58202FC24A77F415D4F8EF22419D62E188AC609330CCBD97CEE1AEF8A18B01958833604707FDF03B2B386487CC679D7E352D0B69F9FB002E51BCD814D077E82A09C14E9892C1F8E0C559CFD5FA841CEF647DAB03C8191DC46B772E94D579D8C80FE93C3827C9F0AE04D5325BC73111E07EEEDBE67F1E2A73580085 |
(Результаты продолжаются.)
column_master_key_store_provider_name | column_master_key_path | column_encryption_key_encryption_algorithm_name |
---|---|---|
MSSQL_CERTIFICATE_STORE | CurrentUser/my/A66BB0F6D70BDFF02B62B62D0F87E34028E6F9305 | RSA_OAEP |
Ниже приведен второй результирующий набор:
parameter_ordinal | parameter_name | column_encryption_algorithm | column_encryption_type |
---|---|---|---|
1 | @c1 | 1 | 1 |
(Результаты продолжаются.)
column_encryption_key_ordinal | column_encryption_normalization_rule_version |
---|---|
1 | 1 |
См. также
Always Encrypted
Разработка приложения с помощью Always Encrypted
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по