gpt4 book ai didi

amazon-web-services - 如何在 IAM 主体 cloudformation 模板映射中允许显式角色 ARN 和通配符角色(甚至帐户中的所有角色)?

转载 作者:行者123 更新时间:2023-12-03 07:11:58 24 4
gpt4 key购买 nike

我有一个角色,我想根据部署到的阶段授予 AssumeRole 权限。这 90% 有效,但我试图对一部分进行通配,但它没有按照我需要的方式工作。

在我的映射中,我有这样的内容:

  Mappings:
TestRoleMapping:
us-east-1:
beta: ['arn:aws:iam::11111111111:role/somePrefix-blah-TestInvocationRole', 'arn:aws:iam::2222222222:role/TestInvocationRole']
prod: ..... etc

然后我在这里使用映射:

  Resources:
SomeReadRole:
Type: AWS::IAM::Role
Properties:
RoleName: { Fn::Sub: "${ApplicationName}-read-role" }
AssumeRolePolicyDocument:
Statement:
- Action: [ 'sts:AssumeRole' ]
Effect: Allow
Principal:
AWS: !FindInMap
- TestRoleMapping
- !Ref 'AWS::Region'
- !Ref Stage
Version: '2012-10-17'
Policies:
- PolicyDocument:
Statement:
- Action: [ 's3:Get*' ]
Effect: Allow
Resource: '*'
Version: '2012-10-17'
PolicyName: "lambdaPolicy"

当我部署它时,它工作得很好,因为我使用的是所有硬编码的角色。但是,我希望允许帐户 11111111111 中的任何角色拥有权限,或者(更好)任何以“TestInitationRole”结尾的角色。我尝试将映射中的字符串替换为 'arn:aws:iam::11111111111:role/*-TestInitationRole' 或仅 'arn:aws:iam::11111111111:role/*' 但它说主体无效。我读过我们可以在 ARN 的任何段中放置通配符,但我猜我在这种情况下误用了它。

如何让角色同时向硬编码角色和通配符角色授予权限?

最佳答案

显然,由于主体本身不能包含任何通配符,所以我最终尝试了这样的方法:

        AssumeRolePolicyDocument:
Statement:
- Action: [ 'sts:AssumeRole' ]
Effect: Allow
Principal:
AWS: '*'
Condition:
StringLike: { "aws:PrincipalArn" : !FindInMap [ TestRoleMapping, !Ref 'AWS::Region', !Ref Stage ] }

并按照我最初的意图在角色映射中包含通配符:

  Mappings:
TestRoleMapping:
us-east-1:
beta: ['arn:aws:iam::11111111111:role/somePrefix-*-TestInvocationRole', 'arn:aws:iam::2222222222:role/TestInvocationRole']
prod: ....

这似乎有效。但是,我在 IAM 控制台中收到有关主体为“*”的警告,我不确定这是否是最佳实践。仍然对更好的想法持开放态度。

关于amazon-web-services - 如何在 IAM 主体 cloudformation 模板映射中允许显式角色 ARN 和通配符角色(甚至帐户中的所有角色)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70854370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com