Por que estou recebendo um erro “403 Forbidden” (Proibido) quando tento carregar arquivos no Amazon S3?

Data da última atualização: 27/04/2022

Estou tentando carregar arquivos para meu bucket do Amazon Simple Storage Service (Amazon S3) usando o console do Amazon S3. Entretanto, estou recebendo o erro “403 Forbidden” (Proibido), em vez disso.

Breve descrição

O erro “403 Forbidden” (Proibido) pode ocorrer devido aos seguintes motivos:

  • Faltam permissões para s3:PutObject para adicionar um objeto ou s3:PutObjectAcl para modificar a ACL do objeto.
  • Você não tem permissão para usar uma chave do AWS Key Management Service (AWS KMS).
  • Há uma declaração de negação explícita na política do bucket.
  • O Bloqueio do acesso público do Amazon S3 está habilitado.
  • A lista de controle de acesso (ACL) do bucket não permite que o usuário raiz da conta da AWS grave objetos
  • Uma política de controle de serviço do AWS Organizations não permite acesso ao Amazon S3.

Resolução

Verifique suas permissões para s3:PutObject ou s3:PutObjectAcl

Siga estas etapas:

  1. Abra o console do AWS Identity and Access Management (IAM).
  2. Selecione a identidade usada para acessar a política de bucket, como User (Usuário) ou Role (Função).
  3. Selecione o nome da identidade do IAM que você está usando para acessar a política de bucket.
  4. Escolha a guia Permissions (Permissões) e expanda cada política para visualizar seu documento de política JSON.
  5. Nos documentos de política JSON, procure políticas relacionadas ao acesso ao Amazon S3. Em seguida, confirme se você tem permissões para as ações s3:PutObject ou s3:PutObjectAcl no bucket.

Peça permissão para usar uma chave do AWS KMS

Para acessar um bucket do S3 que usa criptografia padrão com uma chave personalizada do AWS KMS, um administrador de chaves deve conceder a você permissão na política de chaves.

Para carregar um objeto em um bucket criptografado, seu usuário ou função do IAM deve ter permissões do AWS KMS para pelo menos kms:Encrypt e kms:GenerateDataKey.

Verifique a política de bucket para ver se há declarações explícitas

Siga estas etapas:

  1. Abra o console do Amazon S3.
  2. Na lista de buckets, abra o bucket no qual você deseja carregar arquivos.
  3. Escolha a guia Permissions (Permissões).
  4. Escolha Bucket Policy (Política de buckets).
  5. Procure instruções com “Effect”: “Deny” (Efeito: negar).
  6. Verifique se a sua política de bucket inclui os parâmetros corretos de solicitação de URI para s3:PutObject para atender às condições específicas.

Importante: antes de salvar uma política de bucket com “Effect”: “Deny” (Efeito: negar), certifique-se de verificar se há instruções que negam acesso ao bucket do S3. Se você for bloqueado, consulte Neguei acidentalmente o acesso de todos ao meu bucket do Amazon S3. Como posso obter acesso novamente?

O seguinte exemplo de declaração nega explicitamente qualquer acesso a s3:PutObject em awsdoc-example-bucket, a menos que a solicitação de upload inclua criptografia com a chave do AWS KMS arn:aws:kms:us-east-1:111122223333:key:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExampleStmt",
      "Action": [
        "s3:PutObject"
      ],
      "Effect": "Deny",
      "Resource": "arn:aws:s3:::awsdoc-example-bucket/*",
      "Condition": {
        "StringNotLikeIfExists": {
          "s3:x-amz-server-side-encryption-aws-kms-key-id": "arn:aws:kms:us-east-1:111122223333:key/*"
        }
      },
      "Principal": "*"
    }
  ]
}

Desabilitar do Bloqueio do acesso público do S3

Se você estiver transmitindo a ACL pública em uma solicitação de upload, e o recurso Bloqueio do acesso público do S3 estiver habilitado, desabilite-o antes de carregar arquivos.

Para obter mais informações sobre como definir as configurações de Bloqueio do acesso público do S3 no nível da conta, consulte Definir configurações de bloqueio de acesso público para sua conta. Para definir configurações no nível do bucket, consulte Definir configurações de bloqueio de acesso público para os seus buckets do S3.

Conceder permissão para gravar objetos ao usuário raiz

Configure as permissões de ACL do bucket para conceder acesso para gravar objetos ao usuário raiz.

Excluir políticas de controle de serviço para o AWS Organizations

Se você usa o AWS Organizations, exclua todas as políticas de controle de serviço que negam explicitamente ações do S3.