Pourquoi je reçois l'erreur « Accès refusé » ou « Informations non valides » lorsque j'essaie d'endosser un rôle IAM entre comptes ?

Date de la dernière mise à jour : 30/07/2021

J'ai essayé d'endosser un rôle AWS Identity and Access Management (IAM) entre comptes. Toutefois, un message d'erreur de ce type s'affiche :

« Une erreur s'est produite (Accès refusé) lors de l'appel de l'opération AssumeRole : »

-ou-

« Informations non valides dans un ou plusieurs champs. Vérifiez vos informations ou contactez votre administrateur. »

Brève description

Pour endosser le rôle IAM dans un autre compte AWS, commencez par modifier les autorisations d'un compte (le compte qui a endossé le rôle IAM). Ensuite, modifiez la stratégie d'approbation de l'autre compte (le compte qui permet d'endosser le rôle IAM). Par exemple, supposons que vous disposez de deux comptes, l'un nommé Account_Bob et l'autre nommé Account_Alice. Vous avez également un utilisateur ou un rôle IAM nommé Bob dans Account_Bob et un rôle IAM nommé Alice dans Account_Alice. Dans ce cas de figure, Bob endossera le rôle IAM nommé Alice.

Pour utiliser l'appel d'API AssumeRole avec plusieurs comptes ou entre deux comptes, vous devez disposer d'une stratégie d'approbation pour accorder à l'autorisation d'endosser des rôles similaires à ce qui suit :

Voici un exemple des autorisations requises pour Bob :

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

Voici un exemple de stratégie d'approbation pour Alice :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::ACCOUNT_Bob:user/Bob"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

Résolution

Une bonne pratique consiste à vous assurer des points suivants :

Remarque: si vous recevez des erreurs lors de l'exécution de commandes depuis l'interface de ligne de commande AWS (AWS CLI), assurez-vous d'utiliser la version la plus récente de l'interface de ligne de commande AWS CLI.

  • Bob dispose des autorisations pour AssumeRole.
  • Vous êtes connecté au compte AWS en tant que Bob. Pour plus d'informations, consultez votre ID de compte AWS et son alias.
  • Si Account_Bob fait partie d'une AWS Organizations, il peut y avoir une politique de contrôle des services (SCP) qui limite l'accès à AssumeRole avec Account_Bob ou Account_Alice. Pour plus d'informations, consultez Politiques de contrôle des services (SCP).
  • Si vous utilisez la création de chaînes de rôles, vous utilisez peut-être les informations d'identification IAM d'une session précédente. Pour plus d'informations, consultez la section relative à la création de chaînes de rôles dans les termes et concepts relatifs aux rôles.