利用 AD 安全组成员资格的权限
继承服务器级权限
属于给定 AD 安全组成员的 AD 用户将继承向映射的 Windows 组登录名授予的服务器级权限。例如,考虑 accounts-group
AD 安全组,该安全组被授予 Babelfish 上 sysadmin
服务器角色的成员资格。可以使用以下命令继承服务器级权限:
1>
ALTER SERVER ROLE sysadmin ADD MEMBER [corp\accounts-group];
因此,属于 accounts-group
AD 安全组成员的任何 Active Directory 用户都将继承与 sysadmin
角色关联的服务器级权限。这意味着,像 corp\user1
这样的用户(属于 accounts-group
的成员)现在可以在 Babelfish 中执行服务器级操作。
注意
要执行服务器级 DDL,单独 AD 用户的 Windows 登录名必须存在。有关更多信息,请参阅 限制。
继承数据库级权限
要授予数据库级权限,必须创建数据库用户并使用 Windows 组登录名进行映射。属于给定 AD 安全组成员的 AD 用户将继承授予该数据库用户的数据库级权限。在以下示例中,可以看到 Windows 组 [corp\accounts-group] 的数据库级权限是如何分配的。
1>
CREATE DATABASE db1;2>
GO1>
USE db1;2>
GO Changed database context to 'db1'.1>
CREATE TABLE dbo.t1(a int);2>
GO
为 Windows 组登录名 [corp\accounts-group] 创建数据库用户 [corp\sales-group]。要执行此步骤,请使用作为 sysadmin 成员的登录名通过 TDS 端点进行连接。
1>
CREATE USER [corp\accounts-group] FOR LOGIN [corp\accounts-group];2>
GO
现在,以 AD 用户 user1 的身份进行连接,来检查表 t1 的访问权限。由于我们尚未授予数据库级权限,因此这会导致权限被拒绝错误。
1>
SELECT * FROM dbo.t1;2>
GO Msg 33557097, Level 16, State 1, Server db-inst, Line 1 permission denied for table t1
向数据库用户 [corp\accounts-group] 授予对表 t1 的 SELECT 权限。要执行此步骤,请使用作为 sysadmin 成员的登录名通过 TDS 端点进行连接。
1>
GRANT SELECT ON dbo.t1 TO [corp\accounts-group];2>
GO
以 AD 用户 user1 的身份进行连接,来验证访问权限。
1>
SELECT * FROM dbo.t1;2>
GO a ----------- (0 rows affected)