如何允许组的所有成员在AWS IAM中担任角色?
我尝试使用以下语句,但如AWS IAM Principal Element中所述,组不能是主体。
我想实现以下目标:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::***:group/developer"
},
"Action": "sts:AssumeRole"
}
]
}
这个想法是组group/developer
的所有成员都应该能够担任这个角色。目标是我不必单独指定一个组中的每个成员。
有没有办法实现这个目标?
答案 0 :(得分:17)
将政策附加到论坛,授予在所需角色上调用sts:AssumeRole
的权限:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "123",
"Effect": "Allow",
"Action": [
"sts:AssumeRole"
],
"Resource": [
"arn:aws:iam::123456789012:role/desired-role"
]
}
]
}
此外,在角色上附加信任政策。示例策略(如下)信任该帐户中的任何用户,但他们还需要sts:AssumeRole
权限(上图)才能担任该角色。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:root"
},
"Action": "sts:AssumeRole"
}
]
}
答案 1 :(得分:2)
截至2018年12月(不知道在撰写本文时它们是否正确),上面表达的一些关于团体限制的陈述听起来具有误导性。
我想添加/阐明接受的答案:
1)仅对sts:AssumeRole
用户信任..:root
{strong>潜在地,允许任何用户承担相关角色。除非您还授予某些用户或组该角色的权限,否则将不允许该权限。
2)如果像我一样,由于资源位于不同的堆栈和/或循环依赖项中而无法在组定义中指定权限,则用于定义与组关联的策略的代码为:
DevelopersAccess:
Type: AWS::IAM::Policy
Properties:
Groups:
- !ImportValue another-stack-DevelopersGroupNameNotArn
PolicyName: DevelopersAccess
PolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Action:
- sts:AssumeRole
Resource:
- arn:aws:iam::123456789012:role/desired-role
请注意,您必须在Groups
下列出组名,而不是ARN。
答案 2 :(得分:1)
这可以通过不同的方式完成。但是,不确定这是否是你想要的。
1)使用create-policy创建策略。
2)使用attach-role-policy将策略附加到arn:aws:iam::***:role/developer
角色
3)使用create-group创建预期的Group
4)使用attach-group-policy将指定的托管策略附加到指定的组。
可以通过AWS控制台或AWS SDK而不是CLI来实现。请参阅Attaching a Policy to an IAM Group
这样,您就不必将角色分别添加到组中的每个成员。