amazon-web-services - 可以创建策略并将策略共享给多个帐户的角色
问题描述
我正在尝试在一个 AWS 账户中创建一个策略,并且需要将该策略共享给多个账户(Prod、Dev、Sandbox)中的一个角色。
我可以手动添加 AWS 帐号并将 AWS Managed Policy 分配给角色,并且还需要创建多个角色。
我们怎样才能做到这一点?
这是我写的代码
AWSTemplateFormatVersion: '2010-09-09'
Description: 'Create a role that authorizes access to users in another account'
Metadata:
Version: 0.7
Parameters:
RoleName:
Type: String
Default: R_EC2-Describe-Instance
MainAccountId:
Type: String
Description: >-
Include the Managed Services Account ID(the account ID where the Main VPC is registered)
Default: 111111111111
MaxLength: 12
MinLength: 12
Resources:
AssumeRole:
Type: AWS::IAM::Policy
Properties:
RoleName: !Ref RoleName
Policies:
-
PolicyName: "CoreSVC-Describe-EC2"
PolicyDocument:
Version: "2012-10-17"
Statement:
-
Effect: "Allow"
Action:
- 'sts:AssumeRole'
Resource: !Join [ "", [ "arn:aws:iam::", !Ref MainAccountId, ":role/R_EC2-Describe-Instance" ] ]
AssumeRolePolicyDocument:
Version: '2012-10-17'
ManagedPolicyName:
- "arn:aws:iam::aws:policy/AmazonEC2ReadOnlyAcess"
Statement:
- Effect: Allow
Principal:
"AWS": !Join [ "", [ "arn:aws:iam::", !Ref MainAccountId, ":root" ] ]
Action:
- sts:AssumeRole
Condition: {}
解决方案
您不能与其他账户共享 IAM策略,因为它没有资源策略来允许它。
您共享的代码示例是与多个账户共享 IAM角色,这可以通过角色的资源/信任策略来实现。
如果您想在多个账户之间共享相同的策略,那么您可能应该使用CloudFormation StackSets(如 @ervin-szilagyi 所述)或其他一些基础设施即代码方法。
如果您想与其他帐户共享角色,那么您已经完成了。所缺少的只是这些帐户中有权访问sts:AssumeRole
操作的角色,以便它可以承担您在代码中共享的角色。
推荐阅读
- python-3.x - python中二叉树的顶视图
- node.js - 找不到模块:无法解析“perf_hooks”ReactJS
- flutter - 当我的应用程序未运行时如何检测颤动的屏幕截图
- java - GRPC 状态码到 java 异常映射
- python-3.x - 执行任意代码,但模拟一切
- javascript - 在 Javascript 中建立客户端-服务器连接的最简单方法是什么?
- python - Geckodriver 可执行文件需要在 Raspberry Pi 上的路径中
- angular - 如何在点击事件上相对于传单标记定位离子弹出框?
- javascript - 如何在离子复选框旁边创建一个段落?
- node.js - OpenPGP UTF-8 与二进制格式