IAM 策略不允许 EC2 访问
IAM Policy isn't allowing EC2 access
我有一个政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1429817158000",
"Effect": "Allow",
"Action": [
"ec2:*"
],
"Resource": [
"arn:aws:ec2:*"
]
}
]
}
这是附加到一个组。该组有一个用户。当我使用该用户的凭据登录 myloginthing.signin.aws.amazon.com 时,我无法执行任何与 EC2 相关的操作。对于页面上的每个操作,它都会给我消息,例如“您无权描述 运行 实例 ”。
IAM 策略模拟器告诉我任何操作都被拒绝,因为
Implicitly denied (no matching statements found).
我错过了什么?
这实际上花了我一段时间才弄明白。
事实证明,您必须将每个操作(在您的示例中,ec2:*
)与一组允许的资源(在您的示例中,arn:aws:ec2:*
)相匹配。
问题是并非每个操作都具有相同的一组允许资源 - 因此虽然您可以为 RunInstances 使用许多不同的资源,但 DescribeInstances 仅支持 *.
整个列表可用here
(注意:发布 Link 是因为 a) 列表非常大,并且 b) 它可能会随着时间的推移发生重大变化。
实际上使用ec2:*
作为Allow Action是可以的,但是"arn:aws:ec2:*"
是一个无效的亚马逊资源名称。
将 "arn:aws:ec2:*"
替换为 "arn:aws:ec2:::*"
或仅 "*"
即可。
您必须填写所有资源:
arn:aws:ec2:*::image/*
arn:aws:ec2:*::snapshot/*
arn:aws:ec2:*:*:subnet/*
arn:aws:ec2:*:*:network-interface/*
arn:aws:ec2:*:*:security-group/*
arn:aws:ec2:*:*:volume/*
arn:aws:ec2:*:*:instance/*
arn:aws:ec2:*:*:network-interface/*
arn:aws:ec2:*:*:key-pair/*
我有一个政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1429817158000",
"Effect": "Allow",
"Action": [
"ec2:*"
],
"Resource": [
"arn:aws:ec2:*"
]
}
]
}
这是附加到一个组。该组有一个用户。当我使用该用户的凭据登录 myloginthing.signin.aws.amazon.com 时,我无法执行任何与 EC2 相关的操作。对于页面上的每个操作,它都会给我消息,例如“您无权描述 运行 实例 ”。
IAM 策略模拟器告诉我任何操作都被拒绝,因为
Implicitly denied (no matching statements found).
我错过了什么?
这实际上花了我一段时间才弄明白。
事实证明,您必须将每个操作(在您的示例中,ec2:*
)与一组允许的资源(在您的示例中,arn:aws:ec2:*
)相匹配。
问题是并非每个操作都具有相同的一组允许资源 - 因此虽然您可以为 RunInstances 使用许多不同的资源,但 DescribeInstances 仅支持 *.
整个列表可用here
(注意:发布 Link 是因为 a) 列表非常大,并且 b) 它可能会随着时间的推移发生重大变化。
实际上使用ec2:*
作为Allow Action是可以的,但是"arn:aws:ec2:*"
是一个无效的亚马逊资源名称。
将 "arn:aws:ec2:*"
替换为 "arn:aws:ec2:::*"
或仅 "*"
即可。
您必须填写所有资源:
arn:aws:ec2:*::image/*
arn:aws:ec2:*::snapshot/*
arn:aws:ec2:*:*:subnet/*
arn:aws:ec2:*:*:network-interface/*
arn:aws:ec2:*:*:security-group/*
arn:aws:ec2:*:*:volume/*
arn:aws:ec2:*:*:instance/*
arn:aws:ec2:*:*:network-interface/*
arn:aws:ec2:*:*:key-pair/*