2016-07-12 122 views
0

根据documentation,用户应该有VIEW ANY DEFINITIONALTER ANY CREDENTIAL查看凭据。问题是,当我授予此权限时,用户可以看到所有凭据。有没有办法限制用户只能在SQL Server 2014中查看一个凭证?SQL Server sys.credentials权限

+0

你看过模块签名吗?也就是说,创建一个存储过程,然后使用'create signature'对其进行签名(并根据签名的证书授予权限)。 –

回答

0

您创建一个新的视图对象,该对象根据当前的用户登录名(例如,当前位置)查看sys.credentials表。

CREATE VIEW dbo.GetAllowedCredentials 
AS 
SELECT c.credential_id, 
     c.name, 
     c.credential_identity, 
     c.create_date, 
     c.modify_date, 
     c.target_type, 
     c.target_id 
FROM sys.credentials AS c 
INNER JOIN sys.server_principals AS sp ON sp.credential_id = c.credential_id 
WHERE sp.name = ORIGINAL_LOGIN(); 

您可以根据需要对此视图应用权限。