IAM Role for RDS

用户可以使用 IAM 用户或角色凭证以及身份验证令牌连接到 Amazon RDS 数据库实例或集群。出于以下原因,IAM 数据库身份验证比原生身份验证方法更安全:

  • IAM 数据库身份验证令牌是使用您的 AWS 访问密钥生成的。您无需存储数据库用户凭证。

  • 身份验证令牌的有效期为 15 分钟,因此您无需强制执行密码重置。

  • IAM 数据库身份验证需要安全套接字层(SSL)连接。传入和传出数据库实例的所有数据均经过加密。

  • 如果您的应用程序正在 Amazon Elastic Compute Cloud(Amazon EC2)上运行,则可以使用 EC2 实例配置文件凭证来访问数据库。您无需在实例上存储数据库密码。

要使用 IAM 角色来设置 IAM 数据库身份验证,请执行以下步骤:

1 - 在 RDS 数据库实例上激活 IAM 数据库身份验证。

您可以使用 Amazon RDS 控制台、AWS 命令行界面(AWS CLI)或 Amazon RDS API 启用 IAM 数据库身份验证arrow-up-right。如果您使用 Amazon RDS 控制台arrow-up-right修改数据库实例,则应选择立即应用激活 IAM 数据库身份验证。激活 IAM 身份验证需要短暂中断。有关哪些修改需要中断的详细信息,请参阅 Amazon RDS 数据库实例arrow-up-right

注意: 如果您选择立即应用,则所有待处理的修改也会立即应用,而不是在维护时段内应用。这可能会导致您的实例长时间中断。有关详细信息,请参阅使用“立即应用”设置arrow-up-right

2 - 创建使用 AWS 身份验证令牌的数据库用户账户。

运行以下命令连接到数据库实例或集群端点。输入主密码登录。

$ RDSHOST={database or cluster endpoint}
$ mysql -h RDSHOST -P 3306 -u admin -p

$ TOKEN="$(aws rds generate-db-auth-token --hostname $RDSHOST --port 3306 --region us-east-1 --username admin)"
$ mysql -h RDSHOST -P 3306 -u admin -p

创建使用 AWS 身份验证令牌而不是密码的数据库用户账户:

默认情况下,数据库用户在创建时不会获得任何权限。当您运行 SHOW GRANTS FOR {dbusername} 时,系统会显示 GRANT USAGE。如需要求用户账户使用 SSL 进行连接,请运行以下命令:

运行 exit 命令关闭 MySQL。

3 - 使用 IAM 角色凭证和 SSL 证书连接到 RDS 数据库实例

如果是通过EC2连接RDS,则绑定IAM 角色到EC2,这个角色拥有管理RDS的权限。参考IAM Roles for Amazon EC2.

如果是本地CLI配置连接RDS,则可以通过IAM Identity Center授权,设置aws configure sso的短期有效权限,之后就可以执行后续的步骤。参考IAM Identity Center for human

下载 SSL 根证书文件或证书捆绑包文件

所有 AWS 区域的证书捆绑包arrow-up-right

特定 AWS 区域的证书捆绑包arrow-up-right

下载证书文件后,运行以下命令之一通过 SSL 连接到数据库实例。

circle-exclamation

根据您使用的证书(根证书或捆绑包),运行以下命令之一:

根证书命令,比如我是在美东1安装的数据库,下载的是美东1的证书arrow-up-right,执行以下命令后成功连接到数据库:

捆绑包命令:

在连接到MySQL数据库时,使用SSL可以增强安全性,保护数据传输的安全。首先,您需要根据您的证书类型(根证书或捆绑包)选择合适的连接命令。如果您使用根证书,应使用以下命令连接MySQL:

若您使用的是捆绑包,连接命令如下:

通过这些命令,您可以通过安全的SSL连接来访问您的MySQL数据库,确保数据在传输过程中的安全性和完整性。更多详细信息和帮助,请参考AWS官方文档arrow-up-right

参考资料

https://repost.aws/zh-Hans/knowledge-center/users-connect-rds-iamarrow-up-right

最后更新于