在 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
)
当我使用几乎可以访问AWS中所有内容的IAM用户的AWS密钥时,将生成一个有效的令牌,该令牌可以启用Postgres登录。
但是,当我使用仅具有 AmazonRDSFullAccess 和 AmazonRDSDataFullAccess 的用户的AWS密钥时,会生成类似于有效令牌但不会被接受为令牌的令牌尝试登录Postgres时输入的密码,例如:
OperationalError: (psycopg2.OperationalError) FATAL: PAM authentication failed for user "test_iam_user"
据我所知,此用户可以正确访问我的所有RDS资源,只是不会生成有效的令牌。
如果有人能说出缺少的权限和/或我做错了什么,我将不胜感激。
最好了解解决AWS中此类权限问题的最佳方法,以找到阻止访问的特定权限。
干杯!
答案 0 :(得分:0)
我的工程师Jun解决了这个问题!
我所缺少的是以下权限:
df %>%
group_by(Groups) %>%
summarise(Value = as.integer(max(Value, na.rm = TRUE) > 0))
将此权限与AmazonRDSFullAccess或AmazonRDSDataFullAccess一起添加到IAM用户后,便会生成一个有效的令牌,可以将其用作登录RDS数据库的密码。