【问题标题】:Creating IAM policy in AWS to protect EC2 instances with specific IDs在 AWS 中创建 IAM 策略以保护具有特定 ID 的 EC2 实例
【发布时间】:2020-05-14 03:29:07
【问题描述】:

我正在处理一个托管在 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-services amazon-iam aws-security-group


    【解决方案1】:

    如果您希望控制其他 IAM 用户看不到其他 IAM 用户创建的实例,那么这是不可能的,因为描述实例 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": "*"
            }
        ]
    }
    

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

    【讨论】:

    • ,我已经编辑了正在使用的策略,我试图允许用户运行一个实例,但他/她不应该启动、停止或重新启动由 admin/root 用户创建的实例。检查上面使用的 json 对象。仍然无法正常工作。
    【解决方案2】:

    如果字符串不等于 aws:userid 或 aws:username,您是否尝试对操作 ec2:DescribeInstances 使用 Deny 效果,向附加到实例的角色添加内联策略。

    【讨论】:

    • ,,感谢您的帮助,我已经编辑了正在使用的策略,正在尝试允许用户运行一个实例,但她/她不应该启动、停止或重新启动管理员创建的实例/根用户。检查上面使用的 json 对象。仍然无法正常工作。
    • 这是适用于这些特定用户的only政策吗? Deny 将覆盖 Allow。因此,除非他们收到Allow 启动/停止/重新启动的权限,否则拒绝实际上不会做任何事情。当您说“仍然无法工作”时,您做了什么以及发生了什么?
    【解决方案3】:

    ec2:CreateVolume 授予创建 Amazon EBS 卷的权限。创建卷的行为与 Amazon EC2 实例无关。卷仅通过AttachVolume 命令与实例关联。

    ec2:RunInstances 授予启动 Amazon EC2 实例的权限。它与现有实例无关。

    因此,这两个权限都不会使用指定实例 ID 的条件。

    要授予在管理控制台中查看 Amazon EC2 实例的权限,请使用 ec2:DescribeInstances。但是,用户将有权列出所有个实例或。无法限制 DescribeInstances() 调用返回的实例。

    如果您希望限制来自用户的此类信息,那么您将需要创建自己的“中间”代码来过滤信息(因此他们调用您的代码,该代码检索所有实例但仅返回一些实例),或者您可以为每个用户使用单独的 AWS 账户,这样他们就看不到其他用户的资源。

    【讨论】:

    • ,,感谢您的帮助,我已经编辑了正在使用的策略,正在尝试允许用户运行一个实例,但她/她不应该启动、停止或重新启动管理员创建的实例/根用户。检查上面使用的 json 对象。仍然无法正常工作。
    猜你喜欢
    • 2021-10-06
    • 2020-05-14
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 2020-07-23
    • 2021-03-10
    • 2019-08-06
    • 1970-01-01
    相关资源
    最近更新 更多