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?
Data da última atualização: 28/2/2023
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
Este artigo ajudou?
Precisa de ajuda com faturamento ou suporte técnico?