从AD组分配的sql server DB中的用户权限

时间:2016-03-10 15:58:06

标签: sql-server active-directory database-administration user-permissions database-security

我们在生产中使用MS SQL Server 2012和MS AD。

让我简单解释一下我们分配用户权限的概念是什么。

对于对某个应用程序有一定访问权限的特定用户组,我们创建AD组并为其分配AD用户。由于此应用程序需要访问其他数据库中的数据,因此我们也将该组添加到该数据库,并为所需对象(特定对象或模式)设置访问/执行权限。

由于某些人使用其他应用程序和数据库,因此它们也会添加到其他AD组中。毫不奇怪,这些组也需要访问某些对象到第二个数据库。

因此,当某些用户位于几个不同的AD组中,并且对DB中的相同对象具有不同的访问权限时,我们就会遇到这种情况。这导致很多"奇怪的"一些用户被拒绝访问DB中的对象时的行为。

我的问题是:

有没有办法找出哪些用户(通过哪个AD组)某些用户对从应用程序触发的某些sql查询进行访问/拒绝?

有人可以解释sql server如何处理这种环境中的权限吗?

我打开任何关于如何完全处理/设置访问的建议,但不涉及重新编程应用程序(仅限DBA站点)。

谢谢。

1 个答案:

答案 0 :(得分:0)

假设您是管理员,您可以在冒充有问题的用户时查看sys.login_tokensys.user_tokensys.fn_my_permissions(),以便了解相关信息。类似的东西:

execute as login='yourDom\User1';
select * from sys.login_token;
select * from sys.user_token;
select * from sys.fn_my_permission('dbo.someObject', 'OBJECT');
revert;