我在AdministratorAccess
中扮演IAM角色,但当我将自定义模板上传到AWS CloudFormation时,我会收到以下错误:
操作失败,ComputeEnvironment变为INVALID并出现错误:CLIENT_ERROR-您无权调用EC2描述操作。需要执行CreateLaunchConfiguration操作。
所有其他资源似乎都成功完成了,所以我不确定是否发生了某种角色委派?
您可能会受到服务控制策略(SCP(、权限边界甚至其他策略类型的影响。
- 基于身份的策略
- 基于资源的策略
- 权限边界
- 组织SCP
- 访问控制列表
- 会话策略
关于SCP:
SCP限制成员中IAM用户和角色的权限帐户,包括成员帐户的根用户。任何帐户都有只有它上面的每个父级允许的权限。如果权限在帐户以上的任何级别都被阻止隐含地(通过不包含在Allow策略语句中(或明确地(通过包含在拒绝策略语句中(,用户或受影响帐户中的角色不能使用该权限,即使帐户管理员使用附加AdministratorAccess IAM策略/对用户的权限。
另请参阅如何使用服务控制策略在AWS组织中跨帐户设置权限护栏
正如本文所述,
AWS组织的成员帐户无法查看SCP已经应用于他们的。此外当拒绝动作时,无法知道这是否是由于IAM策略、SCP或其他原因造成的,或其他东西(例如会话策略、IAM边界、资源策略(。这意味着来自API调用或在CloudTrail日志中显示拒绝调用的内容。这可能会使调试问题变得困难。
本文提供了一些有用的图表,显示了可能影响/限制访问的不同因素。
我已经处理这个问题四天了,终于想出了一个我认为可以解决它的解决方案
CDK引导程序有两种:传统引导程序和现代引导程序。Legacy是默认设置。
遗留引导程序中似乎有一个错误,它影响了一些帐户,而不会影响其他帐户。我能够验证相同的代码在一个帐户上对我有效,但在一个新创建的帐户上产生了这个问题的确切症状。
如果出于某种原因,您没有被遗留的引导程序所困扰,只需转换为现代引导程序即可。这应该会使错误(以及错误的原因(消失。
说明如下:https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html
基本上,在调用cdk bootstrap
之前,您必须设置一个环境变量,然后您必须更改项目中的一些代码或配置。
CDK中根本不存在此功能,也不认为它可以解决此特定问题。然而,它为我扫清了障碍。也许它也会为其他人做同样的事情。