首页 > 解决方案 > 在 AWS 中创建 IAM 策略以保护具有特定 ID 的 EC2 实例

问题描述

我正在开发一个托管在 AWS 中的项目。控制台可供多个用户访问。我创建了一个 IAM 策略,允许特定用户创建实例和卷,但他们不应访问或查看控制台中具有特定实例 ID 的现有实例。

我的自定义策略如下,但未按预期工作:

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
          "Action":[
            "ec2:RunInstances"
         ],
         "Resource":"*"
      },
      {
         "Effect":"Deny",
         "Action":[
            "ec2:StartInstances",
            "ec2:StopInstances",
            "ec2:RebootInstances"
         ],
         "Resource":"*",
         "Condition":{
            "StringEquals":{
               "ec2:ResourceTag/Owner":"Admin"
            }
         }
      }
   ]
}

标签: amazon-web-servicesamazon-iamaws-security-group

解决方案


如果您希望控制其他 IAM 用户看不到其他 IAM 用户创建的实例,那么这是不可能的,因为 describe instances api 不接受资源级权限。

但是,您可以选择限制 IAM 用户对其他用户创建的实例执行操作(启动/停止/重启...等)。

https://aws.amazon.com/premiumsupport/knowledge-center/restrict-ec2-iam/

第2部分:

尝试使用这个:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:StartInstances",
                "ec2:StopInstances",
                 "ec2:RunInstances",
                "ec2:RebootInstances"            
              ],
            "Resource": "arn:aws:ec2:*:*:instance/*",
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/Owner": "${aws:username}"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "ec2:DescribeInstances",
            "Resource": "*"
        }
    ]
}

确保您的实例具有所需的标签键值对


推荐阅读