我是否可以限制 IAM 用户对特定 Amazon EC2 资源的访问?

上次更新时间:2019 年 11 月 13 日

我想针对同一 AWS 账户的多组资源,限制 AWS Identity and Access Management (IAM) 用户或用户组对单个特定 Amazon Elastic Compute Cloud (Amazon EC2) 资源或一组 Amazon EC2 资源的访问。该如何操作?

解决方法

大多数必要的 Amazon EC2 操作都不支持资源级权限或条件,通过除 AWS 区域之外的任何标准隔离 IAM 用户或用户组对 Amazon EC2 资源的访问不适合大多数使用案例。

相反,应考虑通过 AWS Organizations 链接多个不同的 AWS 账户。然后,在其各自的账户中隔离 IAM 用户组。

如果您必须在同一个账户中按区域或任何条件隔离您的资源,首先检查支持资源级权限的 EC2 操作列表以及它们支持的条件,以确保您的使用案例支持此解决方案。

然后打开 IAM 控制台创建一个 IAM 策略,与以下类似:

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Action":"ec2:Describe*",
         "Resource":"*"
      },
      {
         "Effect":"Allow",
         "Action":[
            "ec2:StartInstances",
            "ec2:StopInstances",
            "ec2:RebootInstances"
         ],
         "Resource":[
            "arn:aws:ec2:us-east-1:111122223333:instance/*"
         ],
         "Condition":{
            "StringEquals":{
               "ec2:ResourceTag/Owner":"Bob"
            }
         }
      }
   ]
}

此示例策略将 IAM 用户或组的访问权限限定为仅在美国东部(弗吉尼亚北部)[us-east-1] 区域启动/停止/重启标签键为 Owner 且标签值为 Bob 的 EC2 实例。

注意:请将“Owner”、“Bob”和 AWS 区域替换为您的环境中的参数。

最后,为每个 IAM 用户组创建类似的策略,每个用户组分别使用不同的区域。