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

2 分钟阅读
0

我想创建一个 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 实例添加特定标签来控制该实例。

完成的策略如下所示:

**注意:**此策略适用于使用 ec2:ResourceTag 条件键的 Amazon EC2 实例。要限制使用标签启动新的 Amazon EC2 实例,请参阅如何使用 IAM policy 标签来限定 EC2 实例或 EBS 卷的创建方式?

{
  "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 Identity Center 权限集或联合身份用户,请使用变量 aws:userid 替代 aws:username。变量 aws:userid 的值为 account:caller-specified-name。有关详细信息,请参阅 IAM policy 元素: 变量和标签,以及如何将 IAM 策略变量与联合身份用户一起使用?

将 IAM 策略附加到想要访问实例的用户或组

将 IAM 策略附加到想要访问实例的用户或组。您可以使用 AWS 管理控制台、AWS CLI 或 AWS API 附加 IAM 策略。

相关信息

Granting required permissions for Amazon EC2 resources

适用于 Amazon EC2 的 IAM policy

IAM 教程: 根据标签定义访问 AWS 资源的权限

AWS 官方
AWS 官方已更新 4 个月前