背景

背景

背景

一位企业主将一个根级别的 AWS 账户交给了我,该账户运行不同的 EC2 机器(staging/prod 等)。我想要做的只是创建具有受限访问权限的不同 IAM 账户。例如,现在我想创建一个仅具有运行、终止特定 EC2 实例权限的 IAM 账户。

我尝试过

我基本上遵循了指示这里。我创建了一个 IAM 组(名为),并创建了一个新的 IAM 账户,并为该组superAdmin分配了一个新用户( )。user_1

然后我开始创建一个政策并将其附加到该superAdmin组,该政策如下所示

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt15094*****",
            "Effect": "Allow",
            "Action": [
                "ec2:*"
            ],
            "Resource": [
                "arn:aws:ec2:eu-west-1:%my-account-id%:instance/i-%instance-id%"
            ]
        }
    ]
}

我确保资源遵循资源政策准确无误。(注:这些实例在爱尔兰运行,根据是相同的eu-west-1

然后我调用此策略staging_access并将其附加到user_1(但也删除了所有其他策略):

在此处输入图片描述

问题

问题是,当我以 身份登录时user_1,我看不到任何内容:

在此处输入图片描述

当我进入实例页面时,什么也没有显示:

在此处输入图片描述

更新

我注意到,如果我简单地将资源变成通配符,一切都会正常:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1509458879000",
            "Effect": "Allow",
            "Action": [
                "ec2:*"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

有趣的是,即使我像下面这样将资源设置为所有 ec2 上的通配符:

         "Resource": [
            "arn:aws:ec2:*"
        ]

它仍然不起作用。这意味着访问控制台 UI 是一种不同的服务命名空间比 ec2。

答案1

您正在根据 EC2 实例 ID 定义策略。您需要添加更多权限,以便用户可以显示密钥对、卷、实例等内容。从命令行分配管理 EC2 实例的权限(可能非常严格)与访问 Amazon 管理控制台所需的权限之间存在差异。

另外,您的保单中有 % 字符。这真的包含在您的保单中吗?还是只是为了在您的问题中显示?

[更新]

控制资源访问的更好方法是使用标签。例如,要仅允许用户 XYZ 访问某些 EC2 实例,请标记这些实例。以下是使用标签的示例策略。此策略允许用户列出所有 EC2 实例,但仅允许对使用其用户名标记的实例执行所有 EC2 操作。

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

答案2

解决答案

这不是我真正想要的答案,但它满足了我的需求。我创建了两个策略,并将两者应用于同一个用户

政策 1:给予他们“旁观者”访问一切的权限:

显示政策

 {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "***",
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

政策 2:允许他们控制具体的我是

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "***",
            "Effect": "Allow",
            "Action": [
                "ec2:*"
            ],
            "Resource": [
                "arn:aws:ec2:eu-west-1:%account-id%:instance/i-%instance-id%"
            ]
        }
    ]
}

相关内容