Comment puis-je résoudre l'erreur de politique d'approbation IAM « Failed to update trust policy. Invalid principal in policy » ?

Lecture de 5 minute(s)
0

Je reçois l'erreur « Failed to update trust policy. Invalid principal in policy » (Impossible de mettre à jour la politique d'approbation. Principal non valide dans la politique), lorsque j'essaie de modifier la politique d'approbation de mon rôle de gestion des identités et des accès AWS (AWS IAM) à l'aide de la console de gestion AWS.

Brève description

Ce message d'erreur indique que la valeur d'un élément Mandataire de votre politique d'approbation IAM n'est pas valide. Pour résoudre cette erreur, confirmez les éléments suivants :

  • Votre politique d'approbation des rôles IAM utilise des valeurs prises en charge avec une mise en forme correcte pour l'élément Principal.
  • Si la politique d'approbation des rôles IAM utilise des identités IAM (utilisateurs, groupes d'utilisateurs et rôles) en tant que principaux, confirmez que l'utilisateur ou le rôle n'a pas été supprimé.

Remarque : les comptes AWS GovCloud (US) peuvent également recevoir cette erreur si le compte AWS standard essaie d'ajouter le numéro de compte AWS GovCloud (US). Vous ne pouvez pas créer de rôle pour déléguer l'accès entre un compte AWS GovCloud (US) et un compte AWS standard. Pour plus d'informations, consultez la section En quoi IAM diffère pour AWS GovCloud (US) (français non garanti).

Solution

Vérifier les valeurs prises en charge pour l'élément Mandataire

L'élément Principal de la politique d'approbation IAM de votre rôle doit inclure les valeurs prises en charge suivantes.

1.    Assurez-vous que la politique IAM inclut l'ID de compte AWS à 12 chiffres correct similaire à ce qui suit :

"Principal": {
"AWS": "123456789012"
}

Remarque : le compte AWS peut également être spécifié à l'aide de l'utilisateur racine Amazon Resource Name (ARN). Par exemple, arn:aws:iam::123456789012:root.

2.    Si les principaux de la politique d'approbation IAM sont des utilisateurs IAM, des rôles ou des utilisateurs fédérés (français non garanti), l'ARN complet doit être spécifié de la manière suivante :

"Principal": {
  "AWS": [
    "arn:aws:iam::123456789012:user/user-name",
    "arn:aws:iam::123456789012:role/role-name",
    "arn:aws:sts::123456789012:assumed-role/role-name/role-session-name",
    "arn:aws:sts::123456789012:federated-user/user-name"
  ]
}

3.    Si la politique d'approbation IAM inclut un caractère générique, suivez ces instructions.

Remarque : vous ne pouvez pas utiliser un caractère générique « * » pour faire correspondre une partie d'un nom de principal ou d'un ARN.

L'exemple suivant présente une utilisation incorrecte d'un caractère générique dans une politique d'approbation IAM :

"Principal": {
  "AWS": "arn:aws:iam::123456789012:user/user-*"
}

Pour faire correspondre une partie du nom d'un principal à l'aide d'un caractère générique, utilisez un élément Condition avec la clé de condition globale aws:PrincipalArn. Spécifiez ensuite un ARN avec le caractère générique.

Pour spécifier les identités de tous les comptes AWS, utilisez un caractère générique similaire au suivant :

"Principal": {
  "AWS": "*"
}

Important : vous pouvez utiliser un caractère générique dans l'élément Mandataire avec un effet Autoriser dans une politique d'approbation. Toutefois, cela permet à tout utilisateur IAM, toute session de rôle assumé ou tout utilisateur fédéré de n'importe quel compte AWS de la même partition (français non garanti) d'accéder à votre rôle. Les principaux d'utilisateurs et de rôles IAM au sein de votre compte AWS ne nécessitent aucune autre autorisation. Les principaux d'autres comptes AWS doivent disposer d'autorisations basées sur l'identité pour assumer votre rôle IAM.

Cette méthode n'autorise pas les principaux de session d'identité web, les principaux de session SAML ou les principaux de service à accéder à vos ressources.

Il est recommandé d'utiliser cette méthode uniquement avec l'élément Condition et une clé de condition telle que aws:PrincipalArn pour limiter les autorisations. Par exemple, votre fichier peut ressembler à ce qui suit :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringLike": {
          "aws:PrincipalArn": "arn:aws:iam::123456789012:user/user-*"
        }
      }
    }
  ]
}

Cet exemple de politique d'approbation utilise la clé de condition aws:PrincipalArn pour autoriser uniquement les utilisateurs avec un nom d'utilisateur correspondant à assumer le rôle IAM.

4.    Si votre rôle IAM est une fonction du service AWS, le principal de service complet doit être spécifié de la manière suivante :

"Principal": {
  "Service": "ec2.amazonaws.com"
}

5.    Vous pouvez utiliser des principaux de session SAML avec un fournisseur d'identité SAML externe pour authentifier les utilisateurs IAM. La politique d'approbation du rôle IAM doit comporter un élément Principal similaire à ce qui suit :

"Principal": {
  "Federated": "arn:aws:iam::123456789012:saml-provider/provider-name"
}

6.    Vous pouvez utiliser les principaux de session d'identité web pour authentifier les utilisateurs IAM. La politique d'approbation du rôle IAM qui fournit l'accès doit comporter un élément Principal similaire au suivant :

"Principal": { 
  "Federated": "cognito-identity.amazonaws.com" 
}

7.    Si vous utilisez différents types de principal dans une même instruction, formatez la politique d'approbation IAM de la manière suivante :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:user/user-name",
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

L'utilisateur ou le rôle IAM doit être une identité existante

Si la politique d'approbation des rôles IAM utilise des utilisateurs IAM ou des rôles en tant que mandataires, confirmez que ces identités IAM ne sont pas supprimées. L'erreur « Invalid principal in policy » (Mandataire non valide dans la politique) se produit si vous modifiez la politique d'approbation IAM et que le mandataire a été supprimé.

Remarque : si le mandataire a été supprimé, notez l'ID unique du mandataire dans la politique d'approbation IAM, et non l'ARN.


Informations connexes

Comment utiliser la Gestion des identités et des accès AWS (AWS IAM) pour autoriser l'utilisateur à accéder aux ressources ?

Comment accéder aux ressources d'un autre compte AWS à l'aide d'AWS IAM ?

Pourquoi existe-t-il un format de principal inconnu dans ma politique basée sur les ressources IAM ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an