J.D*_*.D. 3 security sql-server permissions sql-server-2008-r2
我有一个表 SuperSecretData,当前设置为拒绝标准 Active Directory 帐户“域用户”对公司中的每个人进行 SELECT。但是一些特定的个人用户确实需要能够从中选择。实现这一目标的正确方法是什么?
DENY 会覆盖 GRANT,而继承的 DENY 甚至会覆盖直接的 GRANT。模式或数据库级别的 DENY 会覆盖对象级别的 GRANT。
因此,您将无法直接覆盖 DENY。
您可以创建与 SuperSecretData 相同的用户拥有的视图、同义词或存储过程,并授予他们访问权限。
除了我只希望某些特定用户拥有 SELECT 权限的几个表外,是否有更好的方法将 SQL 服务器上的几乎所有实体都授予“域用户”权限?
是的。永远不要使用内置角色,并始终使用模式级授权。然后,您可以创建单独的架构以提高安全性。例如
grant select on schema::dbo to ...
Run Code Online (Sandbox Code Playgroud)
而不是内置角色
alter role db_datareader add . . .
Run Code Online (Sandbox Code Playgroud)
或数据库级授权
grant select to ...
Run Code Online (Sandbox Code Playgroud)