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