的 IAM 数据库身份验证 - Amazon Aurora

的 IAM 数据库身份验证

可以使用 AWS Identity and Access Management(IAM)数据库身份验证对数据库集群进行身份验证。IAM 数据库身份验证适用于 Aurora MySQL 和 Aurora PostgreSQL。利用此身份验证方法,您在连接到数据库集群时将无需使用密码。而是使用身份验证令牌。

身份验证令牌Amazon Aurora 根据请求生成的唯一字符串。身份验证令牌是使用 AWS 签名版本 4 生成的。每个令牌的使用期限为 15 分钟。您无需将用户凭证存储在数据库中,因为身份验证是使用 IAM 进行外部管理的。此外,您仍可使用标准数据库身份验证。令牌仅用于身份验证,建立后不会影响会话。

IAM 数据库身份验证具有以下优势:

  • 数据库的出站和进站网络流量是使用安全套接字层 (SSL) 或传输层安全性 (TLS) 加密的。有关将 SSL/TLS 与 Amazon Aurora 一起使用的更多信息,请参阅使用 SSL/TLS 加密与数据库集群的连接

  • 您可以使用 IAM 集中管理对数据库资源的访问,而不是单独管理对每个数据库集群的访问。

  • 对于在 Amazon EC2 上运行的应用程序,您可以使用 EC2 实例特定的配置文件凭证访问数据库以提高安全性,而不是使用密码。

一般来说,如果应用程序每秒创建的连接少于 200 个,而且您不想直接在应用程序代码中管理用户名和密码,请考虑使用 IAM 数据库身份验证。

适用于 MySQL 的 AWS JDBC 驱动程序支持 IAM 数据库身份验证。有关更多信息,请参阅适用于 MySQL 的 AWS JDBC 驱动程序 GitHub 存储库中的 AWS IAM 数据库身份验证

区域和版本可用性

功能可用性和支持因每个 Aurora 数据库引擎的特定版本以及 AWS 区域 而异。有关适用于 Aurora 和 IAM 数据库身份验证的版本和区域可用性的更多信息,请参阅 Aurora 中的 IAM 数据库身份验证

对于 Aurora MySQL,除 db.t2.small 和 db.t3.small 外,所有受支持的数据库实例类都支持 IAM 数据库身份验证。有关受支持的数据库实例类的信息,请参阅 数据库实例类支持的数据库引擎

CLI 和开发工具包支持

IAM 数据库身份验证可用于 AWS CLI 以及以下特定于语言的 AWS 软件开发工具包:

IAM 数据库身份验证的限制

使用 IAM 数据库身份验证时,以下限制适用:

  • 数据库集群每秒的最大连接数可能会受到限制,具体取决于其数据库实例类和工作负载。

  • 目前,IAM 数据库身份验证并不支持所有的全局条件上下文键。

    有关全局条件上下文键的更多信息,请参阅《IAM 用户指南》中的 AWS 全局条件上下文键

  • 对于 PostgreSQL,如果将 IAM 角色(rds_iam)添加到某个用户(包括 RDS 主用户),IAM 身份验证将优先于密码身份验证,因此该用户必须以 IAM 用户身份登录。

  • 对于 Aurora PostgreSQL,您不能使用 IAM 身份验证来建立复制连接。

  • 您不能使用自定义 Route 53 DNS 记录代替数据库集群终端节点来生成身份验证令牌。

IAM 数据库身份验证建议

在使用 IAM 数据库身份验证时,我们建议使用以下方法:

  • 当您的应用程序每秒需要少于 200 个新的 IAM 数据库身份验证连接时,请使用 IAM 数据库身份验证。

    使用 Amazon Aurora 的数据库引擎不会对每秒的身份验证尝试次数施加任何限制。不过,在使用 IAM 数据库身份验证时,您的应用程序必须生成身份验证令牌。之后,您的应用程序将使用该令牌连接到数据库集群。如果超出每秒的最大新连接数限制,则 IAM 数据库身份验证的额外开销可能会导致连接受到限制。

    考虑在应用程序中使用连接池来减少持续的连接创建。这可以减少 IAM 数据库身份验证的开销,并允许应用程序重用现有连接。或者,考虑对这些使用案例使用 RDS 代理。RDS 代理有额外费用。请参阅 RDS 代理定价

  • IAM 数据库身份验证令牌的大小取决于许多因素,包括 IAM 标签的数量、IAM 服务策略、ARN 长度以及其他 IAM 和数据库属性。此令牌的最小大小通常约为 1KB,但可以更大。由于使用 IAM 身份验证将此令牌用作数据库的连接字符串中的密码,因此,您应确保您的数据库驱动程序(例如 ODBC)和/或任何工具不会因其大小而限制或以其他方式截断该令牌。截断的令牌将导致数据库和 IAM 执行的身份验证失败。

  • 如果您在创建 IAM 数据库身份验证令牌时使用临时凭证,则在使用 IAM 数据库身份验证令牌发出连接请求时,临时凭证必须仍然有效。

不支持的 AWS 全局条件上下文键

IAM 数据库身份验证不支持 AWS 全局条件上下文键的以下子集。

  • aws:Referer

  • aws:SourceIp

  • aws:SourceVpc

  • aws:SourceVpce

  • aws:UserAgent

  • aws:VpcSourceIp

有关更多信息,请参阅《IAM 用户指南》中的 AWS 全局条件上下文键