我尝试使用以下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”。但是我仍然无法停止/启动实例。
答案 0 :(得分:3)
您应该改用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