49

如何允许组的所有成员在 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应该能够承担这个角色。目标是我应该不必单独指定组中的每个成员。

有没有办法做到这一点?

4

4 回答 4

56

将策略附加到授予调用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"
    }
  ]
}
于 2016-01-22T09:27:37.960 回答
17

您不能将 IAM 组指定为委托人。

您可以使用 AWS 账户、IAM 用户、IAM 角色、联合用户或假定角色用户的 Amazon 资源名称 (ARN) 指定委托人。您不能将 IAM 组指定为委托人。

根据 AWS https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html中的文档

于 2018-05-10T21:09:12.417 回答
7

截至 2018 年 12 月(在撰写本文时不知道它们是否正确),上面关于群组限制的一些陈述听起来具有误导性。

我想添加/澄清接受的答案:

1)仅信任sts:AssumeRole用户可能允许任何..:root用户担任相关角色。除非您还授予某些用户或组担任该角色的权限,否则将不允许这样做。

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。

于 2018-12-31T17:37:02.767 回答
1

这可以通过不同的方式完成。但是,不确定这是否是您想要的。

1) 使用create-policy 创建策略
2)arn:aws:iam::***:role/developer使用attach-role-policy 将策略附加到角色。
3)Group使用create-group创建预期。4) 使用attach-group-policy
将指定的托管策略附加到指定的组。

同样可以通过 AWS 控制台或 AWS SDK 而不是使用 CLI 来实现。请参阅将策略附加到 IAM 组

这样,您不必将角色单独添加到组中的每个成员。

于 2016-01-21T16:42:58.000 回答