允许用户通过其标签管理EC2

时间:2017-04-12 20:00:28

标签: amazon-web-services amazon-ec2 architecture amazon-iam

我正在尝试为我们的供应商启用EC2访问权限。那么,我做了什么:我添加标签"供应商"对于专用的EC2实例。

enter image description here

然后,我在下面添加政策..

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:*",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/Vendor": "Takamol"
                }
            }
        },
        {
            "Effect": "Deny",
            "Action": [
                "ec2:CreateTags",
                "ec2:DeleteTags",
                "ec2:TerminateInstances"
            ],
            "Resource": "*"
        }
    ]
}

尽管如此,用户(属于附加组的用户)也无法看到任何EC2实例,即使策略条件受到标记"供应商"的限制。 (正如你所注意到的那样)。

如何允许用户仅管理具有标签的EC2实例:Vendor = Takamol

1 个答案:

答案 0 :(得分:6)

你想要实现的目标是不可能的。这是因为一个名为"资源级别权限的概念"。支持资源级别权限的操作允许您使用IAM来允许/拒绝用户对相关资源的某些子集执行操作的能力,例如,具有特定标记,S3存储桶,VPC等的EC2实例。不支持所有资源的不支持资源级别权限的操作,并且只能在资源为*的语句中允许用户使用并且没有条件。

不幸的是,并非所有EC2操作都支持资源级别权限。您的用户无法使用上述IAM策略查看任何EC2实例的原因是ec2:Describe * API调用(在控制台中用于列出帐户中的所有实例)不支持资源级别权限。 / p>

因此即使ec2:Describe *属于ec2:*,你允许在策略的第一个语句中使用标记实例,ec2:描述*并且条件评估为DENY所有ec2:Describe *。

人们通常最终会做的是允许供应商访问以查看帐户中的所有实例,然后只允许他们获得特定实例集所需的其他权限。请参阅下面的策略,它将允许用户查看所有实例,但只能使用所需标记启动,停止和重新启动实例。

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "AllowSeeEverything",
        "Effect": "Allow",
        "Action": [
            "ec2:Describe*"
        ],
        "Resource": [
            "*"
        ]
    },
    {
        "Sid": "ThingsIAllowThemToDoForTaggedEc2s",
        "Effect": "Allow",
        "Action": [
            "ec2:RebootInstances",
            "ec2:StartInstances",
            "ec2:StopInstances"
        ],
        "Condition": {
            "StringEquals": {
                "ec2:ResourceTag/Vendor": "Takamol"
            }
        },
        "Resource": [
            "*"
        ]
    }
]

}

Supported Resource-Level Permissions for Amazon EC2 API Actions中记录了EC2 API调用的列表以及支持的条件,以及支持的条件。我还建议您阅读Demystifying EC2 Resource-Level Permissions 博文。