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 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 que são protegidas usando o recurso Always Encrypted. Retorna metadados de criptografia para os parâmetros que correspondem a colunas criptografadas.
Sintaxe
sp_describe_parameter_encryption
[ @tsql = ] N'tsql'
[ , [ @params = ] N'@parameter_name data_type [ , ... n ]' ]
[ ; ]
Argumentos
Importante
Os argumentos para procedimentos armazenados estendidos devem ser inseridos na ordem específica, conforme descrito na seção de sintaxe. Se os parâmetros forem inseridos fora de ordem, ocorrerá uma mensagem de erro.
[ @tsql = ] 'tsql'
Uma ou mais Transact-SQL declarações. @tsql pode ser nvarchar(n) ou nvarchar(max).
[ @params = ] N'@parameter_namedata_type [ ,... n ]»
@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 incorporados 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âmetros adicionais.
n é um espaço reservado que indica definições de parâmetros adicionais. Cada parâmetro especificado na instrução deve ser definido em @params. Se a instrução Transact-SQL ou 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 de retorno
0
indica sucesso. Qualquer outra coisa indica fracasso.
Conjunto de resultados
sp_describe_parameter_encryption
retorna dois conjuntos de resultados:
O conjunto de resultados que descreve 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. Este 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 chave mestra de coluna correspondente (CMK).
Nome da coluna | Tipo de dados | Descrição |
---|---|---|
column_encryption_key_ordinal |
int | ID da linha no conjunto de resultados. |
database_id |
int | ID da base de dados. |
column_encryption_key_id |
int | O ID da chave de criptografia da coluna. Nota: este ID indica uma linha na vista de 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 |
binário(8) | Um carimbo de data/hora que representa a hora de criação da chave de criptografia da coluna. |
column_encryption_key_encrypted_value |
varbinary(4000) | O valor criptografado da chave de criptografia da coluna. |
column_master_key_store_provider_name |
sysname | O nome do provedor para o armazenamento 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 da coluna. |
column_encryption_key_encryption_algorithm_name |
sysname | O nome do algoritmo de encriptação utilizado para produzir o valor de encriptação da chave de encriptação 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 |
minúsculo | Código que indica o algoritmo de encriptação configurado para a coluna a que o parâmetro corresponde. O valor suportado atualmente é 2 para AEAD_AES_256_CBC_HMAC_SHA_256 . |
column_encryption_type |
minúsculo | Código que indica o tipo de criptografia configurado para a coluna, o parâmetro corresponde a. Os valores suportados são:0 - texto simples (a coluna não está encriptada)1 - encriptação determinística2 - encriptação 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, a qual o parâmetro corresponde. |
column_encryption_normalization_rule_version |
minúsculo | 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 automaticamente sp_describe_parameter_encryption
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âmetros de texto simples enviados pelo aplicativo, pelos valores de parâmetros criptografados, antes de enviar a consulta para o mecanismo de banco de dados.
Permissões
Exija as permissões de 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 para 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 |
Conteúdo relacionado
- Sempre criptografado
- Desenvolver aplicações utilizando Always Encrypted