Comment résoudre l'erreur « Le rôle utilisateur/IAM X n'est pas autorisé à exécuter Y sur la ressource Z » dans AWS Glue ?

Lecture de 4 minute(s)
0

Ma tâche AWS Glue échoue en raison d'une erreur d'absence d'autorisations AWS Identity and Access Management (IAM) alors que les autorisations requises sont configurées.

Résolution

Dans AWS Glue, votre action peut échouer en raison d'une erreur d'absence d'autorisations pour les raisons suivantes :

  • L'utilisateur ou le rôle IAM que vous utilisez ne dispose pas des autorisations requises.
  • L'utilisateur IAM fait partie d'une organisation au sein d'AWS Organizations qui a mis en place une politique de contrôle des services (SCP) qui restreint des actions spécifiques
  • Le sous-réseau utilisé possède un point de terminaison de cloud privé virtuel (VPC) doté d'une politique qui autorise ou refuse certaines actions.

L'utilisateur ou le rôle IAM utilisé ne dispose pas des autorisations requises

Consultez cet exemple d'erreur d'absence d'autorisations :

"Failed to create job gluestudio-service.us-east-1.amazonaws.com] with exception "errorMessage":"User: arn:aws:sts::<AccountID>:assumed-role/<ConsoleAssumedRole>/<user> is not authorized to perform: iam:PassRole on resource: arn:aws:iam::<AccountID>:role/<GlueRoleName>"

Vous pouvez décomposer cette erreur en trois facteurs :

  • Le rôle User/IAM appelant l'action -arn:aws:iam : :111111111111111:role/service-role/AWSGlue-xxxxxx
  • L'action - iam:PassRole
  • La ressource sur laquelle l'action est exécutée -arn:aws:iam : :xxxxxxxxxxxxxxxx:role/AWSGlue

Vérifiez que l'utilisateur ou le rôle IAM utilisé comporte l'action requise sur la ressource.

1.    Ouvrez la console IAM.

2.    Recherchez l'utilisateur ou le rôle IAM que vous utilisez et vérifiez les politiques qui y sont associées. Dans l'exemple précédent, le rôle est arn:aws:iam : :xxxxxxxxx:user/yyyyyyyyyyy.

3.    Ajoutez une politique intégrée similaire à la suivante qui autorise l'action requise sur la ressource :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "FirstStatement",
      "Effect": "Allow",
      "Action": ["Action"],
      "Resource": "<ARN of resource>"
    }
  ]
}

Remarque : Remplacez l'action et l'ARN de la ressource dans cet exemple par l'action et la ressource spécifiques que vous avez précédemment identifiées dans le message d'erreur.

En utilisant l'exemple précédent, votre politique ressemble à ceci :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PassRolePermissions",
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::<AccountID>:role/<GlueRoleName>"
      ],
      "Condition": {
        "StringLike": {
          "iam:PassedToService": [
            "glue.amazonaws.com"
          ]
        }
      }
    }
  ]
}

Le SCP d'une organisation empêche une action sur la ressource

Vous pourriez recevoir un message d'erreur similaire à celui-ci :

"createJob: AccessDeniedException: User: arn:aws:sts::111111111111111:assumed-role/xxxxxxxxxx is not authorized to perform: glue:CreateJob on resource: arn:aws:glue:region:22222222222222:job/glue-job with an explicit deny in a service control policy"

Cette erreur est générée, car votre utilisateur IAM fait partie d'une organisation qui a mis en place des SCP. Le SCP vous empêche d'effectuer des actions spécifiques. Pour vérifier les autorisations associées à votre SCP, procédez comme suit :

1.    Ouvrez la console IAM.

2.    Choisissez Organization Activity, puis choisissez l'onglet Attached SCP.

3.    Passez en revue les SCP attachés à votre utilisateur IAM. Assurez-vous que vous disposez des autorisations nécessaires pour effectuer l'action souhaitée sur la ressource que vous utilisez.

Le sous-réseau utilisé possède un point de terminaison d’un VPC doté d'une politique qui autorise ou refuse certaines actions

Vous pourriez recevoir un message d'erreur similaire à celui-ci :

"User: arn:aws:sts::1111111111:assumed-role/xxxxxxxxx/yyyyyyyyyyy is not authorized to perform: glue:CreateJob because no VPC endpoint policy allows the glue:CreateJob action (Service: Glue, Status Code: 400, Request ID:111111111111111)"

Pour résoudre ce problème, procédez comme suit :

1.    Ouvrez la console Amazon Virtual Private Cloud (Amazon VPC).

2.    Choisissez Endpoints (Points de terminaison), puis choisissez le point de terminaison d’un VPC associé au sous-réseau que vous utilisez pour effectuer votre action.

3.    Sous Actions, choisissez Gérer la politique.

4.    Mettez à jour la politique de point de terminaison d’un VPC avec l'action souhaitée sur la ressource requise.

Dans cet exemple, vous mettez à jour la politique de point de terminaison d’un VPC requise pour ajouter l'action Glue:CreateJob :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Principal": "*",
      "Effect": "Allow",
      "Action": [
        "glue:CreateJob"
      ],
      "Resource": "*"
    }
  ]
}

Informations connexes

Créez un rôle IAM pour AWS Glue

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