SQL Server如何在不明确的情况下处理登录,例如,Windows用户帐户和包含此用户的AD组都存在登录名?具有为用户和包含AD组的用户创建的登录Windows用户的数据库级权限?
我们在Active Directory和来自该AD的组中有Windows用户的SQL Server 2008权限问题。我会试着用一个例子来解释。
想象一下,属于AD群组的Windows域用户DOMAIN\myUser
DOMAIN\SomeGroup
。
在SQL Server中,我有2个数据库SomeAppDb
和PublicDb
。
目标是成为DOMAIN\SomeGroup
成员的所有用户都应该能够访问PublicDb
,但只有DOMAIN\myUser
应该能够访问SomeAppDb
。
最初,在SQL Server中的Windows登录DOMAIN\SomeGroup
(映射到AD组)上的实例创建,一个用户在数据库中PublicDb
适当角色成员创建的,而且效果很好,从组SomeGroup
用户可以访问他们需要的数据PublicDb
。
针对新应用程序的需求,我们希望为数据库SomeAppDb显式访问用户DOMAIN\myUser
,同时仍允许访问PublicDb
。因此,我们在SQL Server中创建一个Windows登录为DOMAIN\myUser
,并且用户在数据库中创建SomeAppDb
,与2
之间的映射从那一刻开始,预期MYUSER可以访问SomeAppDb
,但不能再访问PublicDb
和我们有一样的错误:
Cannot open database "PublicDb" requested by the login. The login failed.
Login failed for user 'DOMAIN\myUser'
我的直觉告诉我,当用户访问SQL Server实例,SQL Server将看到一个登录比赛的Windows用户,而忽略现有的一组用户的登录属于。
一种方法是在用户myUser的db PublicDb上明确添加访问权限,但我宁愿避免使用该解决方案,因为每次我们想要访问新用户时都会强制更新PublicDb,这正是我们试图避免的最初......(我们做了临时修复,希望找到更好的选择)。
有其他人遇到过这个问题吗?有更好的方法吗?
在此先感谢
我的问题也许应该移到http://dba.stackexchange.com? – tsimbalar 2014-12-03 21:22:45
只是好奇,如果你有机会测试任何建议的测试和验证组的成员等事情? – 2014-12-10 04:26:39
本周事情变得很疯狂,但我希望在本周结束之前我会深入一点。谢谢 – tsimbalar 2014-12-10 18:34:04