OPEN SYMMETRIC KEY (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics

Decrittografa una chiave simmetrica e la rende disponibile per l'uso.

Convenzioni relative alla sintassi Transact-SQL

Nota

Questa sintassi non è supportata da pool SQL serverless in Azure Synapse Analytics.

Sintassi

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'  

Argomenti

Key_name
Nome della chiave simmetrica da aprire.

CERTIFICATE certificate_name
Nome del certificato la cui chiave privata verrà utilizzata per decrittografare la chiave simmetrica.

ASYMMETRIC KEY asym_key_name
Nome della chiave asimmetrica la cui chiave privata verrà utilizzata per decrittografare la chiave simmetrica.

WITH PASSWORD ='password'
Password utilizzata per crittografare la chiave privata del certificato o la chiave asimmetrica.

SYMMETRIC KEY decrypting_key_name
Nome della chiave simmetrica che verrà utilizzata per decrittografare la chiave simmetrica aperta.

PASSWORD ='password'
Password utilizzata per proteggere la chiave simmetrica.

Osservazioni:

Le chiavi simmetriche aperte sono associate alla sessione, non al contesto di sicurezza. Una chiave aperta resterà disponibile finché non viene chiusa in modo esplicito o la sessione non viene terminata. Se si apre una chiave simmetrica e quindi si cambia contesto, la chiave resterà aperta e disponibile nel contesto rappresentato. È possibile aprire più chiavi contemporaneamente. Le informazioni sulle chiavi simmetriche aperte sono visibili nella vista del catalogo sys.openkeys (Transact-SQL).

Se la chiave simmetrica è stata crittografata con un'altra chiave, è necessario aprire innanzitutto la chiave.

Se la chiave simmetrica è già aperta, la query è di tipo NO_OP.

Se la password, la chiave o il certificato fornito per decrittografare la chiave simmetrica non è corretto, la query non verrà eseguita correttamente.

Non è possibile aprire chiavi simmetriche create da provider di crittografia. Le operazioni di crittografia e decrittografia che usano questo tipo di chiave simmetrica vengono eseguite correttamente senza l'istruzione OPEN dato che è il provider di crittografia ad aprire e chiudere la chiave.

Autorizzazioni

È necessario che il chiamante disponga di un'autorizzazione per la chiave e che non gli sia stata negata l'autorizzazione VIEW DEFINITION per la chiave. I requisisti aggiuntivi possono variare, in base al meccanismo di decrittografia.

  • DECRYPTION BY CERTIFICATE: autorizzazione CONTROL per il certificato e password che crittografa la relativa chiave privata.

  • DECRYPTION BY ASYMMETRIC KEY: autorizzazione CONTROL per la chiave asimmetrica e password che crittografa la relativa chiave privata.

  • DECRYPTION BY PASSWORD: una delle password utilizzate per crittografare la chiave simmetrica.

Esempi

R. Apertura di una chiave simmetrica tramite un certificato

Nell'esempio seguente la chiave simmetrica SymKeyMarketing3 viene aperta e quindi decrittografata tramite la chiave privata del certificato MarketingCert9.

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

B. Apertura di una chiave simmetrica tramite un'altra chiave simmetrica

Nell'esempio seguente la chiave simmetrica MarketingKey11 viene aperta e quindi decrittografata tramite la chiave simmetrica 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   

Vedi anche

CREATE SYMMETRIC KEY (Transact-SQL)
ALTER SYMMETRIC KEY (Transact-SQL)
CLOSE SYMMETRIC KEY (Transact-SQL)
DROP SYMMETRIC KEY (Transact-SQL)
Gerarchia di crittografia
Extensible Key Management (EKM)