我怎样才能让一个组承担一个角色?
How can I allow a Group to assume a Role?
如何允许一个组的所有成员在 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
的所有成员都应该能够承担这个角色。 objective 是我应该不必单独指定组中的每个成员。
有办法实现吗?
这可以通过不同的方式完成。但是,不确定这是不是你想要的。
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
这样,您就不必为组中的每个成员单独添加角色。
将策略附加到组,授予对所需角色调用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"
}
]
}
您不能将 IAM 组指定为委托人。
您使用 AWS 账户、IAM 用户、IAM 角色、联合用户或代入角色用户的 Amazon 资源名称 (ARN) 指定委托人。您不能将 IAM 组指定为委托人。
根据 AWS 中的文档 https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html
截至 2018 年 12 月(在撰写本文时不知道它们是否正确)上面表达的一些关于对群体的限制的陈述听起来具有误导性。
我想add/clarify接受的答案:
1) 信任 sts:AssumeRole
至 ..:root
用户 仅可能 允许任何用户担任相关角色。除非您也授予某些用户或组承担该角色的权限,否则将不允许。
2) 如果你像我一样,由于资源存在于不同的堆栈中而无法拥有组定义中指定的权限 and/or 循环依赖,定义与组关联的策略的代码是:
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。
如何允许一个组的所有成员在 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
的所有成员都应该能够承担这个角色。 objective 是我应该不必单独指定组中的每个成员。
有办法实现吗?
这可以通过不同的方式完成。但是,不确定这是不是你想要的。
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
这样,您就不必为组中的每个成员单独添加角色。
将策略附加到组,授予对所需角色调用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"
}
]
}
您不能将 IAM 组指定为委托人。
您使用 AWS 账户、IAM 用户、IAM 角色、联合用户或代入角色用户的 Amazon 资源名称 (ARN) 指定委托人。您不能将 IAM 组指定为委托人。
根据 AWS 中的文档 https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html
截至 2018 年 12 月(在撰写本文时不知道它们是否正确)上面表达的一些关于对群体的限制的陈述听起来具有误导性。
我想add/clarify接受的答案:
1) 信任 sts:AssumeRole
至 ..:root
用户 仅可能 允许任何用户担任相关角色。除非您也授予某些用户或组承担该角色的权限,否则将不允许。
2) 如果你像我一样,由于资源存在于不同的堆栈中而无法拥有组定义中指定的权限 and/or 循环依赖,定义与组关联的策略的代码是:
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。