Skip to main content

Problemas com permissionamento

Alterar a permissão de um bucket não funciona

  • Sintoma

Alterar a permissão de um bucket de privado para público ou vice-versa não funciona. Falha com um erro de acesso negado, ou diz que mudou porém o bucket continua aparecendo como privado no console.

item do menu: "Tornar Público"

item do menu

exemplo de erro no console

exemplo de erro no console

exemplo de sucesso falso

exemplo de sucesso falso

bucket ainda privado

bucket ainda privado

Nota

Na listagem do console, um bucket com qualquer política continuará sendo listado como "privado"

  • Causa

O bucket em questão pode ter uma política (bucket policy) a ele associada. E regras da política possuem maior precedência do que as de ACL. Bucket policy permite a construção de regras de acesso mais específicas que um simples status de "público" ou "privado" e estas regras mais específicas sempre sobrescrevem este status simples.

  • Solução

Existem duas soluções possíveis: remover a política do bucket ou incluir uma regra na política que permita a leitura dos objects por qualquer usuário (Principal).

  1. Remover a política do bucket

É possível deletar uma política de bucket via terminal utilizando a ferramenta aws-cli da Amazon:

aws --profile "SEU_PROFILE" s3api delete-bucket-policy --bucket "NOME_DO_BUCKET"
Nota

Substitua SEU_PROFILE e NOME_DO_BUCKET pelo nome do seu perfil e o nome do seu bucket.

  1. Incluir acesso de leitura a todos nas políticas do bucket

    Abaixo um exemplo de "Statement" a ser adicionado a uma política existente para tornar todos os objetos de um bucket publicamente acessíveis:

    "Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:ListBucket",
"s3:GetObject"
],
"Resource": [
"nome-do-bucket",
"nome-do-bucket/*"
]
},
{
...
}
]
Nota

Substitua nome-do-bucket pelo nome do bucket.