问题描述
我拥有 AdministratorAccess
的 IAM 角色,但是当我将自定义模板上传到 AWS CloudFormation 时,出现以下错误:
操作失败,ComputeEnvironment 变为 INVALID,错误: CLIENT_ERROR - 您无权调用 EC2 描述操作。 需要执行 CreateLaunchConfiguration 操作。
所有其他资源似乎都成功完成,所以我不确定是否进行了某种角色委派?
解决方法
您可能受到Service Control Policies(SCP)或Permission Boundaries甚至其他policy types的影响。
- Identity-based policies
- Resource-based policies
- Permissions boundaries
- Organization SCPs
- Access control lists
- Session policies
关于 SCP:
SCP 限制了成员中 IAM 用户和角色的权限 帐户,包括成员帐户的根用户。任何账户都有 只有上面的每个父级允许的那些权限。如果一个 权限在帐户以上的任何级别被阻止,要么 隐式(不包含在 Allow 策略声明中)或 明确(通过包含在拒绝策略声明中),用户或 受影响帐户中的角色无法使用该权限,即使 帐户管理员将 AdministratorAccess IAM 策略附加到 / 给用户的权限。
正如 this article 所述,
AWS 组织的成员账户无法看到 SCP 已应用于他们。此外,当行动被拒绝时, 无法知道这是否是由于 IAM 策略、SCP、 或其他(例如会话策略、IAM 边界、资源策略)。 这意味着错误消息中不会有来自 API 调用或在 CloudTrail 日志中显示拒绝调用的内容。这 可能会使调试问题变得困难。
This article 有一些有用的图表,显示了可能影响/限制访问的不同事物。
,我已经解决这个问题四天了,终于想出了一个我认为可以解决它的解决方案。
CDK 引导程序有两种:传统和现代。旧版是默认设置。
旧版引导程序中似乎存在影响某些帐户而非其他帐户的错误。我能够验证相同的代码在一个帐户上对我有用,但在新创建的帐户上产生了此问题的确切症状。
如果您由于某种原因没有坚持使用旧版引导程序,只需转换为现代引导程序即可。这应该会使错误(以及错误的原因)消失。
说明如下:https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html
基本上,您必须在调用 cdk bootstrap
之前设置环境变量,然后您必须更改项目中的某些代码或某些配置。
CDK 中根本不存在此功能并不直观,也不能解决此特定问题。然而,它为我清除了它。也许对其他人也一样。