AWS IAM政策授予某些EC2实例的许可



我想限制特定用户的访问权限,以查看少数EC2实例。我创建了一个新用户,曾在IAM角色中创建了一个新的策略。该策略的内容如下。我试图查看文档并这样做:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:*",
            "Resource": [
                "arn:aws:ec2:eu-west-1:ACCOUNT_ID:instance/i-INSTANCE_ID1",
                "arn:aws:ec2:eu-west-1:ACCOUNT_ID:instance/i-INSTANCE_ID2"
            ]
        }
    ]
}

我放置了我的 regionACCOUNT_ID(所有者ID,不是创建的新用户)和 instance-id,但是当我与该用户连接时,我去列出了所有实例,我得到了此An error occurred fetching instance data: You are not authorized to perform this operation.

我将代码放在JSON编辑器中,在策略评论步骤中我收到了此消息:

此政策定义了一些不 提供权限。要授予访问权限,政策必须采取行动 它具有适用的资源或条件。有关详细信息,请选择显示 剩下的了解更多

AWS文档提及完全相同的配置或这些示例。

我假设您将作为控制台中的用户连接(但与CLI是相同的),这是我认为正在发生的事情:

要列出所有实例,控制台很可能称为descriptInstances api。根据可以在IAM策略中使用的操作/资源/标签列表,此API不支持IAM中的资源过滤器。

这意味着您的用户无权列出实例,并且不会在控制台中显示。您可以通过使用CLI请求特定实例ID的详细信息来验证该理论,如果我的假设正确,它将被授权。

作为描述Instances不能受到资源或标签的限制,我认为无法过滤用户的实例列表。

要使控制台工作,您需要在IAM策略

中添加以下语句
 "Statement": [
     { your existing statement }, 
     {
         "Effect": "Allow",
         "Action": "ec2:DescribeInstances",
         "Resource": "*"
     }
 ]

请报告您是否正确的话:-)您在问题中提到的示例准确显示了:DescribeInstances上的Resources = *和其他操作中的资源特定实例ID。

上一个答案是错误的,您可以有条件允许访问ec2:通过标签名称描述启动。这也是AWS的最佳实践。还明确拒绝访问EC2:createtags和ec2:deletetags操作,以防止用户创建或删除标签以控制实例。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:DescribeInstances",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "ec2:ResourceTag/UserName": "${aws:username}"
        }
      }
    },
    {
      "Effect": "Deny",
      "Action": [
        "ec2:CreateTags",
        "ec2:DeleteTags"
      ],
      "Resource": "*"
    }
  ]
}

DescribeInstances操作不支持条件。

https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html

相关内容

  • 没有找到相关文章

最新更新