OPEN SYMMETRIC KEY (Transact-SQL)

适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics

解密对称密钥并使其可供使用。

Transact-SQL 语法约定

注意

Azure Synapse Analytics 中的无服务器 SQL 池不支持此语法。

语法

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'  

参数

Key_name
要打开的对称密钥的名称。

CERTIFICATE certificate_name
证书的名称,该证书的私钥将用于解密对称密钥。

ASYMMETRIC KEY asym_key_name
非对称密钥的名称,该密钥的私钥将用于解密对称密钥。

WITH PASSWORD ='password'
用于解密证书或非对称密钥的私钥的密码。

SYMMETRIC KEY decrypting_key_name
对称密钥的名称,该密钥将用于解密正在打开的对称密钥。

PASSWORD ='password'
用于保护对称密钥的密码。

注解

打开的对称密钥将绑定到会话而不是安全上下文。 打开的密钥将持续有效,直到它显式关闭或会话终止。 如果您打开一个对称密钥然后切换上下文,则该密钥将保持打开状态并在模拟的上下文中可用。 你可以一次打开多个密钥。 可以在 sys.openkeys (Transact-SQL) 目录视图中查看有关打开的对称密钥的信息。

如果对称密钥由另一个密钥加密,则必须首先打开该密钥。

如果对称密钥已打开,则查询为 NO_OP

如果所提供的用于解密对称密钥的密码、证书或密钥不正确,则查询将失败。

无法打开使用加密提供程序创建的对称密钥。 没有 OPEN 语句,使用此类对称密钥的加密和解密操作也会成功,因为加密提供程序会打开和关闭密钥。

权限

调用方必须具有对密钥的某些权限,并且必须未被拒绝授予对密钥的 VIEW DEFINITION 权限。 其他权限要求因解密机制的而异:

  • DECRYPTION BY CERTIFICATE:具有对证书的 CONTROL 权限并且知道加密其私钥的密码。

  • DECRYPTION BY ASYMMETRIC KEY:具有对非对称密钥的 CONTROL 权限并知道加密其私钥的密码。

  • DECRYPTION BY PASSWORD:知道用于加密对称密钥的密码之一。

示例

A. 使用证书打开对称密钥

以下示例使用 SymKeyMarketing3 证书的私钥打开对称密钥 MarketingCert9 并对其进行解密。

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

B. 使用另一对称密钥打开对称密钥

以下示例使用对称密钥 MarketingKey11 打开对称密钥 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   

另请参阅

CREATE SYMMETRIC KEY (Transact-SQL)
ALTER SYMMETRIC KEY (Transact-SQL)
CLOSE SYMMETRIC KEY (Transact-SQL)
DROP SYMMETRIC KEY (Transact-SQL)
加密层次结构
可扩展的密钥管理 (EKM)