如何在 SQL Server 2008 中分配整个 Active Directory 组的安全访问权限?

Mic*_*eth 41 sql-server-2008 security sql-server role active-directory

我想在我的内部应用程序中使用集成安全性,这些应用程序都在一个域中。不幸的是,我一直无法让它正常工作。我想在 SQL Server 中为整个 Exchange (Active Directory) 组分配一个角色,以便对某些表进行读/写访问。这样我就不必在有人被雇用时创建操作员或在有人被解雇时删除操作员。这可能吗?我将采取哪些步骤来做到这一点?

gbn*_*gbn 52

  • 将 AD 组设置为登录名。“登录”意味着服务器级登录,而不是用户/登录的 AD 概念。在 SQL Server 中,这是一个服务器级主体
  • 在其中创建映射用户。您不应该真正在表上直接授予用户权限。并且“用户”是指数据库用户,而不是用户的 AD 概念:在 SQL Server 中,这是一个“数据库级主体”
  • 将用户添加到角色(也是“数据库级主体”)
  • 授予表上角色的权限(表或 proc 等是“安全的”)

示例脚本

USE master;
GO
CREATE LOGIN [MYDOMAIN\APPLICATION SUPPORT] FROM WINDOWS;
GO
USE mydb;
GO
CREATE USER [MYDOMAIN\APPLICATION SUPPORT] FROM LOGIN [MYDOMAIN\APPLICATION SUPPORT];
GO
CREATE ROLE rSupport;
GO
EXEC sp_addrolemember 'rSupport', 'MYDOMAIN\APPLICATION SUPPORT';
GO
GRANT SELECT, INSERT,UPDATE, etc ON Mytable TO rSupport;
GO
Run Code Online (Sandbox Code Playgroud)

sp_addrolemember从 SQL Server 2012 开始不推荐使用,ALTER ROLE应改为使用。

  • 有助于解释为什么应该为角色而不是 SQL 用户(在本例中为 AD 组)分配权限。 (3认同)

Eve*_*ien 8

marc_s回答“如何将 Active Directory 用户组添加为 SQL Server 中的登录名”

在 SQL Server Management Studio 中,转到Object Explorer > (your server) > Security > Logins并右键单击New Login

在此处输入图片说明

然后在弹出的对话框中,选择要查看的对象类型(Groups默认情况下禁用 - 检查它!)并选择要查找对象的位置(例如 use Entire Directory),然后找到您的 AD 组.

在此处输入图片说明

您现在拥有一个常规的 SQL Server 登录名 - 就像您为单个 AD 用户创建一个登录名一样。授予新登录所需的数据库权限,然后就可以了!

该 AD 组的任何成员现在都可以登录 SQL Server 并使用您的数据库。

  • 我的意见也是不变的。评论中的链接所传达的信息与网页上的实际图像不同。“秀,别说。” (6认同)
  • 链接到那个 SO 答案可能很有用,但您没有在帖子中添加任何新内容,是吗。您可以将链接作为评论发布。 (2认同)
  • 答案有一个很好的屏幕截图,用于检查对象类型下的组,因为这是我尝试执行此操作时所缺少的。在我看来,链接并没有以有用的方式显示它。只是想帮助下一个人...... (2认同)