我有一个IAM角色(其中有许多策略和信任关系(。我在构建AWS Cognito用户池时使用了这个。但是,此IAM角色将很快被删除。
手动复制将是一件苦差事,而且不可重复。我想通过CLI或其他可重复方式的脚本进行复制。
到目前为止,我已经搜索了stackoverflow和谷歌,但没有找到任何相关的内容。
感谢您的帮助。
看起来您需要使用:
list_role_policies()
以获取附加到角色的内联策略的名称get_role_policy()
检索内联策略list_attached_role_policies()
列出附加到角色的托管策略
然后创建一个新角色并使用:
put_role_policy()
附加内联策略attach_role_policy()
附加托管策略
还必须复制信任关系。
感谢@JohnRotenstein指出了正确的方向。我提出了一个Node.js脚本来自动执行IAM角色复制过程。
它与使用的AWS SDK API一起执行的步骤:
- 获取源角色及其信任关系策略:
getRole()
- 获取源角色的内联策略:
listRolePolicies()
、getRolePolicy()
- 获取源角色的托管策略(AWS和客户创建的(:
listAttachedRolePolicies()
- 创建一个新角色,复制所有相关属性(包括信任策略(:
createRole()
- 将在源角色中找到的所有内联策略添加到新角色:
putRolePolicy()
- 附加源角色的所有托管策略:
attachRolePolicy()
这个过程非常简单。。。唯一有趣的细节是步骤2和3需要递归提取,以适应策略响应可以分页的事实。
如何复制AWS IAM角色。
如果Python是一个选项,那么boto3可能会有所帮助(AWS的Python SDK(
创建角色:https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/iam.html#IAM.Client.create_role
创建策略:https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/iam.html#IAM.Client.create_policy
更多信息:https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/iam.html#clienthttps://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/iam.html