OPEN SYMMETRIC KEY (Transact-SQL)
适用于:SQL Server
Azure SQL 数据库
azure Synapse Analytics Azure 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'
注意
若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档。
参数
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)