OPEN SYMMETRIC KEY (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

Descifra una clave simétrica, que queda disponible para su uso.

Convenciones de sintaxis de Transact-SQL

Nota

El grupo de SQL sin servidor no admite esta sintaxis en Azure Synapse Analytics.

Sintaxis

OPEN SYMMETRIC KEY Key_name DECRYPTION BY <decryption_mechanism>  
  
<decryption_mechanism> ::=  
    CERTIFICATE certificate_name [ WITH PASSWORD = 'password' ]  
    |  
    ASYMMETRIC KEY asym_key_name [ WITH PASSWORD = 'password' ]  
    |  
    SYMMETRIC KEY decrypting_Key_name  
    |  
    PASSWORD = 'decryption_password'  

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.

Argumentos

Key_name
Es el nombre de la clave simétrica que se va a abrir.

CERTIFICATE certificate_name
Es el nombre de un certificado cuya clave privada se usará para descifrar la clave simétrica.

ASYMMETRIC KEY asym_key_name
Es el nombre de una clave asimétrica cuya clave privada se usará para descifrar la clave simétrica.

WITH PASSWORD ='password'
Es la contraseña utilizada para cifrar la clave privada del certificado o clave asimétrica.

SYMMETRIC KEY decrypting_key_name
Es el nombre de una clave simétrica que se usará para descifrar la clave simétrica que se va a abrir.

PASSWORD ='password'
Es la contraseña utilizada para proteger la clave simétrica.

Comentarios

Las claves simétricas abiertas están enlazadas a la sesión, no al contexto de seguridad. Una clave abierta seguirá disponible hasta que se cierre explícitamente o hasta que finalice la sesión. Si se abre una clave simétrica y después se cambia el contexto, la clave permanecerá abierta y estará disponible en el contexto representado. Se pueden abrir varias claves a la vez. Puede consultar la información sobre las claves simétricas abiertas en la vista de catálogo sys.openkeys (Transact-SQL).

Si la clave simétrica se cifró con otra clave, debe abrirse esta clave primero.

Si la clave simétrica ya está abierta, la consulta es NO_OP.

Si la contraseña, la clave o el certificado suministrado para descifrar la clave simétrica es incorrecto, la consulta dará un error.

Las claves simétricas creadas a partir de proveedores de cifrado no pueden abrirse. Las operaciones de cifrado y descifrado mediante este tipo de clave simétrica se realizan correctamente sin la instrucción OPEN porque el proveedor de cifrado está abriendo y cerrando la clave.

Permisos

El autor de la llamada debe tener algún permiso sobre la clave y no debe tener denegado el permiso VIEW DEFINITION sobre la clave. Según el mecanismo de descifrado, se aplican requisitos adicionales:

  • DECRYPTION BY CERTIFICATE: tener el permiso CONTROL sobre el certificado y conocer la contraseña que cifra la clave privada.

  • DECRYPTION BY ASYMMETRIC KEY: tener el permiso CONTROL sobre la clave asimétrica y conocer la contraseña que cifra su clave privada.

  • DECRYPTION BY PASSWORD: conocer una de las contraseñas utilizadas para cifrar la clave simétrica.

Ejemplos

A. Abrir una clave simétrica usando un certificado

En el ejemplo siguiente se abre la clave simétrica SymKeyMarketing3 y se descifra mediante la clave privada del certificado MarketingCert9.

USE AdventureWorks2022;  
OPEN SYMMETRIC KEY SymKeyMarketing3   
    DECRYPTION BY CERTIFICATE MarketingCert9;  
GO  

B. Abrir una clave simétrica usando otra clave simétrica

En el ejemplo siguiente se abre la clave simétrica MarketingKey11 y se descifra mediante la clave simétrica HarnpadoungsatayaSE3.

USE AdventureWorks2022;  
-- First open the symmetric key that you want for decryption.  
OPEN SYMMETRIC KEY HarnpadoungsatayaSE3   
    DECRYPTION BY CERTIFICATE sariyaCert01;  
-- Use the key that is already open to decrypt MarketingKey11.  
OPEN SYMMETRIC KEY MarketingKey11   
    DECRYPTION BY SYMMETRIC KEY HarnpadoungsatayaSE3;  
GO   

Vea también

CREATE SYMMETRIC KEY (Transact-SQL)
ALTER SYMMETRIC KEY (Transact-SQL)
CLOSE SYMMETRIC KEY (Transact-SQL)
DROP SYMMETRIC KEY (Transact-SQL)
Jerarquía de cifrado
Administración extensible de claves (EKM)