Eu recebo a mensagem de erro "You don't have permissions to edit bucket policy" quando modifico a política de bucket do meu bucket do Amazon Simple Storage Service (Amazon S3).
Breve descrição
Observação: se você receber mensagens de erro ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Você recebe esse erro pelos seguintes motivos:
Para resolver esse erro, verifique se o usuário ou perfil do IAM tem a permissão s3:GetBucketPolicy para visualizar a política de bucket e a permissão s3:PutBucketPolicy para editá-la. Se não houver uma política de usuário do IAM para conceder acesso, adicione uma. Se você não tiver as permissões necessárias, use outra identidade do IAM que tenha acesso ao bucket e edite a política de bucket. Se ninguém tiver acesso à política de bucket, use o comando delete-bucket-policy da AWS CLI para excluir a política e depois recriá-la.
Se você precisar adicionar uma política de leitura pública, desative o atributo Bloqueio de acesso público do Amazon S3 do bucket. Se você usa o AWS Organizations, verifique se você não tem nenhuma política de controle de serviços que negue explicitamente as ações do Amazon S3. Além disso, confirme se é possível adicionar exceções na sua operação.
Resolução
Verifique suas permissões para s3:GetBucketPolicy e s3:PutBucketPolicy
Para verificar suas permissões, conclua as seguintes etapas:
- Abra o console do IAM.
- Selecione a identidade usada para acessar a política de bucket, como Usuário ou Perfil.
- Selecione o nome da identidade do IAM que você está usando para acessar a política de bucket.
- Na guia Permissões da sua identidade do IAM, expanda cada política para ver seu documento de política JSON.
- 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:GetBucketPolicy e s3:PutBucketPolicy no bucket.
O exemplo de política do IAM a seguir permite que a identidade do IAM execute as ações s3:GetBucketPolicy e s3:PutBucketPolicy em DOC-EXAMPLE-BUCKET:
{ "Version": "2012-10-17",
"Statement": [
{
"Sid": "ModifyBucketPolicy",
"Action": [
"s3:GetBucketPolicy",
"s3:PutBucketPolicy"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET"
},
{
"Sid": "AccessS3Console",
"Action": [
"s3:GetBucketLocation",
"s3:ListAllMyBuckets"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::*"
}
]
}
Observação: a declaração AccessS3Console na política do IAM anterior concede acesso ao console Amazon S3. Não é específico para mudanças na política de bucket.
- Nos documentos de política JSON, pesquise instruções com "Effect": "Deny". Em seguida, confirme se essas instruções não negam à sua identidade do IAM o acesso a s3:GetBucketPolicy ou s3:PutBucketPolicy.
- Verifique se o ARN do bucket (exemplo: arn:aws:s3:::DOC-EXAMPLE-BUCKET) está presente na seção Recursos da política.
Observação: s3:GetBucketPolicy e s3:PutBucketPolicy são ações em nível de bucket.
- Verifique se você aplicou alguma condição global, como aws:SourceIP, na política do IAM para restringir as ações s3:GetBucketPolicy e s3:PutBucketPolicy. Se essas condições restringirem o acesso, remova-as ou atualize-as.
Adicione uma política de bucket se ela não existir
Se não for possível encontrar políticas que concedam permissões s3:GetBucketPolicy ou s3:PutBucketPolicy, adicione uma política para concedê-las à sua identidade do IAM. Se você encontrar políticas que negam acesso a s3:GetBucketPolicy ou s3:PutBucketPolicy, remova-as. Para obter instruções sobre como modificar suas permissões do IAM, consulte Alterar permissões de um usuário do IAM.
Use outra identidade do IAM que tenha acesso ao bucket para modificar a política de bucket
Para modificar sua política de bucket, conclua as etapas a seguir:
- Abra o console do Amazon S3.
- Na lista de buckets, abra o bucket que tem a política que você deseja alterar.
- Clique na guia Permissões.
- Selecione Política de bucket.
- Procure instruções com "Effect": "Deny".
- Edite a política do bucket para atualizar quaisquer instruções "Effect": "Deny" que negam à identidade do IAM o acesso a s3:GetBucketPolicy ou s3:PutBucketPolicy. Para obter instruções, consulte a seção Criar ou editar uma política de bucket em Adicionar uma política de bucket usando o console do Amazon S3.
- Verifique se condições como aws:PrincipalArn são aplicadas na política de bucket para restringir as ações s3:GetBucketPolicy e s3:PutBucketPolicy para sua entidade do IAM. Se essas condições restringirem o acesso, remova-as ou atualize-as.
Exclua e recrie a política de bucket se ela negar o acesso de todos
Se a política de bucket negar a todos o acesso a s3:GetBucketPolicy, s3:PutBucketPolicy ou a todas as ações do Amazon S3 (s3:*), exclua a política de bucket. Se você acidentalmente se bloquear fora do bucket e não conseguir excluir a política de bucket, recupere o acesso ao bucket. Depois de excluir a política de bucket, é possível criar uma nova.
Desative o Bloqueio de acesso público do Amazon S3
Se sua política de bucket conceder acesso público, desative o Bloqueio de acesso público do Amazon S3 para o bucket. Para obter mais informações, consulte Bloquear o acesso público ao armazenamento do Amazon S3 e The meaning of "public" (O significado de "público").
Observação: para evitar o acesso público a buckets privados, ative o Bloqueio de acesso público do Amazon S3 para seu bucket antes de desativá-lo no nível da conta da AWS.
No AWS Organizations, exclua as políticas de controle de serviços que não permitem o acesso ao Amazon S3
Se você usa o AWS Organizations, consulte suas políticas de controle de serviços (service control policies, SCPs). Procure qualquer declaração que negue explicitamente a ação s3:PutBucketPolicy ou qualquer outra ação de política do Amazon S3. Exclua os SCPs que aplicam o efeito Deny às ações s3:* quando sua organização não exige as políticas.
O exemplo de política a seguir nega acesso a todas as ações do Amazon S3:
{ "Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": "s3:*",
"Resource": "*"
}
]
}