Como soluciono o erro “User/IAM role X is not authorized to perform Y on resource Z” (O usuário/perfil X do IAM não está autorizado a executar Y no recurso Z) no AWS Glue?

4 minuto de leitura
0

Meu trabalho no AWS Glue falha devido a um erro de falta de permissões do AWS Identity and Access Management (IAM), mesmo eu tendo as permissões necessárias configuradas.

Resolução

No AWS Glue, sua ação pode falhar com o erro de falta de permissões pelos seguintes motivos:

  • O usuário ou perfil do IAM que você está usando não tem as permissões necessárias.
  • O usuário do IAM faz parte de uma organização no AWS Organizations que tem uma política de controle de serviços (SCP) em vigor que restringe ações específicas
  • A sub-rede usada tem um endpoint de nuvem privada virtual (VPC) com uma política que permite ou nega algumas ações.

O usuário ou perfil do IAM que está sendo usado não tem as permissões necessárias

Veja este exemplo de erro de falta de permissões:

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

Você pode desmembrar esse erro em três fatores:

  • O usuário/perfil do IAM que chama a ação: arn:aws:iam::111111111111111:role/service-role/AWSGlue-xxxxxx
  • A ação: iam:PassRole
  • O recurso no qual a ação está sendo executada: arn:aws:iam::xxxxxxxxxxxxxxxx:role/AWSGlue

Verifique se o usuário ou o perfil do IAM que está sendo usado tem a ação necessária no recurso.

1.    Abra o console do IAM.

2.    Pesquise o usuário ou o perfil do IAM que você está usando e verifique as políticas anexadas a ele. No exemplo anterior, o perfil é arn:aws:iam::xxxxxxxxx:user/yyyyyyyyyyy.

3.    Adicione uma política em linha semelhante à seguinte que permita a ação necessária no recurso:

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

Observação: substitua a ação e o ARN do recurso neste exemplo pela ação e recurso específicos que você identificou anteriormente na mensagem de erro.

Usando o exemplo anterior, sua política será semelhante a esta:

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

A SCP de uma organização está impedindo uma ação no recurso

Você pode receber um erro semelhante ao seguinte:

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

Esse erro é gerado porque seu usuário do IAM faz parte de uma organização que tem SCPs em vigor. A SCP está impedindo você de realizar ações específicas. Para verificar as permissões associadas à sua SCP, siga estas etapas:

1.    Abra o console do IAM.

2.    Escolha Organization Activity (Atividade da organização) e, em seguida, escolha a guia Attached SCP (SCP anexada).

3.    Analise as SCPs anexadas ao seu usuário do IAM. Verifique se você tem as permissões necessárias para concluir a ação desejada no recurso que está usando.

A sub-rede usada tem um endpoint da VPC com uma política que permite ou nega algumas ações

Você pode receber um erro semelhante ao seguinte:

"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 esse problema, siga estas etapas:

1.    Abra o console da Amazon Virtual Private Cloud (Amazon VPC).

2.    Escolha Endpoints e, em seguida, escolha o endpoint da VPC anexado à sub-rede que você está usando para concluir sua ação.

3.    Em Actions (Ações), escolha Manage Policy (Gerenciar política).

4.    Atualize a política de endpoint da VPC com a ação desejada no recurso necessário.

Neste exemplo, você atualiza a política de endpoint da VPC necessária para adicionar a açãoglue:CreateJob:

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

Informações relacionadas

Criar um perfil do IAM para o AWS Glue

AWS OFICIAL
AWS OFICIALAtualizada há um ano