使用 Active Directory 安全组为 Babelfish 设置 Kerberos 身份验证 - Amazon Aurora

使用 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)