我正在尝试修改 IAM 策略,以便用户可以将 IAM 角色与允许对我们的 S3 存储桶具有只读权限的 EC2 实例关联。
我们的团队使用 AWS 进行了大量研发,因此我不愿意限制对除 IAM 之外的任何 AWS 服务的访问,因为这将允许提升权限。
我已经使用了这个问题添加 iam:PassRole,但该策略在模拟器中验证失败。
{
"Statement": [
{
"Effect": "Allow",
"NotAction": "iam:*",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": "arn:aws:iam::ACCOUNTID:role/MYROLE"
}
]
}
如果我将第二条语句的资源更改为"Resource": "*"
验证成功,并且模拟器显示 PassRole 被明确允许,则 IAM 中的所有其他内容都被隐式拒绝,而 S3 中的所有内容都被明确允许。
我对命名角色做错了什么?允许所有人使用 PassRole 会带来哪些安全隐患(我假设策略模拟器没有撒谎)。有没有更好的方法来实现我想要的?
答案1
对我来说,这似乎是 Policy Simulator 中的一个错误。甚至亚马逊自己也宣布了和你一样的政策在他们的例子中。模拟器会抱怨,但实际上将此策略附加到用户身上效果很好。
我对命名角色做错了什么?
据我所知,什么也没有。
允许所有人都使用 PassRole 会带来什么安全隐患(我假设策略模拟器没有撒谎)。
那么,您将允许iam:PassRole
任何角色执行该操作。这基本上意味着具有此策略的用户将能够启动附加了任何 IAM 角色的 EC2 实例。我上面链接的 AWS 文档:
或者,您可以通过在此策略中将资源指定为“*”来授予 IAM 用户访问您所有角色的权限。但是,请考虑使用您的角色(现有角色或您稍后将创建的角色)启动实例的用户是否可能被授予他们不需要或不应该拥有的权限。