Solução de problemas de mensagens de erro de acesso negado - AWS Identity and Access Management

Solução de problemas de mensagens de erro de acesso negado

Erros de acesso negado são exibidos quando a AWS nega explícita ou implicitamente uma solicitação de autorização. Uma negação explícita ocorre quando uma política contém uma instrução Deny para a ação específica da AWS. Uma negação implícita ocorre quando não há nenhuma instrução Deny aplicável e também nenhuma instrução Allow aplicável. Como uma política do IAM nega uma entidade principal do IAM por padrão, a política deve permitir explicitamente que a entidade principal realize uma ação. Caso contrário, a política nega acesso implicitamente. Para ter mais informações, consulte A diferença entre negações explícitas e implícitas.

Se várias políticas do mesmo tipo de política negarem uma solicitação de autorização, a AWS não especificará o número de políticas na mensagem de erro de acesso negado. Se vários tipos de políticas negarem uma solicitação de autorização, a AWS só especificará uma dessas políticas na mensagem de erro de acesso negado.

Importante

Está com problemas para fazer login na AWS? Certifique-se de estar na página de login da AWS correta para o seu tipo de usuário. Se você for o Usuário raiz da conta da AWS (proprietário da conta), poderá fazer login na AWS usando as credenciais que configurou ao criar a Conta da AWS. Se você é um usuário do IAM, o administrador da conta poderá fornecer as credenciais que você pode usar para fazer login na AWS. Se você precisar solicitar suporte, não use o link de feedback nesta página, pois o formulário é recebido pela equipe de documentação da AWS, não pelo AWS Support. Em vez disso, na página Entre em contato conosco, escolha Ainda não consegue fazer login em sua conta da AWS e escolha uma das opções de suporte disponíveis.

Eu recebo a mensagem de “acesso negado” quando faço uma solicitação a um serviço da AWS

  • Verifique se a mensagem de erro inclui o tipo de política responsável por negar o acesso. Por exemplo, se o erro mencionar que o acesso é negado devido a uma política de controle de serviço (SCP), você poderá se concentrar na solução de problemas de SCP. Quando você conhece o tipo de política, também pode verificar se há uma instrução de negação ou se falta uma permissão na ação específica em políticas desse tipo de política. Se a mensagem de erro não mencionar o tipo de política responsável por negar o acesso, use o restante das diretrizes desta seção para solucionar problemas adicionais.

  • Verifique se você tem permissão de política baseada em identidade para chamar a ação e o recurso que solicitou. Se condições forem definidas, você também deverá cumpri-las ao enviar a solicitação. Para obter informações sobre como visualizar ou modificar políticas para um usuário, grupo ou função do IAM, consulte Gerenciamento de políticas do IAM.

  • Se o AWS Management Console retornar uma mensagem informando que você não está autorizado a executar uma ação, entre em contato com o administrador para obter assistência. Seu administrador forneceu a você suas credenciais de login ou link de login.

    O erro de exemplo a seguir ocorre quando o usuário do IAM mateojackson tenta usar o console para visualizar detalhes sobre um recurso de my-example-widget fictício, mas não tem as permissões de widgets:GetWidget fictícias.

    User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: widgets:GetWidget on resource: my-example-widget

    Neste caso, Mateo pede ao administrador para atualizar suas políticas para permitir o acesso ao recurso my-example-widget usando a ação widgets:GetWidget.

  • Você está tentando acessar um serviço que oferece suporte a políticas baseadas em recurso, como o Amazon S3, Amazon SNS ou Amazon SQS? Nesse caso, verifique se a política especifica você como uma entidade principal e lhe concede acesso. Se você fizer uma solicitação para um serviço na sua conta, as políticas baseadas em identidade ou as políticas baseadas em recurso poderão conceder permissão. Se você fizer uma solicitação para um serviço em uma conta diferente, tanto as políticas baseadas em identidade quanto as políticas baseadas em recurso deverão conceder permissão. Para visualizar os serviços que são compatíveis com políticas baseadas em recursos, consulte Serviços da AWS que funcionam com o IAM.

  • Se sua política incluir uma condição com um par de chave-valor, revise-a com atenção. Os exemplos incluem a chave de condição global aws:RequestTag/tag-key, a kms:EncryptionContext:encryption_context_key do AWS KMS e a chave de condição ResourceTag/tag-key compatível com vários serviços. Certifique-se de que o nome da chave não corresponda a vários resultados. Como os nomes das chaves da condição não diferenciam maiúsculas de minúsculas, uma condição que verifica uma chave chamada foo corresponderá a foo, Foo ou FOO. Se sua solicitação inclui vários pares de chave-valor com nomes de chaves apenas com a capitalização diferente, o acesso pode ser inesperadamente negado. Para ter mais informações, consulte Elementos de política JSON do IAM: Condition.

  • Se você tiver um limite de permissões, verifique se a política usada para o limite de permissões permite sua solicitação. Se suas políticas baseadas em identidade permitirem a solicitação, mas seu limite de permissões não permitir, a solicitação será negada. Um limite de permissões controla o número máximo de permissões que uma entidade de segurança do IAM (usuário ou função) pode ter. As políticas baseadas em recurso não são limitadas pelos limites de permissões. Os limites de permissões não são comuns. Para obter mais informações sobre como a AWS avalia políticas, consulte Lógica da avaliação de política.

  • Se você assinar solicitações manualmente (sem usar os AWS SDKs), verifique se você assinou a solicitação corretamente.

Eu recebo uma mensagem de "acesso negado" quando faço uma solicitação com credenciais de segurança temporárias

  • Primeiro, certifique-se de que não lhe foi negado acesso por um motivo que não esteja relacionado às suas credenciais temporárias. Para ter mais informações, consulte Eu recebo a mensagem de “acesso negado” quando faço uma solicitação a um serviço da AWS.

  • Para verificar se o serviço aceita credenciais de segurança temporárias, consulte Serviços da AWS que funcionam com o IAM.

  • Verifique se suas solicitações estão sendo assinadas corretamente e se a solicitação é bem formada. Para obter mais detalhes, consulte a documentação do toolkit ou Uso de credenciais temporárias com recursos da AWS.

  • Verifique se suas credenciais de segurança temporárias não expiraram. Para ter mais informações, consulte Credenciais de segurança temporárias no IAM.

  • Verifique se o usuário ou a função do IAM tem as permissões corretas. As permissões para credenciais de segurança temporárias são derivadas de um usuário ou uma função do IAM. Como resultado, as permissões são limitadas àquelas que são concedidas à função cujas credenciais temporárias são assumidas. Para obter mais informações sobre como permissões para credenciais de segurança temporárias são determinadas, consulte Controle de permissões para credenciais de segurança temporárias.

  • Se você tiver assumido uma função, a sessão da função pode estar limitada por políticas de sessão. Quando solicita credenciais de segurança temporárias de forma programática usando o AWS STS, você pode opcionalmente passar políticas de sessão em linha ou gerenciadas. As políticas de sessão são políticas avançadas que você passa como um parâmetro ao criar uma sessão de credenciais temporárias de forma programática para uma função. Você pode passar um único documento de política JSON de sessão em linha usando o parâmetro Policy. Você pode usar o parâmetro PolicyArns para especificar até 10 políticas de sessão gerenciadas. As permissões da sessão resultante são a interseção das políticas baseadas em identidade da função e das políticas de sessão. Como alternativa, se o administrador ou um programa personalizado fornecer credenciais temporárias a você, ele poderá incluir uma política de sessão para limitar seu acesso.

  • Se você for um usuário federado, a sessão poderá ser limitada pelas políticas de sessão. Você se torna um usuário federado fazendo login na AWS como um usuário do IAM e solicitando um token de federação. Para obter mais informações sobre usuários federados, consulte GetFederationToken: federação por meio de um agente de identidades personalizado. Se você ou seu agente de identidade tiver passado políticas de sessão ao solicitar um token de federação, a sessão será limitada por essas políticas. As permissões da sessão resultantes são a interseção de suas políticas baseadas em identidade do usuário do IAM e as políticas de sessão. Para obter mais informações sobre políticas de sessão, consulte Políticas de sessão.

  • Se você estiver acessando um recurso que tenha uma política baseada em recursos usando uma função, verifique se a política concede permissões à função. Por exemplo, a política a seguir permite que MyRole da conta 111122223333 acesse MyBucket.

    { "Version": "2012-10-17", "Statement": [{ "Sid": "S3BucketPolicy", "Effect": "Allow", "Principal": {"AWS": ["arn:aws:iam::111122223333:role/MyRole"]}, "Action": ["s3:PutObject"], "Resource": ["arn:aws:s3:::MyBucket/*"] }] }

Exemplos de mensagens de acesso negado

A maioria das mensagens de erro de acesso negado está no formato User user is not authorized to perform action on resource because context. Neste exemplo, user (usuário) é o nome do recurso da Amazon (ARN) que não recebe acesso, action (ação) é a ação de serviço que a política nega e resource (recurso) é o ARN do recurso no qual a política atua. O campo context (contexto) representa contexto adicional sobre o tipo de política que explica por que o acesso é negado.

Quando uma política nega explicitamente o acesso porque ela contém uma instrução Deny, a AWS inclui a frase with an explicit deny in a type policy na mensagem de acesso negado. Quando a política nega acesso implicitamente, a AWS inclui because no type policy allows the action action na mensagem de erro de acesso negado.

nota

Alguns serviços da AWS não são compatíveis com esse formato de mensagem de erro de acesso negado. O conteúdo das mensagens de erro de acesso negado pode variar conforme o serviço que está fazendo a solicitação de autorização.

Os exemplos a seguir mostram o formato para diferentes tipos de mensagens de acesso negado.

Acesso negado devido a uma política de controle de serviço: negação implícita

  1. Verifique se falta uma instrução Allow para a ação em suas políticas de controle de serviços (SCPs). No exemplo a seguir, a ação é codecommit:ListRepositories.

  2. Atualize a SCP adicionando a instrução Allow. Para obter mais informações, consulte Atualizar uma SCP no Guia do usuário do AWS IAM Identity Center.

User: arn:aws:iam::777788889999:user/JohnDoe is not authorized to perform: codecommit:ListRepositories because no service control policy allows the codecommit:ListRespositories action

Acesso negado devido a uma política de controle de serviço: negação explícita

  1. Verifique se há uma instrução Deny para a ação em suas políticas de controle de serviços (SCPs). No exemplo a seguir, a ação é codecommit:ListRepositories.

  2. Atualize a SCP removendo a instrução Deny. Para obter mais informações, consulte Atualizar uma SCP no Guia do usuário do AWS IAM Identity Center.

User: arn:aws:iam::777788889999:user/JohnDoe is not authorized to perform: codecommit:ListRepositories with an explicit deny in a service control policy

Acesso negado devido a uma política de endpoint da VPC: negação implícita

  1. Verifique se falta uma instrução Allow para a ação em suas políticas de endpoint da nuvem privada virtual (VPC). No exemplo a seguir, a ação é codecommit:ListRepositories.

  2. Atualize sua política de endpoint da VPC adicionando a instrução Allow. Para obter mais informações, consulte Atualizar uma política de endpoint da VPC no Guia do AWS PrivateLink.

User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: codecommit:ListRepositories because no VPC endpoint policy allows the codecommit:ListRepositories action

Acesso negado devido a uma política de endpoint da VPC: negação explícita

  1. Verifique se há uma instrução Deny explícita para a ação em suas políticas de endpoint da nuvem privada virtual (VPC). No exemplo a seguir, a ação é codedeploy:ListDeployments.

  2. Atualize sua política de endpoint da VPC removendo a instrução Deny. Para obter mais informações, consulte Atualizar uma política de endpoint da VPC no Guia do AWS PrivateLink.

User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: codedeploy:ListDeployments on resource: arn:aws:codedeploy:us-east-1:123456789012:deploymentgroup:* with an explicit deny in a VPC endpoint policy

Acesso negado devido a um limite de permissões: negação implícita

  1. Verifique se falta uma instrução Allow para a ação em seu limite de permissões. No exemplo a seguir, a ação é codedeploy:ListDeployments.

  2. Atualize seu limite de permissões adicionando a instrução Allow à política do IAM. Para obter mais informações, consulte Limites de permissões para entidades do IAM e Edição de políticas do IAM.

User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: codedeploy:ListDeployments on resource: arn:aws:codedeploy:us-east-1:123456789012:deploymentgroup:* because no permissions boundary allows the codedeploy:ListDeployments action

Acesso negado devido a um limite de permissões: negação explícita

  1. Verifique se há uma instrução Deny explícita para a ação em seu limite de permissões. No exemplo a seguir, a ação é sagemaker:ListModels.

  2. Atualize seu limite de permissões removendo a instrução Deny da política do IAM. Para obter mais informações, consulte Limites de permissões para entidades do IAM e Edição de políticas do IAM.

User: arn:aws:iam::777788889999:user/JohnDoe is not authorized to perform: sagemaker:ListModels with an explicit deny in a permissions boundary

Acesso negado devido às políticas de sessão: negação implícita

  1. Verifique se falta uma instrução Allow para a ação em suas políticas de sessão. No exemplo a seguir, a ação é codecommit:ListRepositories.

  2. Atualize a política de sessão adicionando a instrução Allow. Para obter mais informações, consulte Políticas de sessão e Edição de políticas do IAM.

User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: codecommit:ListRepositories because no session policy allows the codecommit:ListRepositories action

Acesso negado devido às políticas de sessão: negação explícita

  1. Verifique se há uma instrução Deny explícita para a ação em suas políticas de sessão. No exemplo a seguir, a ação é codedeploy:ListDeployments.

  2. Atualize a política de sessão removendo a instrução Deny. Para obter mais informações, consulte Políticas de sessão e Edição de políticas do IAM.

User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: codedeploy:ListDeployments on resource: arn:aws:codedeploy:us-east-1:123456789012:deploymentgroup:* with an explicit deny in a sessions policy

Acesso negado devido às políticas baseadas em recursos: negação implícita

  1. Verifique se falta uma instrução Allow para a ação em sua política baseada em recursos. No exemplo a seguir, a ação é secretsmanager:GetSecretValue.

  2. Atualize a política adicionando a instrução Allow. Para obter mais informações, consulte Políticas baseadas em recursos e Edição de políticas do IAM.

User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: secretsmanager:GetSecretValue because no resource-based policy allows the secretsmanager:GetSecretValue action

Acesso negado devido às políticas baseadas em recursos: negação explícita

  1. Verifique se há uma instrução Deny explícita para a ação em sua política baseada em recursos. No exemplo a seguir, a ação é secretsmanager:GetSecretValue.

  2. Atualize a política removendo a instrução Deny. Para obter mais informações, consulte Políticas baseadas em recursos e Edição de políticas do IAM.

User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: secretsmanager:GetSecretValue on resource: arn:aws:secretsmanager:us-east-1:123456789012:secret:* with an explicit deny in a resource-based policy

Acesso negado devido às políticas de confiança de perfil: negação implícita

  1. Verifique se falta uma instrução Allow para a ação em sua política de confiança de perfil. No exemplo a seguir, a ação é sts:AssumeRole.

  2. Atualize a política adicionando a instrução Allow. Para obter mais informações, consulte Políticas baseadas em recursos e Edição de políticas do IAM.

User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: sts:AssumeRole because no role trust policy allows the sts:AssumeRole action

Acesso negado devido às políticas de confiança de perfil: negação explícita

  1. Verifique se há uma instrução Deny explícita para a ação em sua política de confiança de perfil. No exemplo a seguir, a ação é sts:AssumeRole.

  2. Atualize a política removendo a instrução Deny. Para obter mais informações, consulte Políticas baseadas em recursos e Edição de políticas do IAM.

User: arn:aws:iam::777788889999:user/JohnDoe is not authorized to perform: sts:AssumeRole with an explicit deny in the role trust policy

Acesso negado devido a políticas baseadas em identidade: negação implícita

  1. Verifique se falta uma instrução Allow para a ação em políticas baseadas em identidade anexadas à identidade. Para o exemplo a seguir, a ação é codecommit:ListRepositories anexada ao usuário JohnDoe.

  2. Atualize a política adicionando a instrução Allow. Para obter mais informações, consulte Políticas baseadas em identidade e Edição de políticas do IAM.

User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: codecommit:ListRepositories because no identity-based policy allows the codecommit:ListRepositories action

Acesso negado devido às políticas baseadas em identidade: negação explícita

  1. Verifique se há uma instrução Deny explícita para a ação em políticas baseadas em identidade anexadas à identidade. Para o exemplo a seguir, a ação é codedeploy:ListDeployments anexada ao usuário JohnDoe.

  2. Atualize a política removendo a instrução Deny. Para obter mais informações, consulte Políticas baseadas em identidade e Edição de políticas do IAM.

User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: codedeploy:ListDeployments on resource: arn:aws:codedeploy:us-east-1:123456789012:deploymentgroup:* with an explicit deny in an identity-based policy

Acesso negado quando uma solicitação de VPC falha devido a outra política

  1. Verifique se há uma instrução Deny explícita para a ação em suas políticas de controle de serviços (SCPs). No exemplo a seguir, a ação é SNS:Publish.

  2. Atualize a SCP removendo a instrução Deny. Para obter mais informações, consulte Atualizar uma SCP no Guia do usuário do AWS IAM Identity Center.

User: arn:aws:sts::111122223333:assumed-role/role-name/role-session-name is not authorized to perform: SNS:Publish on resource: arn:aws:sns:us-east-1:444455556666:role-name-2 with an explicit deny in a VPC endpoint policy transitively through a service control policy