RDS Postgres DB IAM生成_db_auth_token无法正常工作



aws 中,我有一个 RDS Postgres数据库。该数据库的用户可以通过 iam 连接(他们具有 iam_user 角色(。连接是通过 python boto3 ,例如:

来编程实现的。

RDS客户端设置

self.rds = boto3.client(
    'rds',
    region_name = rds_region,
    aws_access_key_id = aws_access_key_id,
    aws_secret_access_key = aws_secret_access_key,
)

生成令牌

return self.rds.generate_db_auth_token(
    self.db_hostname,
    self.port,
    self.db_username,
    Region=self.region
)

生成有效的令牌,当我使用IAM用户的AWS键时,可以启用Postgres登录,该键几乎可以访问AWS中的所有内容。

但是,当我使用仅具有 amazonrdsfullaccess AmazonRdsDataFullAccess 的用户的AWS密钥时当我尝试登录到Postgres时,密码,例如:

OperationalError: (psycopg2.OperationalError) FATAL:  PAM authentication failed for user "test_iam_user"

据我所知,该用户可以正确访问我的所有RDS资源,它不会生成有效的令牌。

如果有人能说出缺少的许可和/或我做错了什么,我会很感激。

在AWS中了解此类权限问题以找到阻止访问权限的特定许可。

也将是一件好方法。

欢呼!!

我的工程师Jun解决了这个问题!

我缺少的是以下权限:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "rds-db:connect"
            ],
            "Resource": [
                "arn:aws:rds-db:eu-west-1:<aws_account_number>:dbuser:<rds_db_resource_id>/<postgres_user>"
            ]
        }
    ]
}

一旦将此许可与AmazonRdsfullaccess或Amazonrdsdatafullaccess一起添加到IAM用户,则生成了有效的令牌,可以将其用作密码以登录RDS数据库。

最新更新