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'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).
Имя столбца | Тип данных | Description |
---|---|---|
column_encryption_key_ordinal |
int | Идентификатор строки в наборе результатов. |
database_id |
int | Идентификатор базы данных. |
column_encryption_key_id |
int | Идентификатор ключа шифрования столбца. Примечание. Этот идентификатор обозначает строку в представлении каталога 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 | Имя алгоритма шифрования, используемого для создания значения шифрования ключа шифрования столбца. |
Каждая строка второго результирующий набор содержит метаданные шифрования для одного параметра.
Имя столбца | Тип данных | Description |
---|---|---|
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
в базе данных.
Примеры
В следующем примере усечено значение для 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 |
Ниже приведен второй результирующий набор:
Столбец | Значение |
---|---|
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 |