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

上次更新时间:2020 年 8 月 12 日

对于同一 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"
            }
         }
      }
   ]
}

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

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

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

有关标记使用案例和最佳实践,请参阅 标记最佳实践。