IAM 策略,用于根据标签限制 EC2 访问



我尝试使用以下 IAM 策略限制对 EC2 实例的访问:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:StartInstances",
"ec2:StopInstances",
"ec2:TerminateInstances",
"ec2:RebootInstances"
],
"Resource": "arn:aws:ec2:*:*:instance/*",
"Condition": {
"StringEquals": {
"aws:RequestTag/Purpose": "devops-training"
}
}
},
{
"Effect": "Allow",
"Action": [
"ec2:RunInstances",
"ec2:DescribeInstances",
"ec2:DescribeInstanceStatus",
"ec2:DescribeImages",
"ec2:DescribeKeyPairs",
"ec2:DescribeVpcs",
"ec2:DescribeSubnets",
"ec2:CreateSecurityGroup",
"ec2:DescribeSecurityGroups",
"ec2:CreateTags",
"ec2:DescribeTags"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:RequestedRegion": "ap-southeast-2"
}
}
}
]
}

但我无法停止或启动实例。我找不到上述政策中的错误。我可以启动一个新实例。我添加了一个带有值"devops-training"的标签 Purpose。但是我仍然无法停止/启动实例。

您应该改用 ResourceTag/key-name。如果操作可以将标签作为请求的一部分附加,则使用 RequestTag,例如 ec2:RunInstances、ec2:CreateTags...

"Condition": {
"StringEquals": {
"ec2:ResourceTag/Purpose": "devops-training"
}
}

请求 – 控制可以在请求中传递哪些标签。为此,请使用 aws:RequestTag/key-name 条件键指定可以在请求中传递哪些标签键值对,以标记或取消标记 AWS 资源。

资源 – 根据 AWS 服务资源上的标签控制对这些资源的访问。为此,请使用 ResourceTag/key-name 条件键根据附加到资源的标签确定是否允许访问资源。

https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-resources

最新更新