AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 2572
Accepted
Michael Hedgpeth
Michael Hedgpeth
Asked: 2011-05-07 17:43:38 +0800 CST2011-05-07 17:43:38 +0800 CST 2011-05-07 17:43:38 +0800 CST

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

  • 772

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

sql-server sql-server-2008
  • 4 4 个回答
  • 133163 Views

4 个回答

  • Voted
  1. Best Answer
    gbn
    2011-05-08T00:31:50+08:002011-05-08T00:31:50+08:00
    • 将 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。

    • 52
  2. Even Mien
    2016-03-01T20:53:43+08:002016-03-01T20:53:43+08:00

    从marc_s回答“如何在 SQL Server 中添加 Active Directory 用户组作为登录名”:

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

    在此处输入图像描述

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

    在此处输入图像描述

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

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

    • 8
  3. Peter Schofield
    2011-05-08T00:00:34+08:002011-05-08T00:00:34+08:00

    将 SQL Server 中的权限授予 AD 组相对简单。它可以通过 T-SQL 或 Management Studio 完成。

    例如,如果您有一个名为 的 AD 组MYDOMAIN\APPLICATION SUPPORT,您将在服务器级别创建登录,然后使用到各个数据库的映射来提供更精细的权限,例如数据读取器。

    理想情况下,所有应用程序访问都应该通过存储过程*,因此只需要对该数据库中那些存储过程的执行权限。

    * 从安全的角度来看,要允许特定用户查看某些特定数据,您可以创建一个过程并授予用户对该过程的执行权限,仅此而已。允许用户直接查询意味着对所有涉及的表授予选择权限。使用过程也更容易,调试也更容易。

    存储过程抽象表访问并限制访问。对于 DBA 类型,这就像“让我看看你所有的实例变量:我不想使用方法、getter 或 setter”。

    • 4
  4. Piyush Agrawal
    2012-03-01T04:25:20+08:002012-03-01T04:25:20+08:00

    如果用户是在 SQL 中具有 Sysadmin 权限的 DOMAIN\SecurityGroup 的成员,那么在访问数据库时将使用该权限。否则,您需要查看在每个数据库中授予了哪些 DOMAIN\SecurityGroup(s) 权限。如果用户是2个SecurityGroup的成员,SecGroupA有选择权限,SecGroupB有插入权限,则用户可以选择插入。

    • 1

相关问题

  • 死锁的主要原因是什么,可以预防吗?

  • 我在索引上放了多少“填充”?

  • 是否有开发人员遵循数据库更改的“最佳实践”类型流程?

  • 如何确定是否需要或需要索引

  • 从 SQL Server 2008 降级到 2005

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    您如何显示在 Oracle 数据库上执行的 SQL?

    • 2 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    我可以查看在 SQL Server 数据库上运行的历史查询吗?

    • 6 个回答
  • Marko Smith

    如何在 PostgreSQL 中使用 currval() 来获取最后插入的 id?

    • 10 个回答
  • Marko Smith

    如何在 Mac OS X 上运行 psql?

    • 11 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Marko Smith

    将数组参数传递给存储过程

    • 12 个回答
  • Martin Hope
    Manuel Leduc PostgreSQL 多列唯一约束和 NULL 值 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler 什么时候应该将主键声明为非聚集的? 2011-11-11 13:31:59 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    BrunoLM Guid vs INT - 哪个更好作为主键? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick 如何优化大型数据库的 mysqldump? 2011-01-04 13:13:48 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve