使用 Active Directory 安全组为 Babelfish 设置 Kerberos 身份验证
从 Babelfish 版本 4.2.0 开始,可以使用 Active Directory 安全组为 Babelfish 设置 Kerberos 身份验证。以下是使用 Active Directory 设置 Kerberos 身份验证需要完成的先决条件:
必须按照适用于 Babelfish 的 Kerberos 身份验证中提到的所有步骤进行操作。
确保数据库实例与 Active Directory 关联。为验证这一点,您可以在控制台中或者通过运行 describe-db-instances AWS CLI 命令来查看域成员资格的状态。
数据库实例的状态应为已启用 kerberos。有关了解域成员资格的更多信息,请参阅了解域成员资格。
使用以下查询验证 NetBIOS 域名和 DNS 域名之间的映射:
SELECT netbios_domain_name, fq_domain_name FROM babelfish_domain_mapping;
在继续操作之前,请验证使用单独登录名进行的 Kerberos 身份验证是否符合预期。使用以 Active Directory 用户身份进行 Kerberos 身份验证的连接应该会取得成功。如果您遇到任何问题,请参阅经常发生的错误。
设置 pg_ad_mapping 扩展
必须按照设置 pg_ad_mapping 扩展中提到的所有步骤进行操作。要验证扩展是否已安装,请从 TDS 端点运行以下查询:
1>
SELECT extname, extversion FROM pg_extension where extname like 'pg_ad_mapping';2>
GO extname extversion ------------- ---------- pg_ad_mapping 0.1 (1 rows affected)
管理组登录名
按照管理登录信息中提到的步骤创建组登录名。我们建议登录名与 Active Directory(AD)安全组名称相同以便于维护,但这不是强制性要求。例如:
CREATE LOGIN [corp\accounts-group] FROM WINDOWS [WITH DEFAULT_DATABASE=database]
审计和日志记录
要确定 AD 安全主体身份,请使用以下命令:
1>
select suser_name();2>
GO suser_name ---------- corp\user1 (1 rows affected)
目前,AD 用户身份在日志中不可见。可以开启 log_connections
参数来记录数据库会话建立情况。有关更多信息,请参阅 log_connections。输出包括作为主体的 AD 用户身份,如以下示例所示。然后,与此输出关联的后端 PID 有助于将操作归因回实际 AD 用户。
bbf_group_ad_login@babelfish_db:[615]:LOG: connection authorized: user=bbf_group_ad_login database=babelfish_db application_name=sqlcmd GSS (authenticated=yes, encrypted=yes, principal=user1@CORP.EXAMPLE.COM)