时,这是SQL Server 2005或更高版本,但我很想知道,如果SQL服务器以同样的方式2000点可以。考虑以下情况。解决权限使用SQL Server的Windows身份验证
两个SQL Server的Windows身份验证登录登录名为Windows组:
MyDomain\Group1
MyDomain\Group2
与映射到这些登录的两个用户的数据库:
USE MyDatabase
CREATE USER [User1] FOR LOGIN [MyDomain\Group1]
CREATE USER [User2] FOR LOGIN [MyDomain\Group2]
用户1和用户被授予不相交数据库中的权限,例如:
GRANT SELECT ON Table1 TO User1
DENY SELECT ON Table1 TO User2
GRANT SELECT ON Table2 TO User2
DENY SELECT ON Table2 TO User1
客户端连接到SQL Ser使用属于MyDomain\Group1
和MyDomain\Group2
的Windows身份。
客户端映射到哪个数据库用户?即SELECT USER_NAME()
是否退回User1
或User2
?
客户端有什么权限?是否有确定客户端连接为User1或User2的定义的优先级?这在BOL中记录在哪里?
背景
这涉及目前由多个应用程序,每一个目前拥有自己的SQL Server登录访问的数据库,对数据库对象应用程序特定的权限。
我想切换到使用Windows身份验证来提高安全性,我宁愿使用Windows组而不是用户的灵活性(我不希望DBA必须管理所有个人用户的登录名)。
但是给定的用户可以使用多个应用程序(因此是多个Windows组映射到SQL登录的一个成员),因此在一个数据库用户的连接的映射歧义的潜力。
我GOOGLE搜索和联机丛书,并不能找到上含糊不清,例如如何解决(例如优先级规则)的明确信息。
任何提示和最佳做法是除了回答上述问题欢迎。
我纠正了第二个DENY。 “我认为它应该适用于组,而不是用户” - 我不明白你在说什么:GRANT/DENY需要数据库用户,而不是登录。我真正想知道哪个数据库用户是一个匹配两个登录名的客户端被映射到的。 – Joe
是的,对不起,术语“用户”使我困惑,因为他们映射到(Windows)组。我的错。 – Lucero
+1博客文章回答了我想要的大部分内容。但是仍然不清楚隐式创建的用户使用了哪些优先规则(如果有的话)。 – Joe