OPEN SYMMETRIC KEY (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Base de données SQL dans Microsoft Fabric

Déchiffre une clé symétrique et la met à disposition pour l'utiliser.

Conventions de la syntaxe Transact-SQL

Notes

Cette syntaxe n’est pas prise en charge par le pool SQL serverless dans Azure Synapse Analytics.

Syntaxe

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'  

Arguments

KEY_NAME
Nom de la clé symétrique à ouvrir.

CERTIFICATE certificate_name
Nom du certificat dont la clé privée sera utilisée pour déchiffrer la clé symétrique.

ASYMMETRIC KEY asym_key_name
Nom de la clé asymétrique dont la clé privée sera utilisée pour déchiffrer la clé symétrique.

WITH PASSWORD ='password'
Mot de passe utilisé pour chiffrer la clé privée du certificat ou la clé asymétrique.

SYMMETRIC KEY decrypting_key_name
Nom de la clé symétrique qui sera utilisée pour déchiffrer la clé symétrique en cours d'ouverture.

PASSWORD ='password'
Mot de passe utilisé pour protéger la clé symétrique.

Remarques

Les clés symétriques ouvertes sont liées à la session et non au contexte de sécurité. Une clé ouverte est disponible tant qu'elle n'a pas été explicitement fermée ou que la session n'a pas été arrêtée. Si vous ouvrez une clé symétrique puis vous changez de contexte, la clé reste ouverte et disponible dans le contexte de substitution. Plusieurs clés peuvent être ouvertes en même temps. Des informations relatives aux clés symétriques ouvertes sont consultables dans la vue de catalogue sys.openkeys (Transact-SQL).

Si la clé symétrique a été chiffrée avec une autre clé, celle-ci doit être ouverte d'abord.

Si la clé symétrique est déjà ouverte, la requête est NO_OP.

Si le mot de passe, le certificat ou la clé fournie pour déchiffrer la clé symétrique est incorrecte, la requête échoue.

Les clés symétriques créées à partir d'un fournisseur de chiffrement ne peuvent pas être ouvertes. Les opérations de chiffrement et déchiffrement utilisant ce type de clé symétrique s’exécutent sans l’instruction OPEN car le fournisseur de chiffrement ouvre et ferme la clé.

Autorisations

L'appelant doit disposer d'une autorisation sur la clé, et l'autorisation VIEW DEFINITION ne doit pas lui avoir été refusée sur la clé. D'autres conditions existent qui dépendent du mode de déchiffrement :

  • DECRYPTION BY CERTIFICATE : autorisation CONTROL sur le certificat et connaissance du mot de passe qui chiffre la clé privée.

  • DECRYPTION BY ASYMMETRIC KEY : autorisation CONTROL sur la clé asymétrique et connaissance du mot de passe qui chiffre la clé privée.

  • DECRYPTION BY PASSWORD : connaissance de l'un des mots de passe utilisés pour chiffrer la clé symétrique.

Exemples

R. Ouverture d'une clé symétrique à l'aide d'un certificat

L'exemple suivant ouvre la clé symétrique SymKeyMarketing3 et la déchiffre à l'aide de la clé privée du certificat MarketingCert9.

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

B. Ouverture d'une clé symétrique à l'aide d'une autre clé symétrique

L'exemple suivant ouvre la clé symétrique MarketingKey11 et la déchiffre à l'aide de la clé symétrique 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   

Voir aussi

CREATE SYMMETRIC KEY (Transact-SQL)
ALTER SYMMETRIC KEY (Transact-SQL)
CLOSE SYMMETRIC KEY (Transact-SQL)
DROP SYMMETRIC KEY (Transact-SQL)
Hiérarchie de chiffrement
Gestion de clés extensible (EKM)