对于每个项目,我们都会创建两个AWS账户。一种用于开发和登台,另一种用于生产。开发人员在根帐户中有一个IAM用户,而用户在其他帐户中承担了访问这些帐户的角色。
我想创建一个策略,该策略使开发人员几乎可以执行开发帐户中的所有操作,包括创建新策略并附加这些策略(用于新资源等),但是开发人员不能修改自己的策略角色/为自己添加新角色。
有什么想法吗?
答案 0 :(得分:3)
我正面临着同样的问题,我已经发布了一个有关该here的问题(类似问题)。
经过大量研究,我得出一个结论:不允许开发人员创建角色和策略。
为什么?
我没有找到一种方法来回答我的问题,即用户只能为资源而不是委托人创建角色。
即使我找到了1.的解决方案,也存在一个缺陷:假设开发人员可以为资源创建角色,但不能为委托人创建角色,并且他(她)可以创建他(她)想要的每个策略。在这种情况下,他(她)可以为Lambda创建策略,并可以在Lambda内部创建脚本,以执行附加策略允许的操作。
我的最终解决方案:
创建两个名为 Developers 和 IAM 的组,其中 IAM 用户可以创建任何角色和策略,因此是受信任的开发人员,而例如,>开发人员只能附加路径为services-roles
的策略。
示例附加到 Developers 组的角色-允许用户使用路径iam
创建除PassRole
以外的所有service-roles
操作之外的所有内容:
DevelopersIAMManagedPolicy:
Type: AWS::IAM::ManagedPolicy
Properties:
Description: 'Developers.'
# Groups:
# - String
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action: iam:PassRole
Resource: 'arn:aws:iam::*:role/projects-roles/*'
- Effect: Allow
NotAction: iam:*
Resource: '*'
我愿意接受新想法,但是这种解决方案是我所获得的最安全的解决方案。