我正在检查在 RDS 中设置 IAM 身份验证的步骤: https://aws.amazon.com/premiumsupport/knowledge-center/users-connect-rds-iam/其中一个步骤是附加具有适当权限的 IAM 角色:https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.IAMPolicy.html
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"rds-db:connect"
],
"Resource": [
"arn:aws:rds-db:us-east-2:1234567890:dbuser:db-ABCDEFGHIJKL01234/db_user"
]
}
]
}
资源遵循以下格式:
arn:aws:rds-db:region:account-id:dbuser:DbiResourceId/db-user-name
如果我理解正确,只要我知道某人的account-id
、DbiResourceId
和db-user-name
(或者db-user-name
,因为我可以使用通配符?(,那么我就可以连接到该数据库实例,对吧?
这听起来不安全。我错过了什么吗?
不,这是不可能的。唯一想要与此资源交互的是在目标账户中代入角色。
您可以使用 IAM 角色允许其他账户中的某人(受信任的委托人(访问您账户中的资源。角色是授予跨账户访问权限的主要方式。但是,对于某些 AWS 服务,您可以将策略直接附加到资源(而不是使用角色作为代理(。要了解用于跨账户访问的角色和基于资源的策略之间的区别,请参阅 IAM 用户指南 中的 IAM 角色与基于资源的策略有何不同