IAM策略基于标签

时间:2019-09-19 07:22:40

标签: amazon-web-services amazon-iam

我尝试使用以下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”。但是我仍然无法停止/启动实例。

1 个答案:

答案 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