web-dev-qa-db-ja.com

グループに役割を引き受けさせるにはどうすればよいですか?

グループのすべてのメンバーがAWS IAMでロールを引き受けることをどのように許可できますか?

次のステートメントを使用して試しましたが、 AWS IAMプリンシパル要素 で指定されているように、グループをプリンシパルにすることはできません。

私は以下のようなことを達成したいです:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::***:group/developer"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

アイデアは、グループのすべてのメンバーがgroup/developerが役割を引き受けることができる必要があります。目的は、グループ内の各メンバーを個別に指定する必要がないようにすることです。

これを達成する方法はありますか?

26
Rentrop

グループにポリシーを添付目的のロールで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"
    }
  ]
}
30
John Rotenstein

IAMグループをプリンシパルとして指定することはできません。

AWSアカウント、IAMユーザー、IAMロール、フェデレーテッドユーザー、または想定ロールユーザーのAmazonリソースネーム(ARN)を使用してプリンシパルを指定します。 IAMグループをプリンシパルとして指定することはできません。

AWSのドキュメントごと https://docs.aws.Amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html

5
Edgar Martinez

2018年12月現在(執筆時点でそれらが正しいかどうかはわかりません)、グループの制限について上記で表明したいくつかの声明は誤解を招くようです。

受け入れられた回答を追加/明確化したい:

1)sts:AssumeRoleから..:rootユーザーへの信頼POTENTIALLYのみは、すべてのユーザーが問題の役割を引き受けることを許可します。一部のユーザーまたはグループに役割を引き受ける権限も付与しない限り、それは許可されません。

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ではなくグループ名をリストする必要があることに注意してください。

4
jbasko

これは別の方法で行うことができます。しかし、これがあなたが望むものであるかどうかはわかりません。

1) create-policy を使用してポリシーを作成します。
2) attach-role-policy を使用して、arn:aws:iam::***:role/developerロールにポリシーをアタッチします。
3) create-group を使用して、目的のGroupを作成します。
4) attach-group-policy を使用して、指定した管理ポリシーを指定したグループにアタッチします。

CLIを使用する代わりに、AWSコンソールまたはAWS SDKを使用して同じことを実現できます。参照してください IAMグループへのポリシーのアタッチ

これにより、グループの各メンバーに個別にロールを追加する必要がなくなります。

1
phoenix