一尘不染

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

sql-server

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


阅读 104

收藏
2022-11-04

共1个答案

一尘不染

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

示例脚本

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

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

2022-11-04