【问题标题】:Why won't IAM "AmazonEC2FullAccess" policy allow user to launch instances?为什么 IAM“AmazonEC2FullAccess”策略不允许用户启动实例?
【发布时间】:2018-08-24 13:43:39
【问题描述】:

附加到我设置的 IAM developers 组的策略如下:

但是,无法启动新实例。在该组中的用户选择与其关联的密钥对后,即到达最后一步,他们会在下一页收到以下消息:

启动失败

您无权执行此操作。编码授权失败消息:WZzytnkJ4T3-nkMYslM...

鉴于这些政策,是什么阻止了开发者推出新实例?

【问题讨论】:

  • 您可以使用aws sts decode-authorization-message 解码消息,这将为您提供原因。完整的文档可以在这里找到:docs.aws.amazon.com/cli/latest/reference/sts/…。 IAM 用户中可能有一个可以强制执行某些标签的覆盖策略。
  • @krishna_mee2004,我需要在哪里输入该命令?
  • 查看 docs.aws.amazon.com/cli/latest/userguide/… 了解 AWS CLI 的精彩介绍
  • 我知道这可能是一个愚蠢的问题,但想排除您的用户绝对是该组的成员吗?

标签: amazon-web-services amazon-ec2


【解决方案1】:

可能是使用 IAM 角色 启动实例,并且该组没有iam:PassRole 权限(不在ec2:* 权限空间之外)。

您应该添加这样的策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PassRoleToEC2",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "*"
        }
    ]
}

这句话“允许此用户将任何 (*) 角色传递给 EC2 实例”

实际上,您应该将此类权限仅限于特定角色,否则普通用户可以选择管理员角色。然后,如果他们登录到实例,他们将有权访问对整个 AWS 账户具有管理员权限的凭证。

或者,不要在启动实例时选择角色。然后它应该可以正常启动(假设这是导致错误的问题)。

【讨论】:

  • 我该如何实现?我可以从 AWS 控制台实现它吗?
  • 如果他说的是要检查这个的原因,您可以简单地附上他在回答该用户时提到的策略并要求他们再试一次。
  • 我在上面添加了一个策略。请尝试了解此策略的作用,因为如果配置不正确,它可能会成为破坏安全的媒介。
【解决方案2】:

用户需要PassRole 权限。

角色必须与 EC2 实例的“启动”相关联。

PassRole 权限可帮助您确保用户不会将角色传递给 EC2 实例,其中该角色的权限超出了您希望用户拥有的权限。

如下例所示,如果 EC2 启动需要访问 S3,您的用户必须能够传递所需的 S3 角色。

{
  "Effect":"Allow",
  "Action":"iam:PassRole",
  "Resource":"arn:aws:iam::123456789012:role/S3Access"
}

文档链接: https://aws.amazon.com/blogs/security/granting-permission-to-launch-ec2-instances-with-iam-roles-passrole-permission/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-30
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多