【发布时间】:2020-07-08 21:53:33
【问题描述】:
我正在使用 AWS CDK,每次创建新资源(CodePipeline、VPC 等)时,我都会进入同一个循环......
- 尝试部署
- “您无权 foo:CreateBar”
- 更新 IAM 权限
- 尝试部署
- “您无权使用 baz:CreateZzz”
- 更新 IAM 权限
...一遍又一遍。然后我cdk destroy时也是这样,但是对于“foo:DeleteFoo”
是否有更有效的方法来确定策略执行特定 CDK 操作所需的权限?也许在我可以参考的文档中的某个地方?
谢谢
【问题讨论】:
-
你能分享一个特定资源有特定错误的例子吗?
-
是的,如果我更新我能够部署堆栈的权限。但是随着堆栈变得越来越大,失败是很耗时的,所以我想知道是否有办法提前(在部署失败之前)知道部署用户需要什么权限(通过 cli 命令、文档、或其他)。
-
有两种方法,这两种方法都不是那么可口,因此我不提供它们作为答案:使用管理策略运行或为资源类型执行
cdk synth和 grep,然后构建你的基于创建和销毁这些资源所需的权限的角色和策略。拒绝简单地走管理员访问路线,我使用了多种后者,随着时间的推移,我建立了一个开发角色,涵盖了我的大部分 CDK 用例。无论哪种方式都不理想。 -
我认为这是不可行的。理论上可以分析合成的模板。尽管这可能会比您描述的烦人的循环花费您更多的时间。作为替代方案,允许通过 CloudFormation 触发的所有内容,并明确拒绝您不希望由 CFN 管理的内容。这不是最小特权原则,而是不要对每一个微小的变化都发疯的原则。 ;) 这是执行此操作的政策:stackoverflow.com/a/61102280/2753241
-
这并不是一个专门的 CDK 问题 - 在 AWS 中获得正确的权限是一项挑战,他们可以通过文档做得更好。此外,由于 CDK 是 Cloudformation 之上的抽象,因此它变得更加困难。但是正如上面提到的那样,如果您运行 cdk synth 并检查正在创建的资源的类型,例如类型:AWS::Cognito::UserPool 应该让您大致了解您需要授予的权限,这可能是一个有用的参考docs.aws.amazon.com/service-authorization/latest/reference/…
标签: amazon-cloudformation aws-cdk