¿Cómo soluciono el error “El rol de IAM/usuario X no tiene autorización para realizar Y en el recurso Z” en AWS Glue?

4 minutos de lectura
0

Mi trabajo de AWS Glue no funciona debido a un error de falta de permisos de AWS Identity and Access Management (IAM), aunque tengo configurados los permisos necesarios.

Resolución

En AWS Glue, su acción puede fallar debido a un error de falta de permisos por los siguientes motivos:

  • El rol de IAM o usuario que está utilizando no tiene los permisos necesarios.
  • El usuario de IAM forma parte de una organización de AWS Organizations que cuenta con una política de control de servicio (SCP) que restringe acciones específicas
  • La subred utilizada tiene un punto de conexión de nube privada virtual (VPC) con una política que permite o deniega algunas acciones.

El rol de IAM o usuario que se está utilizando no tiene los permisos necesarios

Vea este ejemplo de error de falta de permisos:

"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>"

Puede dividir este error en tres factores:

  • El rol de IAM/usuario que ejecuta la acción: arn:aws:iam: :111111111111111:role/service-role/awsGlue-xxxxxx
  • La acción: Iam:PassRole
  • El recurso en el que se está realizando la acción: arn:aws:iam: :xxxxxxxxxxxxxxxx:role/AWSGlue

Compruebe que el rol de IAM o usuario que se está utilizando tenga la acción requerida en el recurso.

1.    Abra la consola de IAM.

2.    Busque el rol de IAM o usuario que está utilizando y compruebe las políticas adjuntas. En el ejemplo anterior, la función es arn:aws:iam: :xxxxxxxxx:user/yyyyyyyyyyy.

3.    Agregue una política en línea similar a la siguiente que permita realizar las acciones necesarias en el recurso:

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

Nota: Sustituya la acción y el ARN del recurso de este ejemplo por la acción y el recurso específicos que identificó antes en el mensaje de error.

En el ejemplo anterior, su política se parece a lo siguiente:

{
  "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"
          ]
        }
      }
    }
  ]
}

El SCP de una organización impide una acción sobre el recurso

Es posible que reciba un error similar al siguiente:

"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"

Este error se produce porque su usuario de IAM forma parte de una organización que cuenta con un SCP. El SCP le impide realizar acciones específicas. Para comprobar los permisos asociados a su SCP, siga estos pasos:

1.    Abra la consola de IAM.

2.    Elija Organization Activity (Actividad de la organización) y, a continuación, elija la pestaña Attached SCP (SCP adjunto).

3.    Revise los SCP adjuntos a su usuario de IAM. Asegúrese de tener los permisos necesarios para completar la acción deseada en el recurso que está utilizando.

La subred utilizada tiene un punto de conexión de VPC con una política que permite o deniega algunas acciones

Es posible que reciba un error similar al siguiente:

"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)"

Para resolver este problema, siga estos pasos:

1.    Abra la consola de Amazon Virtual Private Cloud (Amazon VPC).

2.    Seleccione Endpoints (Puntos de conexión) y, a continuación, elija el punto de conexión de VPC conectado a la subred que está utilizando para completar la acción.

3.    En Actions (Acciones), seleccione Manage Policy (Administrar política).

4.    Actualice la política de puntos de conexión de VPC con la acción deseada en el recurso requerido.

En este ejemplo, actualiza la política de puntos de conexión de VPC necesaria para agregar la acción glue:createJob:

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

Información relacionada

Crear un rol de IAM para AWS Glue

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año