如何创建 IAM 策略以使用标签控制对 Amazon EC2 资源的访问?

上次更新时间:2019 年 4 月 17 日

如何创建 AWS Identity and Access Management (IAM) 策略以使用标签控制对 Amazon Elastic Compute Cloud (Amazon EC2) 实例的访问?

简短描述

您可以如下所示控制对小型 Amazon EC2 实例部署的访问:

  1. 向实例中添加特定标签,​您希望向用户或组授予对这些实例的访问权限。
  2. 创建一个 IAM 策略,以授予对任何带该特定标签的实例​的访问权限。
  3. 将该 IAM 策略附加到您希望访问实例的用户或组。

解决方法

向 EC2 实例组添加标签

打开 ​Amazon EC2 控制台,然后​向 EC2 实例组添加标签,您希望用户或组能够访问这些实例。​如果您还没有标签,请创建一个。

注意:在为资源添加标签之前,请阅读并了解标签限制。Amazon EC2 标签区分大小写。

创建一个 IAM 策略,以授予对带该特定标签的实例​的访问权限

创建一个类似于以下的 IAM 策略:

  • 允许控制带标签的实例。
  • 包含一个条件语句,如果条件键 ec2:ResourceTag/UserName 的值与策略变量 aws:username 匹配,则该语句允许访问 Amazon EC2 资源。通过 IAM 评估策略时,策略变量 ${aws:username} 替换为当前 IAM 用户的易记名称。
  • 允许访问 Amazon EC2 资源的 ec2:Describe* 操作。
  • 明确拒绝访问 ec2:CreateTagsec2:DeleteTags 操作,以防止用户创建或删除标签。
    注意:这将通过向 EC2 实例中添加特定标签来防止用户控制该实例。

例如,创建完成的策略看起来应如下所示:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:*",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "ec2:ResourceTag/UserName": "${aws:username}"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "ec2:Describe*",
      "Resource": "*"
    },
    {
      "Effect": "Deny",
      "Action": [
        "ec2:CreateTags",
        "ec2:DeleteTags"
      ],
      "Resource": "*"
    }
  ]
}

将该 IAM 策略附加到您希望访问实例的用户或组

最后,将已创建的 IAM 策略附加到您希望访问实例的用户或组。您可以使用 AWS 管理控制台、AWS CLI 或 AWS API 来附加 IAM 策略


这篇文章对您有帮助吗?

您觉得我们哪些地方需要改进?


需要更多帮助?