对 Aurora MySQL 使用 Kerberos 身份验证 - Amazon Aurora
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

对 Aurora MySQL 使用 Kerberos 身份验证

当用户连接到 Aurora MySQL 数据库集群时,您可以使用 Kerberos 身份验证来验证用户的身份。为此,请将数据库集群配置为使用 Amazon Directory Service for Microsoft Active Directory 进行 Kerberos 身份验证。Amazon Directory Service for Microsoft Active Directory 也称为 Amazon Managed Microsoft AD。这是 Amazon Directory Service 提供的一项功能。要了解更多信息,请参阅《Amazon Directory Service 管理指南》中的什么是 Amazon Directory Service?

要开始操作,请创建一个 Amazon Managed Microsoft AD 目录来存储用户凭证。然后,将 Active Directory 的域和其他信息提供给 Aurora MySQL 数据库集群。当用户向 Aurora MySQL 数据库集群验证身份时,身份验证请求将转发到 Amazon Managed Microsoft AD 目录。

将所有凭证保存在同一目录中可以节省您的时间和精力。使用这种方法,您具有一个集中位置用于存储和管理多个数据库集群的凭证。使用目录还可以改善您的整体安全概要。

此外,还可以从自己的本地 Microsoft Active Directory 访问凭证。为此,请创建一个信任域关系,以便 Amazon Managed Microsoft AD 目录信任您的本地 Microsoft Active Directory。通过这种方式,用户可以使用 Windows 单点登录(SSO)访问 Aurora MySQL 数据库集群,获得与访问本地网络中的工作负载相同的体验。

数据库可以使用 Kerberos、Amazon Identity and Access Management (IAM),或同时使用 Kerberos 和 IAM 身份验证。但是,由于 Kerberos 和 IAM 身份验证提供了不同的身份验证方法,因此,特定用户只能使用一种或另一种身份验证方法登录数据库,但不能同时使用这两种方法。有关 IAM 身份验证的更多信息,请参阅 的 IAM 数据库身份验证

Aurora MySQL 数据库集群的 Kerberos 身份验证概述

要为 Aurora MySQL 数据库集群设置 Kerberos 身份验证,请完成以下一般步骤。这些步骤将在后面进行更详细的描述。

  1. 使用 Amazon Managed Microsoft AD 创建 Amazon Managed Microsoft AD 目录。您可以使用 Amazon Web Services Management Console、Amazon CLI 或 Amazon Directory Service 创建目录。有关详细说明,请参阅《Amazon Directory Service 管理指南》中的创建 Amazon Managed Microsoft AD 目录

  2. 创建使用托管式 IAM 策略 AmazonRDSDirectoryServiceAccess 的 Amazon Identity and Access Management(IAM)角色。此角色允许 Amazon Aurora 调用您的目录。

    为了让角色允许访问,Amazon Security Token Service(Amazon STS)端点必须在您的 Amazon 账户的 Amazon Web Services 区域中激活。Amazon STS 端点原定设置为在所有 Amazon Web Services 区域中保持活跃状态,且您无需任何进一步动作即可使用这些端点。有关更多信息,请参阅《IAM 用户指南》中的在 Amazon Web Services 区域中激活和停用 Amazon STS

  3. 使用 Microsoft Active Directory 工具在 Amazon Managed Microsoft AD 目录中创建和配置用户。有关在 Active Directory 中创建用户的更多信息,请参阅 Amazon 管理指南中的在 Amazon Directory Service 托管式 Microsoft AD 中管理用户和组

  4. 创建或修改 Aurora MySQL 数据库集群。如果您在创建请求中使用 CLI 或 RDS API,请使用 Domain 参数指定域标识符。使用在创建目录时生成的 d-* 标识符和您创建的 IAM 角色的名称。

    如果您将现有 Aurora MySQL 数据库集群修改为使用 Kerberos 身份验证,请为数据库集群设置域和 IAM 角色参数。在与域目录相同的 VPC 中查找数据库集群。

  5. 使用 Amazon RDS 主用户凭证连接到 Aurora MySQL 数据库集群。按照步骤 6:创建使用 Kerberos 身份验证的 Aurora MySQL 用户中的说明在 Aurora MySQL 中创建数据库用户。

    您以此方式创建的用户可以使用 Kerberos 身份验证登录到 Aurora MySQL 数据库集群。有关更多信息,请参阅“使用 Kerberos 身份验证连接到 Aurora MySQL”。

要将 Kerberos 身份验证与本地或自托管式 Microsoft Active Directory 结合使用,请创建林信任。林信任是两组域之间的信任关系。信任可以是单向或双向的。有关使用 Amazon Directory Service 设置林信任的更多信息,请参阅 Amazon Directory Service 管理指南 中的何时创建信任关系

Aurora MySQL 的 Kerberos 身份验证限制

以下限制适用于 Aurora MySQL 的 Kerberos 身份验证:

  • Aurora MySQL 版本 3.03 及更高版本支持 Kerberos 身份验证。

    有关 Amazon Web Services 区域支持的信息,请参阅适用于 Aurora MySQL 的 Kerberos 身份验证

  • 要将 Kerberos 身份验证与 Aurora MySQL 结合使用,MySQL 客户端或连接器必须在 Unix 平台上使用版本 8.0.26 或更高版本,在 Windows 上使用版本 8.0.27 或更高版本。否则,客户端 authentication_kerberos_client 插件不可用,您无法进行身份验证。

  • 在 Aurora MySQL 上仅支持 Amazon Managed Microsoft AD。但是,您可以将 Aurora MySQL 数据库集群加入到同一 Amazon Web Services 区域中不同账户拥有的共享 Managed Microsoft AD 域。

    您还可以使用自己的本地 Active Directory。有关更多信息,请参阅步骤 2:(可选)为本地 Active Directory 创建信任

  • 当使用 Kerberos 对从 MySQL 客户端或从 Windows 操作系统上的驱动程序连接到 Aurora MySQL 集群的用户进行身份验证时,原定设置情况下,数据库用户名的字符大小写必须与 Active Directory 中用户的大小写相匹配。例如,如果 Active Directory 中的用户显示为 Admin,则数据库用户名必须为 Admin

    但是,您现在可以通过 authentication_kerberos 插件使用不区分大小写的用户名比较。有关更多信息,请参阅“步骤 8:(可选)配置不区分大小写的用户名比较”。

  • 开启该功能后,必须重启读取器数据库实例才能安装 authentication_kerberos 插件。

  • 复制到不支持 authentication_kerberos 插件的数据库实例可能会导致复制失败。

  • 要让 Aurora 全局数据库使用 Kerberos 身份验证,您必须为全局数据库中的每个数据库集群配置该身份验证。

  • 域名长度必须小于 62 个字符。

  • 开启 Kerberos 身份验证后,请勿修改数据库集群端口。如果您修改此端口,则 Kerberos 身份验证将不再起作用。