web-dev-qa-db-fra.com

Comment puis-je permettre à un groupe d'assumer un rôle?

Comment puis-je autoriser tous les membres d'un groupe à assumer un rôle dans AWS IAM?

J'ai essayé d'utiliser l'instruction suivante, mais comme spécifié dans AWS IAM Principal Element , un groupe ne peut pas être un principal.

Je veux réaliser quelque chose comme ci-dessous:

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

L'idée est que tous les membres du groupe group/developer devrait pouvoir assumer le rôle. L'objectif est de ne pas avoir à spécifier individuellement chaque membre d'un groupe.

Existe-t-il un moyen d'y parvenir?

26
Rentrop

Attachez une stratégie au groupe qui accorde la permission d'appeler sts:AssumeRole sur le rôle souhaité:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "123",
            "Effect": "Allow",
            "Action": [
                "sts:AssumeRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/desired-role"
            ]
        }
    ]
}

Joignez également un Trust Policy on the Role. L'exemple de stratégie (ci-dessous) fait confiance à n'importe quel utilisateur du compte, mais ils auraient également besoin de sts:AssumeRole autorisations (ci-dessus) pour assumer le rôle.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:root"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
30
John Rotenstein

Vous ne pouvez pas spécifier des groupes IAM en tant que principaux.

Vous spécifiez un principal à l'aide du nom Amazon Resource Name (ARN) du compte AWS, de l'utilisateur IAM, du rôle IAM, de l'utilisateur fédéré ou de l'utilisateur à rôle supposé. Vous ne pouvez pas spécifier des groupes IAM en tant que principaux.

Selon la documentation dans AWS https://docs.aws.Amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html

5
Edgar Martinez

En décembre 2018 (aucune idée si elles étaient correctes au moment de la rédaction), certaines déclarations exprimées ci-dessus concernant les limitations aux groupes semblent trompeuses.

Je voudrais ajouter/clarifier la réponse acceptée:

1) faire confiance à sts:AssumeRole à ..:root utilisateur niquement POTENTIELLEMENT permet à tout utilisateur d'assumer le rôle en question. À moins que vous n'accordiez également l'autorisation à un utilisateur ou à un groupe d'assumer le rôle, il ne sera pas autorisé.

2) si vous, comme moi, ne pouvez pas avoir les autorisations spécifiées dans la définition de groupe en raison de ressources vivant dans des piles différentes et/ou des dépendances circulaires, le code pour définir une politique associée à un groupe est:

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

Notez que sous Groups vous devez lister les noms de groupe, pas les ARN.

4
jbasko

Cela peut être fait d'une manière différente. Mais, je ne sais pas si c'est ce que vous voulez.

1) Créez une politique en utilisant create-policy .
2) Attachez la politique au arn:aws:iam::***:role/developer rôle utilisant attach-role-policy .
3) Créez le Group voulu en utilisant create-group .
4) Attachez la stratégie gérée spécifiée au groupe spécifié en utilisant attach-group-policy .

La même chose peut être obtenue via la console AWS ou AWS SDK au lieu d'utiliser CLI. Veuillez voir Attacher une stratégie à un groupe IAM

De cette façon, vous n'avez pas à ajouter les rôles individuellement à chaque membre du groupe.

1
phoenix