适用于 MariaDB、MySQL 和 PostgreSQL 的 IAM 数据库身份验证
可以使用 Amazon Identity and Access Management(IAM)数据库身份验证对数据库实例进行身份验证。IAM 数据库身份验证适用于 MariaDB、MySQL 和 PostgreSQL。利用此身份验证方法,您在连接到数据库实例时将无需使用密码。而是使用身份验证令牌。
身份验证令牌 是 Amazon RDS 根据请求生成的唯一字符串。身份验证令牌是使用 Amazon 签名版本 4 生成的。每个令牌的使用期限为 15 分钟。您无需将用户凭证存储在数据库中,因为身份验证是使用 IAM 进行外部管理的。此外,您仍可使用标准数据库身份验证。令牌仅用于身份验证,建立后不会影响会话。
IAM 数据库身份验证具有以下优势:
-
数据库的出站和进站网络流量是使用安全套接字层 (SSL) 或传输层安全性 (TLS) 加密的。有关将 SSL/TLS 与 Amazon RDS 一起使用的更多信息,请参阅使用 SSL/TLS 加密与数据库实例的连接。
-
您可以使用 IAM 集中管理对数据库资源的访问,而不是单独管理对每个数据库实例的访问。
-
对于在 Amazon EC2 上运行的应用程序,您可以使用 EC2 实例特定的配置文件凭证访问数据库以提高安全性,而不是使用密码。
主题
IAM 数据库身份验证的可用性
IAM 数据库身份验证可用于以下数据库引擎:
-
MariaDB 10.6,所有次要版本
-
MySQL 8.0,次要版本 8.0.16 或更高版本
-
MySQL 5.7,次要版本 5.7.16 或更高版本
-
MySQL 5.6,次要版本 5.6.34 或更高版本
-
PostgreSQL 14、13、12 和 11,以及所有次要版本
-
PostgreSQL 10,次要版本 10.6 或更高版本
-
PostgreSQL 9.6,次要版本 9.6.11 或更高版本
-
PostgreSQL 9.5,次要版本 9.5.15 或更高版本
IAM 数据库身份验证的限制
使用 IAM 数据库身份验证时,以下限制适用:
-
数据库实例每秒的最大连接数可能会受到限制,具体取决于其数据库实例类和工作负载。
-
目前,IAM 数据库身份验证并不支持所有的全局条件上下文键。
有关全局条件上下文键的更多信息,请参阅《IAM 用户指南》中的 Amazon 全局条件上下文键。
-
目前,CNAME 不支持 IAM 数据库身份验证。
-
对于 PostgreSQL,如果将 IAM 角色 (
rds_iam
) 添加到主用户,IAM 身份验证优先于密码身份验证,因此主用户必须以 IAM 用户身份登录。
MariaDB 和 MySQL 的 IAM 数据库身份验证建议
在使用 MariaDB 或 MySQL 数据库引擎时,我们建议使用以下做法:
-
将 IAM 数据库身份验证用作对数据库的个人临时访问的机制。
-
仅对可轻松重试的工作负载使用 IAM 数据库身份验证。
-
当您的应用程序每秒需要少于 200 个新的 IAM 数据库身份验证连接时,请使用 IAM 数据库身份验证。
使用 Amazon RDS 的数据库引擎不会对每秒的身份验证尝试次数施加任何限制。不过,在使用 IAM 数据库身份验证时,您的应用程序必须生成身份验证令牌。之后,您的应用程序将使用该令牌连接到数据库实例。如果超出每秒的最大新连接数限制,则 IAM 数据库身份验证的额外开销可能会导致连接受到限制。额外开销甚至可能导致现有连接中断。有关 MariaDB 和 MySQL 的最大连接总数的信息,请参阅 最大 MySQL 和 MariaDB 连接。
这些建议不适用于 Amazon RDS for PostgreSQL 数据库实例。