我有一个政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1429817158000",
"Effect": "Allow",
"Action": [
"ec2:*"
],
"Resource": [
"arn:aws:ec2:*"
]
}
]
}
附属于一个群体。该组有一个用户。当我使用该用户的凭据登录myloginthing.signin.aws.amazon.com时,我无法执行与EC2相关的任何操作。它为页面上的每个操作提供了诸如“您无权描述运行实例”的消息。
IAM策略模拟器告诉我任何操作都被拒绝,因为
隐含拒绝(未找到匹配的陈述)。
我错过了什么?
答案 0 :(得分:2)
这实际上花了我一段时间来弄明白。
事实证明,您必须将每个操作(在您的示例中为ec2:*
)与一组允许的资源(在您的示例中为arn:aws:ec2:*
)进行匹配。
问题在于并非每个操作都具有相同的允许资源集 - 因此,虽然您可以为RunInstances使用许多不同的资源,但DescribeInstances仅支持*。
整个列表可用here
(注意:链接发布是因为a)列表非常大,b)它可能会随着时间的推移发生显着变化。
答案 1 :(得分:2)
将ec2:*
用作允许操作实际上很好,但"arn:aws:ec2:*"
是无效的亚马逊资源名称。
将"arn:aws:ec2:*"
替换为"arn:aws:ec2:::*"
或仅"*"
应该有效。