无法通过证书将对称密钥作为SQL用户帐户打开

M K*_* II 2 encryption certificate sql-server-2008

我使用这样的证书创建我的密钥:

CREATE SYMMETRIC KEY some_Key_01
WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE myCert;
GO

GRANT VIEW DEFINITION ON CERTIFICATE::myCert TO sqlUser;
GO

GRANT VIEW DEFINITION ON SYMMETRIC KEY::some_Key_01 TO sqlUser;
GO

然后我试着打开它,像这样:

OPEN SYMMETRIC KEY some_Key_01
DECRYPTION BY CERTIFICATE myCert;
GO
SELECT CONVERT(datetime, DecryptByKey(EncryptedField))
AS 'DecryptedField'
FROM MyTable;
GO

但我收到的消息是:
Msg 15151, Level 16, State 1, Line 23
Cannot find the certificate 'myCert', because it does not exist or you do not have permission.

小智 6

您需要拥有control证书的权限:

GRANT CONTROL ON CERTIFICATE::myCert TO sqlUser;
GO
Run Code Online (Sandbox Code Playgroud)

并授予references关键权限:

GRANT REFERENCES ON SYMMETRIC KEY::some_Key_01 TO sqlUser;
GO
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.介意我问,为什么参考关键?为什么不只是查看定义?另外,为什么控制,而不是证书上的某些权限子集? (2认同)