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)