适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
Microsoft Fabric 中的 SQL 数据库
解密对称密钥并使其可供使用。
Note
Azure Synapse Analytics 中的无服务器 SQL 池不支持此语法。
Syntax
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
要打开的对称密钥的名称。
CERTIFICATE
certificate_name
证书的名称,该证书的私钥将用于解密对称密钥。
ASYMMETRIC KEY
asym_key_name
非对称密钥的名称,该密钥的私钥将用于解密对称密钥。
WITH PASSWORD ='password'
用于解密证书或非对称密钥的私钥的密码。
SYMMETRIC KEY
decrypting_key_name
对称密钥的名称,该密钥将用于解密正在打开的对称密钥。
PASSWORD ='password'
用于保护对称密钥的密码。
Remarks
打开的对称密钥将绑定到会话而不是安全上下文。 打开的密钥将持续有效,直到它显式关闭或会话终止。 如果您打开一个对称密钥然后切换上下文,则该密钥将保持打开状态并在模拟的上下文中可用。 你可以一次打开多个密钥。 可以在 sys.openkeys (Transact-SQL) 目录视图中查看有关打开的对称密钥的信息。
如果对称密钥由另一个密钥加密,则必须首先打开该密钥。
如果对称密钥已打开,则查询为 NO_OP。
如果所提供的用于解密对称密钥的密码、证书或密钥不正确,则查询将失败。
无法打开使用加密提供程序创建的对称密钥。 没有 OPEN 语句,使用此类对称密钥的加密和解密操作也会成功,因为加密提供程序会打开和关闭密钥。
Permissions
呼叫者必须对密钥有一定权限,且不得被拒绝 VIEW 对密钥的定义权限。 其他权限要求因解密机制的而异:
解密: CERTIFICATE对证书的控制权限以及加密私钥密码的知识。
解密: ASYMMETRIC KEY对非对称密钥的控制权限以及对加密私钥密码的知情。
DECRYPTION BY PASSWORD:知道用于加密对称密钥的密码之一。
Examples
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)