amazon-web-services - services - identity & access management




グループに役割を引き受ける方法を教えてください。 (3)

グループの全メンバーが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すべてのメンバーがその役割を引き受けることができるはずであるということです。 目的は、グループ内の各メンバーを個別に指定しなくても済むようにしておくことです。

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


2018年12月現在(執筆時点で正しいかどうかわからない)、グループに対する制限について上に述べたいくつかのステートメントは誤解を招く可能性があります。

受け入れられた答えを追加/明確にしたいのですが。

1) sts:AssumeRole信頼する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ではなく、グループ名をリストする必要があります。


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

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

AWSのドキュメントによるとhttps://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html


希望するロールに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"
    }
  ]
}