sp_describe_parameter_encryption (Transact-SQL)
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores Azure SQL Database Azure SQL Managed Instance
Analiza la instrucción Transact-SQL especificada y sus parámetros para determinar qué parámetros corresponden a columnas de base de datos protegidas mediante la característica Always Encrypted. Devuelve los metadatos de cifrado de los parámetros que corresponden a columnas cifradas.
Sintaxis
sp_describe_parameter_encryption
[ @tsql = ] N'tsql'
[ , [ @params = ] N'@parameter_name data_type [ , ... n ]' ]
[ ; ]
Argumentos
[ @tsql = ] 'tsql'
Una o varias instrucciones Transact-SQL. @tsql puede ser nvarchar(n) o nvarchar(max).
[ @params = ] N'@parameter_name data_type [ ,... n ]'
@params proporciona una cadena de declaración para los parámetros de @tsql, que es similar a sp_executesql
. Los parámetros pueden ser nvarchar(n) o nvarchar(max).
Cadena que contiene las definiciones de todos los parámetros incrustados en transact-SQL_batch. La cadena debe ser una constante Unicode o una variable Unicode. Cada definición de parámetro se compone de un nombre de parámetro y un tipo de datos. n es un marcador de posición que indica definiciones de parámetros adicionales. n es un marcador de posición que indica definiciones de parámetros adicionales. Todos los parámetros especificados en la instrucción deben definirse en @params. Si la instrucción Transact-SQL o el lote de la instrucción no contiene parámetros, no se requiere @params . NULL
es el valor predeterminado de este parámetro.
Valor devuelto
0
indica que se ha realizado correctamente. Cualquier otra cosa indica un error.
Conjunto de resultados
sp_describe_parameter_encryption
devuelve dos conjuntos de resultados:
El conjunto de resultados que describe las claves criptográficas configuradas para las columnas de base de datos, los parámetros de la instrucción Transact-SQL especificada corresponden a.
Conjunto de resultados que describe cómo se deben cifrar parámetros concretos. Este conjunto de resultados hace referencia a las claves descritas en el primer conjunto de resultados.
Cada fila del primer conjunto de resultados describe un par de claves: una clave de cifrado de columna cifrada y su clave maestra de columna correspondiente (CMK).
Nombre de la columna | Tipo de datos | Descripción |
---|---|---|
column_encryption_key_ordinal |
int | Id. de la fila en el conjunto de resultados. |
database_id |
int | Id. de la base de datos. |
column_encryption_key_id |
int | Identificador de clave de cifrado de columna. Nota: este identificador indica una fila en la vista de catálogo de sys.column_encryption_keys . |
column_encryption_key_version |
int | Reservado para uso futuro. Actualmente, siempre contiene 1 . |
column_encryption_key_metadata_version |
binary(8) | Marca de tiempo que representa la hora de creación de la clave de cifrado de columna. |
column_encryption_key_encrypted_value |
varbinary(4000) | Valor cifrado de la clave de cifrado de columna. |
column_master_key_store_provider_name |
sysname | Nombre del proveedor del almacén de claves que contiene la CMK, que se usó para generar el valor cifrado de la clave de cifrado de columna. |
column_master_key_path |
nvarchar(4000) | Ruta de acceso de la clave de CMK, que se usó para generar el valor cifrado de la clave de cifrado de columna. |
column_encryption_key_encryption_algorithm_name |
sysname | Nombre del algoritmo de cifrado usado para generar el valor de cifrado de la clave de cifrado de columna. |
Cada fila del segundo conjunto de resultados contiene metadatos de cifrado para un parámetro.
Nombre de la columna | Tipo de datos | Descripción |
---|---|---|
parameter_ordinal |
int | Identificador de la fila del conjunto de resultados. |
parameter_name |
sysname | Nombre de uno de los parámetros especificados en el argumento @params . |
column_encryption_algorithm |
tinyint | Código que indica el algoritmo de cifrado configurado para la columna a la que corresponde el parámetro . El valor admitido actualmente es 2 para AEAD_AES_256_CBC_HMAC_SHA_256 . |
column_encryption_type |
tinyint | Código que indica el tipo de cifrado configurado para la columna, el parámetro corresponde. Los valores admitidos son:0 - texto no cifrado (la columna no está cifrada)1 - cifrado determinista2 : cifrado aleatorio. |
column_encryption_key_ordinal |
int | Código de la fila del primer conjunto de resultados. La fila a la que se hace referencia describe la clave de cifrado de columna configurada para la columna, el parámetro corresponde. |
column_encryption_normalization_rule_version |
tinyint | Número de versión del algoritmo de normalización de tipos. |
Comentarios
Un controlador cliente de SQL Server, compatible con Always Encrypted, llama sp_describe_parameter_encryption
automáticamente a para recuperar metadatos de cifrado para las consultas con parámetros emitidas por la aplicación. A continuación, el controlador usa los metadatos de cifrado para cifrar los valores de los parámetros que corresponden a las columnas de base de datos protegidas con Always Encrypted. Sustituye los valores de parámetro de texto no cifrado enviados por la aplicación, con los valores de parámetro cifrados, antes de enviar la consulta al motor de base de datos.
Permisos
Solicite los permisos VIEW ANY COLUMN ENCRYPTION KEY DEFINITION
y VIEW ANY COLUMN MASTER KEY DEFINITION
en la base de datos.
Ejemplos
En el ejemplo siguiente se trunca el valor para ENCRYPTED_VALUE
, con fines de presentación.
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';
Este es el primer conjunto de resultados:
Columna | 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 |
Este es el segundo conjunto de resultados:
Columna | 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 |