使用 IAM 角色连接到 Amazon RDS Postgresql

Connect to Amazon RDS Postgresql with IAM Role

我尝试让我的 EC2 实例通过 IAM 访问我的 AWS RDS Postgresql 数据库。

首先,我创建了一个策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "rds:connect"
            ],
            "Resource": [
                "arn:aws:rds:eu-west-1:824224273455:db:instance-name/db-name"
            ]
        }
    ]
}

之后,我将此策略附加到 role,我将其附加到这个特定的 EC2 实例。到目前为止一切似乎都很好。

当通过 ssh 连接到特定的 EC2 实例并尝试连接到数据库时,psql 仍然提示输入密码。

有人知道如何实现无需密码即可连接吗?

这是不可能的。

AWS Identity and Access Management (IAM) 用于授予 RDS 服务的权限(例如创建、备份和删除集群)。但是,它不能 用于授予对 Amazon RDS PostgreSQL 数据库的登录访问权限。相反,使用在 PostgreSQL 中定义的普通用户。

is only available MySQL 和 Aurora 的此类访问 is only available

RDS PostgreSQL(vanilla & Aurora) 现在支持 IAM 身份验证。

支持的版本是:

Amazon RDS for PostgreSQL(从 2018/09/27 开始支持)

  • 9.5.13 或更高版本
  • 9.6.9 或更高版本
  • 10.4 或更高

Amazon Aurora PostgreSQL(从 2018/11/08 开始支持)

  • 9.6.9 或更高版本

说明就像 MySQL 的:

  1. 创建启用 IAM 身份验证的数据库实例
  2. 使用 rds_iam ROLE
  3. 创建 IAM 身份验证用户
  4. 为 IAM 访问添加新策略
  5. 为 IAM 身份验证请求临时凭证(详细信息 https://gist.github.com/quiver/509e1a6e6b54a0148527553502e9f55d