AWS IAM 策略授予某些 EC2 实例的权限

Bog*_*aru 5 amazon-ec2 amazon-web-services amazon-iam

我想限制特定用户的访问权限,只能查看几个 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"
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

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

将代码放入 JSON 编辑器后,在Policy Review步骤中,我收到以下消息:

此策略定义了一些不提供权限的操作、资源或条件。要授予访问权限,策略必须具有具有适用资源或条件的操作。有关详细信息,请选择显示剩余了解更多

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

Séb*_*acq 2

我假设您在控制台中以该用户身份进行连接(但与 CLI 相同),我认为正在发生的情况如下:

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

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

由于DescribeInstances不能受到资源或标签的限制,我认为不可能过滤用户的实例列表。

要使控制台正常工作,您需要在 IAM 策略中添加以下语句

 "Statement": [
     { your existing statement }, 

     {
         "Effect": "Allow",
         "Action": "ec2:DescribeInstances",
         "Resource": "*"
     }
 ]
Run Code Online (Sandbox Code Playgroud)

请报告我是否正确:-)在问题中提到的示例准确地显示了:在其他操作上和资源特定的 InstanceIdResources = *DescribeInstances