Resolução de Problemas de 'Acesso Negado' e Autenticação no AWS CLI

Solucione problemas de 'Acesso Negado' e erros de autenticação de forma sistemática ao usar o AWS CLI. Este guia aborda etapas de diagnóstico essenciais, começando pela validação de credenciais usando `aws sts get-caller-identity`, examinando a complexa hierarquia de avaliação de políticas IAM, e resolvendo problemas que surgem de credenciais temporárias ou políticas baseadas em recursos (como políticas de bucket S3). Aprenda a usar comandos chave e o Simulador de Políticas IAM para identificar e corrigir rapidamente falhas de autorização em seu ambiente AWS.

45 visualizações

Solução de Problemas de 'Acesso Negado' e Problemas de Autenticação no AWS CLI

A ocorrência de erros de Access Denied (Acesso Negado) ou falhas de autenticação inesperadas ao usar a AWS Command Line Interface (CLI) é um dos obstáculos mais frequentes enfrentados por desenvolvedores e administradores de sistemas. Esses problemas quase sempre têm origem em políticas do Identity and Access Management (IAM) mal configuradas, credenciais temporárias expiradas ou configuração incorreta do ambiente da CLI.

Resolver esses erros com sucesso exige uma abordagem sistemática, começando pela confirmação da sua identidade e credenciais e passando para a avaliação detalhada da política do IAM. Este guia abrangente fornece etapas acionáveis e comandos de diagnóstico para identificar e retificar rapidamente problemas comuns de autorização no AWS CLI, garantindo que você possa gerenciar seus recursos de forma eficaz.


1. Diagnóstico Inicial: Identificando o Chamador e as Credenciais

Antes de mergulhar na análise complexa de políticas, o primeiro passo é confirmar definitivamente qual identidade do IAM o AWS CLI está usando e se essas credenciais ainda são válidas.

Verificar Identidade Atual: sts get-caller-identity

Este é o comando de diagnóstico mais crítico. Ele informa exatamente qual ARN de Usuário, ARN de Função ou sessão de função assumida está executando os comandos subsequentes da AWS.

aws sts get-caller-identity

Saída Esperada:

{
    "UserId": "AIDAIAMUSERID",
    "Account": "123456789012",
    "Arn": "arn:aws:iam::123456789012:user/DevUser"
}

Se o ARN retornado não corresponder ao usuário ou função que você espera, você está operando sob o perfil AWS ou variáveis de ambiente incorretos.

Verificar Configuração do Perfil e Região

Certifique-se de que o perfil AWS correto esteja sendo usado, especificado por meio do sinalizador --profile ou definido pela variável de ambiente AWS_PROFILE.

# Verificar as configurações configuradas para o perfil padrão
aws configure list

# Ou verificar um perfil específico
aws configure list --profile prod-admin

Se a saída mostrar nenhuma região ou uma região incorreta, as operações em recursos globais ou serviços específicos da região (como buckets S3 ou instâncias EC2) podem falhar, às vezes resultando em Access Denied se o recurso não for encontrado onde a CLI está procurando.

Dica: Se o próprio comando sts get-caller-identity falhar com um erro de autenticação, isso indica um problema fundamental com as chaves de acesso (elas podem ter sido excluídas, revogadas ou incorretas).

Lidando com Credenciais Temporárias

Se você estiver usando uma Função do IAM (via STS AssumeRole), a CLI opera com credenciais temporárias que incluem um SessionToken. Essas credenciais expiram (geralmente após 1 hora). Embora o AWS CLI geralmente as atualize automaticamente ao obter da cadeia de provedores de credenciais padrão, configurações manuais podem falhar.

Sintoma: Os comandos funcionam inicialmente, mas falham após um determinado período (por exemplo, 60 minutos) com um erro de autenticação.

Solução: Se estiver usando um script personalizado ou um ambiente carregado manualmente, certifique-se de que seu método para assumir a função inclua um mecanismo para atualizar as credenciais quando elas expirarem.


2. Análise Detalhada das Políticas do IAM e Autorização

Depois de confirmar a identidade que está sendo usada, o próximo passo é determinar por que essa identidade não possui as permissões necessárias. As falhas de autorização da AWS são complexas porque várias políticas são avaliadas simultaneamente.

A Hierarquia de Avaliação de Políticas do IAM

Erros de autorização geralmente ocorrem devido a um dos seguintes componentes de política:

  1. Negação Explícita: Uma declaração Deny (Negação) explícita em qualquer política aplicável (Identidade, Recurso ou Limite) sempre substitui uma declaração Allow (Permissão).
  2. Falta de Permissão: Nenhuma política aplicável à identidade ou ao recurso concede a ação específica.

A. Políticas Baseadas em Identidade (Usuários e Funções)

Verifique as políticas do IAM anexadas diretamente ao usuário ou à função que está sendo assumida. Procure por:

  • Ações Ausentes: A política lista especificamente a ação de API necessária (por exemplo, s3:ListBucket, ec2:DescribeInstances)?
  • Restrições de Recurso: A política restringe a ação a recursos específicos usando o elemento Resource? Um erro comum é definir Resource: "*" quando a ação requer um ARN específico, ou vice-versa.
  • Condições: Existem condições (por exemplo, endereço IP de origem, hora do dia, MFA necessário) que não estão sendo atendidas?

B. Políticas Baseadas em Recurso (S3, SQS, KMS)

Para serviços como S3 ou KMS, o próprio recurso tem uma política que determina quem pode acessá-lo. Mesmo que sua política de Usuário do IAM explicitamente permita o acesso, a Política de Recurso também deve permitir que o usuário execute a ação.

Exemplo: Tentar acessar um bucket S3 (Política de Recurso) que tenha uma Deny (Negação) explícita para todos os usuários fora de um Endpoint de VPC específico resultará em Access Denied (Acesso Negado), independentemente da política do IAM do usuário.

C. Limites de Permissão (Permission Boundaries) e SCPs

Se sua organização usa o AWS Organizations, as Políticas de Controle de Serviço (SCPs) definem as permissões máximas permitidas dentro de uma conta. Da mesma forma, os Limites de Permissão restringem as permissões máximas que uma entidade do IAM pode possuir.

Se a SCP ou o Limite negar a ação necessária, a operação da CLI falhará, mesmo que a Política de Identidade conceda a permissão.

Ferramenta Prática: Simulador de Políticas do IAM

Ao solucionar falhas complexas, o Simulador de Políticas do IAM no Console de Gerenciamento da AWS é inestimável. Você pode testar uma ação específica (por exemplo, s3:GetObject) em um recurso específico (por exemplo, arn:aws:s3:::my-bucket/key) e especificar a entidade do IAM, ajudando a identificar exatamente qual declaração de política está causando a negação.


3. Cenários Comuns de 'Acesso Negado' e Soluções

Cenário 1: Acesso Negado ao S3 (Recurso vs. Identidade)

O Access Denied do S3 é notório porque pode surgir da Política do Usuário ou da Política do Bucket.

Causa Diagnóstico Solução
Permissão Faltando na Política do Bucket sts get-caller-identity funciona, mas aws s3 ls falha. Modifique a Política do Bucket para permitir explicitamente que o ARN de chamada execute as ações necessárias (s3:ListBucket, s3:GetObject).
Permissões de Descriptografia KMS Ausentes O acesso a objetos criptografados falha (mesmo que a política S3 permita). Certifique-se de que a entidade do IAM tenha permissões para usar a chave KMS subjacente (kms:Decrypt) que criptografou o objeto.
Requester Pays (Requer Pagamento pelo Solicitante) As tentativas de download de arquivos grandes falham. Se o bucket exigir Requester Pays, o comando da CLI deve incluir o sinalizador --request-payer requester.

Cenário 2: Negação Implícita Devido a Falhas de Condição

Muitas políticas utilizam condições que aplicam as melhores práticas de segurança, como exigir a Autenticação Multifator (MFA).

Se sua política incluir uma condição como:

"Condition": {
    "Bool": {
        "aws:MultiFactorAuthPresent": "true"
    }
}

E você tentar executar um comando sem MFA autenticado, a ação será implicitamente negada.

Solução: Para comandos que exigem MFA, você deve primeiro criar uma sessão STS autenticada com seu dispositivo MFA:

# 1. Obter credenciais temporárias usando seu token MFA
aws sts get-session-token --serial-number arn:aws:iam::123456:mfa/user --token-code 123456

# 2. Exportar as chaves AccessKeyId, SecretAccessKey e SessionToken resultantes como variáveis de ambiente para sua sessão CLI.

Cenário 3: Região Ausente ou Incorreta

Embora nem sempre seja um erro de Access Denied, tentar executar uma ação em um recurso sem especificar a região correta geralmente leva a falhas de autorização ou de recurso não encontrado, especialmente ao trabalhar com serviços regionais como EC2, DynamoDB ou EKS.

Solução: Defina explicitamente a região no seu comando ou certifique-se de que seu perfil esteja configurado corretamente.

aws ec2 describe-instances --region us-west-2

4. Resumo dos Comandos de Diagnóstico

Use esta lista de verificação de comandos para diagnosticar rapidamente a cadeia de falha de autorização:

Objetivo Comando Propósito
Verificar Identidade aws sts get-caller-identity Confirma o ARN que executa o comando.
Verificar Configuração aws configure list Verifica as configurações do perfil, região e formato de saída.
Testar Validade da Política (Usar Simulador de Políticas do IAM) Verifica se uma identidade do IAM pode executar uma ação de API específica em um recurso.
Identificar Negativas de Política aws cloudtrail lookup-events ... Use o CloudTrail para ver o registro de evento exato onde a avaliação da política falhou.

Conclusão: Melhores Práticas para Prevenção

Para minimizar erros de Access Denied no AWS CLI, adote estas práticas recomendadas de segurança e operacionais:

  1. Usar Privilégio Mínimo: Não conceda acesso * (curinga) a menos que seja absolutamente necessário. Limite estritamente as políticas às ações e recursos necessários.
  2. Usar Funções do IAM: Prefira assumir Funções do IAM em vez de usar chaves de Usuário do IAM de longa duração, especialmente em scripts ou pipelines de CI/CD. Isso limita o tempo de exposição se as credenciais forem vazadas.
  3. Auditar o CloudTrail: Se o problema persistir, a fonte autoritária é o AWS CloudTrail. Um evento registrado para uma chamada de API falhada geralmente incluirá o motivo da falha (por exemplo, Deny by Policy X, MFA required).
  4. Gerenciar Perfis: Nomeie e gerencie perfis separados claramente para diferentes contas ou funções AWS (--profile). Evite misturar variáveis de ambiente com configuração de perfil.