2009-06-30 50 views
0

我试图在SQL Server 2005中创建一个对称密钥,并将其限制为只有sa和应用程序用户帐户。所有其他帐户在尝试打开时都会出现错误。格兰特对称只有2个用户的密钥访问

下面是我如何创建它。我改变了这个问题的名称。

CREATE CERTIFICATE My_Certificate 
    WITH SUBJECT = 'My Cert Subject'; 
GO 

CREATE SYMMETRIC KEY My_Key 
    WITH ALGORITHM = AES_256 
    ENCRYPTION BY CERTIFICATE My_Certificate; 
GO 

在这一点上,即使我没有给它的权限,我的应用程序用户可以打开密钥。如果我拒绝[public]组,即使稍后将其直接授予应用用户,我也无法打开该密钥。我不想单独拒绝每个用户,因为我不知道生产中存在哪些用户。我还希望任何创建的新用户都无法访问此密钥。

拒绝和我使用GRANT线路有:

DENY VIEW DEFINITION ON SYMMETRIC KEY :: My_Key TO [public] 
GRANT VIEW DEFINITION ON SYMMETRIC KEY :: My_Key TO [AppUser] 

回答

1

谁拥有密钥?你的应用如何访问密钥?所有权链接是否有机会扮演任何角色? AppUser属于哪些组和角色?

什么权限fn_my_permissions('My_Key', 'SYMMETRIC KEY')当由AppUser执行时(在密钥创建后)返回?

更新:在fn_my_permissions可固定式

+0

固定错字我创造了我自己的帐户的关键。我在存储过程的开始部分打开密钥并进行加密或解密,如下所示:http://msdn.microsoft.com/en-us/library/ms179331.aspx AppUser属于公共服务器角色并且在数据库本身上是db_owner,public。 fn_my_permissions()不返回任何结果。 – AndyMcKenna 2009-07-01 15:09:44