Quero resolver os erros "Access Denied" que os usuários recebem quando acessam meu bucket do Amazon Simple Storage Service (Amazon S3) de outra conta da AWS. Eu criptografo meu bucket do Amazon S3 com uma chave do AWS Key Management Service (AWS KMS) gerenciada pelo cliente.
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.
Seus usuários recebem o erro "Access Denied" pelos seguintes motivos:
- Seu usuário ou perfil do AWS Identity and Access Management (AWS IAM) não tem permissões para as operações da API s3:GetBucketPolicy e s3:PutBucketPolicy.
- A política de bucket nega sua permissão de identidade do IAM para s3:GetBucketPolicy e s3:PutBucketPolicy.
- Você ativou o atributo Bloqueio de acesso público do Amazon S3 no bucket.
- As políticas de controle de serviços (service control policies, SCPs) do AWS Organizations não permitem o acesso ao Amazon S3.
Para resolver os problemas anteriores, conclua as seguintes etapas de solução de problemas.
Resolução
Verifique suas permissões para s3:GetBucketPolicy e s3:PutBucketPolicy
Conclua as etapas a seguir:
- Abra o console do IAM.
- No painel de navegação, clique na identidade usada para acessar a política de bucket, como Usuários ou Perfis.
- Selecione o nome de identidade do IAM usado 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.<br id=hardline_break/>
Observação: se não houver uma política com as ações s3:GetBucketPolicy e s3:PutBucketPolicy, adicione essas permissões a uma política. Para obter instruções sobre como modificar suas permissões do IAM, consulte Alterar permissões de um usuário do IAM.<br id=hardline_break/>
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 do 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.
- Certifique-se de incluir o nome do recurso da Amazon (ARN) do bucket na seção Recursos da política. No exemplo anterior, o ARN é aws:s3:::DOC-EXAMPLE-BUCKET.<br id=hardline_break/>
Observação: s3:GetBucketPolicy e s3:PutBucketPolicy são ações no nível do 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 as condições restringirem o acesso, remova 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.
Usar outra identidade do IAM que tenha acesso ao bucket para modificar a política de bucket
Conclua as etapas a seguir:
- Abra o console do Amazon S3.
- No painel de navegação esquerdo, selecione Buckets de uso geral oi Buckets de diretório.
- Na lista de buckets, abra o bucket com a política de bucket que você deseja alterar.
- Clique na guia Permissões.
- Selecione Política de bucket.
- Procure instruções com "Effect": "Deny".
- Edite a política de bucket para atualizar as instruções "Effect": "Deny" que negam à identidade do IAM o acesso a s3:GetBucketPolicy ou s3:PutBucketPolicy.
- Verifique se a política de bucket inclui condições como aws:PrincipalArn que restringem as ações s3:GetBucketPolicy e s3:PutBucketPolicy na sua entidade do IAM. Se essas condições restringirem o acesso, remova ou atualize-as.
Exclua e recrie uma política de bucket que nega acesso a todos
Se ninguém tiver acesso às ações s3:GetBucketPolicy, s3:PutBucketPolicy ou todas as ações do Amazon S3 (s3:*), use o comando delete-bucket-policy da AWS CLI para excluir a política:
delete-bucket-policy
-bucket example_bucket
Observação: substitua example_bucket pelo nome do seu bucket.
Se você acidentalmente se trancar 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 no bucket. Para obter mais informações, consulte Bloquear o acesso público ao armazenamento do Amazon S3 e 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 no seu bucket antes de desativá-lo no nível da conta da AWS.
No AWS Organizations, exclua SCPs que não permitem acesso ao Amazon S3
Se você usa o AWS Organizations, revise seu serviço (SCPs). Procure qualquer instruçã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": "*"
}
]
}