将 T-SQL 组登录名与 AD 安全组进行映射
您需要为每个要求访问数据库服务器的 AD 安全组显式预置 T-SQL Windows 组登录名。属于至少一个预置 AD 安全组的 AD 用户将获得访问数据库服务器的权限。
注意
此 T-SQL 登录名无法再使用基于密码的身份验证进行身份验证。
例如,accounts-group 是 AD 中的一个安全组,如果您希望在 Babelfish 中预置该安全组,则必须使用 [corp\accounts-group] 格式。
-
AD 安全组:accounts-group
-
TSQL 登录名:[corp\accounts-group]
-
给定 TSQL 登录名的等效 PG 角色:accounts-group@CORP.EXAMPLE.COM
管理员现在可以通过以下 psql 命令,从 PostgreSQL 端点创建 AD 安全组和 T-SQL 登录名之间的映射。有关函数用法的更多信息,请参阅使用 pg_ad_mapping 扩展中的函数。
注意
添加映射时,应以 login_name@FQDN 格式指定 T-SQL 登录名。通过 TDS 端点进行连接时,将忽略权重。有关使用权重的更多信息,请参阅通过 PostgreSQL 端口上的 PostgreSQL 端点连接到 Babelfish。
postgres=>select pgadmap_set_mapping('accounts-group', 'accounts-group@CORP.EXAMPLE.COM', <SID>, <Weight>);
有关检索 AD 安全组的 SID 的信息,请参阅在 PowerShell 中检索 Active Directory 组 SID。
下表显示了从 AD 安全组到 T-SQL 登录名的示例映射:
AD 安全组 | TSQL 登录名 | 给定 TSQL 登录名的等效 PG 角色 | 权重 |
---|---|---|---|
accounts-group |
[corp\accounts-group] |
accounts-group@CORP.EXAMPLE.COM |
7 |
sales-group |
[corp\sales-group] |
sales-group@CORP.EXAMPLE.COM |
10 |
dev-group |
[corp\dev-group] |
dev-group@CORP.EXAMPLE.COM |
7 |
postgres=> select admap.ad_sid, admap.ad_grp, lgn.orig_loginname, lgn.rolname, admap.weight from pgadmap_read_mapping() as admap, sys.babelfish_authid_login_ext as lgn where admap.pg_role = lgn.rolname; ad_sid | ad_grp | orig_loginname | rolname | weight --------------+----------------+---------------------+---------------------------------+-------- S-1-5-67-890 | accounts-group | corp\accounts-group | accounts-group@CORP.EXAMPLE.COM | 7 S-1-2-34-560 | sales-group | corp\sales-group | sales-group@CORP.EXAMPLE.COM | 10 S-1-8-43-612 | dev-group | corp\dev-group | dev-group@CORP.EXAMPLE.COM | 7 (7 rows)