【问题标题】:AWS Admin has no EC2 Describe operationsAWS 管理员没有 EC2 描述操作
【发布时间】:2021-09-13 17:30:57
【问题描述】:

我有一个 AdministratorAccess 的 IAM 角色,但是当我将自定义模板上传到 AWS CloudFormation 时,我收到以下错误:

操作失败,ComputeEnvironment 因错误而无效: CLIENT_ERROR - 您无权调用 EC2 描述操作。 需要执行 CreateLaunchConfiguration 操作。

所有其他资源似乎都已成功完成,所以我不确定是否发生了某种角色委派?

【问题讨论】:

  • 可以直接运行(不是通过cloudformation)吗?
  • 是的,从我的 CLI 配置用户运行 aws ec2 describe-instances 工作正常。我想知道即使该角色具有管理员访问权限,是否某些权限也不会传播到 Cloud Formation。
  • 或者命令可能不在角色下运行。不想说 - 但需要大量的故障排除。您说 role - 将角色分配给服务器实例。当您运行 CF 模板时,它通常在分配给 user 的用户和权限下运行。你确定你是指角色吗?
  • 我创建了一个属于 AdministratorAccess 组的新用户,并使用新密钥配置了我的 ~/.aws/credentials。在尝试了aws --debug cloudformation create-stack --template-url <url> --stack-name my_stack --capabilities CAPABILITY_NAMED_IAM 并用CAPABILITY_IAM 替换了这些功能之后,我一直看到同样的事情。将继续尝试寻找一些有用的调试日志...
  • 约翰,这似乎确实是问题所在。在创建堆栈的第二步,我必须将 CustomRole 设置为 true 并在第三步指定 IAM 角色(在我的情况下为管理员)。任何其他排列(真 + 无角色、假 + 角色、假 + 无角色)都不起作用。我将进一步调查并完全理解为什么会这样,然后回答我自己的问题。

标签: amazon-web-services amazon-cloudformation amazon-iam


【解决方案1】:

您可能受到Service Control Policies (SCP) 或Permission Boundaries 甚至其他policy types 的影响。

关于 SCP:

SCP 限制成员中 IAM 用户和角色的权限 帐户,包括成员帐户的 root 用户。任何账户都有 只有在它上面的每个父母允许的那些权限。如果一个 权限在帐户上方的任何级别都被阻止,要么 隐式(不包含在 Allow 策略语句中)或 明确地(通过包含在拒绝策略声明中),用户或 受影响帐户中的角色无法使用该权限,即使 账户管理员将 AdministratorAccess IAM 策略附加到 / 授予用户的权限。

另见How to use service control policies to set permission guardrails across accounts in your AWS Organization

正如this article 所说,

AWS 组织的成员账户无法查看 SCP 已应用于他们。此外,当动作被拒绝时, 无法知道这是否是由于 IAM 政策、SCP、 或其他东西(例如会话策略、IAM 边界、资源策略)。 这意味着错误消息中不会有任何指示 API 调用或在 CloudTrail 日志中显示拒绝调用的原因。这 会使调试问题变得困难。

This article 有一些有用的图表,显示了可能影响/限制访问的不同事物。

【讨论】:

  • 可能,但极不可能。 OP 没有提及 AWS 组织,如果其他一切正常 - 它可能是单个组织设置
  • 没错。没有 SCP,因为它是个人帐户,也没有任何权限边界。
【解决方案2】:

我已经解决这个问题四天了,终于想出了一个我认为可以解决它的解决方案。

有两种 CDK 引导程序:传统的和现代的。旧版是默认设置。

旧版引导程序中似乎存在一个错误,该错误会影响某些帐户,而不会影响其他帐户。我能够验证相同的代码在一个帐户上是否适用于我,但在新创建的帐户上产生了此问题的确切症状。

如果您由于某种原因没有使用旧版引导程序,只需转换为现代引导程序即可。这应该会使错误(以及错误的原因)消失。

说明在这里:https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html

基本上,您必须在调用cdk bootstrap 之前设置一个环境变量,然后您必须更改项目中的某些代码或某些配置。

CDK 中存在此功能并不直观,也不能解决此特定问题。但是,它为我清除了它。也许它会对其他人做同样的事情。

【讨论】:

    猜你喜欢
    • 2018-09-26
    • 2017-03-16
    • 1970-01-01
    • 2018-06-18
    • 1970-01-01
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    相关资源
    最近更新 更多