Compartilhar via


sp_describe_parameter_encryption (Transact-SQL)

Aplica-se a: SQL Server 2016 (13.x) e posterior Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

Analisa a instrução Transact-SQL especificada e seus parâmetros, para determinar quais parâmetros correspondem às colunas de banco de dados protegidas usando o recurso Always Encrypted. Retorna metadados de criptografia para os parâmetros que correspondem às colunas criptografadas.

Sintaxe

sp_describe_parameter_encryption
    [ @tsql = ] N'tsql'
    [ , [ @params = ] N'params [ , ...n ]' ]
[ ; ]

Argumentos

@tsql [ = ] 'tsql'

Uma ou mais instruções Transact-SQL. @tsql pode ser nvarchar(n) ou nvarchar(max).

@params [ = ] N'params'

@params fornece uma cadeia de caracteres de declaração para parâmetros para @tsql, que é semelhante a sp_executesql. Os parâmetros podem ser nvarchar(n) ou nvarchar(max).

Uma cadeia de caracteres que contém as definições de todos os parâmetros inseridos no Transact-SQL_batch. A cadeia de caracteres deve ser uma constante Unicode ou uma variável Unicode. Cada definição de parâmetro consiste em um nome de parâmetro e um tipo de dados. n é um espaço reservado que indica definições de parâmetro adicionais. n é um espaço reservado que indica definições de parâmetro adicionais. Cada parâmetro especificado na instrução deve ser definido em @params. Se a instrução Transact-SQL ou o lote na instrução não contiver parâmetros, @params não será necessário. NULL é o valor padrão para esse parâmetro.

Valor retornado

0 indica sucesso. Qualquer outra coisa indica falha.

Conjunto de resultados

sp_describe_parameter_encryption Retorna dois conjuntos de resultados:

  • O conjunto de resultados que descreve as chaves criptográficas configuradas para colunas de banco de dados, os parâmetros da instrução Transact-SQL especificada correspondem.

  • O conjunto de resultados que descreve como determinados parâmetros devem ser criptografados. Esse conjunto de resultados faz referência às chaves descritas no primeiro conjunto de resultados.

Cada linha do primeiro conjunto de resultados descreve um par de chaves: uma chave de criptografia de coluna criptografada e sua CMK (chave mestra de coluna) correspondente.

Nome da coluna Tipo de dados Descrição
column_encryption_key_ordinal int ID da linha no conjunto de resultados.
database_id int ID do banco de dados.
column_encryption_key_id int A ID da chave de criptografia de coluna.

Observação: esse ID indica uma linha na exibição do catálogo sys.column_encryption_keys .
column_encryption_key_version int Reservado para uso futuro. Atualmente, sempre contém 1.
column_encryption_key_metadata_version binary(8) Um carimbo de data/hora que representa a hora de criação da chave de criptografia de coluna.
column_encryption_key_encrypted_value varbinary(4000) O valor criptografado da chave de criptografia de coluna.
column_master_key_store_provider_name sysname O nome do provedor do repositório de chaves que contém a CMK, que foi usado para produzir o valor criptografado da chave de criptografia de coluna.
column_master_key_path nvarchar(4000) O caminho da chave da CMK, que foi usado para produzir o valor criptografado da chave de criptografia de coluna.
column_encryption_key_encryption_algorithm_name sysname O nome do algoritmo de criptografia usado para produzir o valor de criptografia da chave de criptografia da coluna.

Cada linha do segundo conjunto de resultados contém metadados de criptografia para um parâmetro.

Nome da coluna Tipo de dados Descrição
parameter_ordinal int ID da linha no conjunto de resultados.
parameter_name sysname Nome de um dos parâmetros especificados no argumento @params.
column_encryption_algorithm tinyint Código que indica o algoritmo de criptografia configurado para a coluna à qual o parâmetro corresponde. O valor atualmente suportado é 2 para AEAD_AES_256_CBC_HMAC_SHA_256.
column_encryption_type tinyint Código que indica o tipo de criptografia configurado para a coluna, o parâmetro corresponde. Os valores com suporte são:

0 - texto simples (a coluna não é criptografada)
1 - criptografia determinística
2 - criptografia aleatória.
column_encryption_key_ordinal int Código da linha no primeiro conjunto de resultados. A linha referenciada descreve a chave de criptografia de coluna configurada para a coluna à qual o parâmetro corresponde.
column_encryption_normalization_rule_version tinyint Número da versão do algoritmo de normalização de tipo.

Comentários

Um driver de cliente do SQL Server, com suporte a Always Encrypted, chama sp_describe_parameter_encryption automaticamente para recuperar metadados de criptografia para consultas parametrizadas emitidas pelo aplicativo. Em seguida, o driver usa os metadados de criptografia para criptografar os valores dos parâmetros que correspondem às colunas do banco de dados protegidas com Always Encrypted. Ele substitui os valores de parâmetro de texto não criptografado enviados pelo aplicativo, pelos valores de parâmetro criptografados, antes de enviar a consulta ao mecanismo de banco de dados.

Permissões

Exija as permissões VIEW ANY COLUMN ENCRYPTION KEY DEFINITION e VIEW ANY COLUMN MASTER KEY DEFINITION no banco de dados.

Exemplos

O exemplo a seguir trunca o valor de ENCRYPTED_VALUE, para fins de exibição.

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';

Aqui está o primeiro conjunto de resultados:

Coluna Valor
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

Aqui está o segundo conjunto de resultados:

Coluna Valor
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