Bloquear o acesso público ao armazenamento do Amazon S3
O recurso Bloqueio de acesso público do Amazon S3 fornece configurações para pontos de acesso, buckets e contas para ajudar você a gerenciar o acesso público aos recursos do Amazon S3. Por padrão, novos buckets, pontos de acesso e objetos não permitem acesso público. No entanto, os usuários podem modificar políticas de bucket, políticas de ponto de acesso ou permissões de objeto para permitir acesso público. As configurações do Bloqueio de acesso público do S3 substituem essas políticas e permissões, de maneira que seja possível limitar o acesso público a esses recursos.
Com o Bloqueio de acesso público do S3, os administradores de conta e os proprietários de bucket podem configurar facilmente os controles centralizados impostos para limitar o acesso público aos recursos do Amazon S3, independentemente de como os recursos são criados.
Para obter instruções sobre como configurar o acesso público a blocos, consulte Configurar o bloqueio de acesso público.
Ao receber uma solicitação para acessar um bucket ou um objeto, o Amazon S3 determina se o bucket ou a conta do proprietário do bucket tem uma configuração do Bloqueio de acesso público aplicada. Se a solicitação foi feita por meio de um ponto de acesso, o Amazon S3 também verificará se há configurações do Bloqueio de acesso público para o ponto de acesso. Caso haja uma configuração do Bloqueio de acesso público que proíba o acesso solicitado, o Amazon S3 rejeitará a solicitação.
O Bloqueio de acesso público do Amazon S3 fornece quatro configurações. Essas configurações são independentes e podem ser usadas em qualquer combinação. Cada configuração pode ser aplicada a um ponto de acesso, a um bucket ou a uma Conta da AWS inteira. Se as configurações do Bloqueio de acesso público para o ponto de acesso, o bucket ou a conta forem diferentes, o Amazon S3 aplicará a combinação mais restritiva das configurações de ponto de acesso, bucket e conta.
Quando o Amazon S3 avalia se uma operação é proibida por uma configuração do Bloqueio de acesso público, ela rejeita qualquer solicitação que viole uma configuração de ponto de acesso, bucket ou conta.
Importante
O acesso público aos buckets e objetos é concedido através de listas de controle de acesso (ACLs), políticas de ponto de acesso, políticas de bucket ou todos. Para garantir que todos os seus pontos de acesso, buckets e objetos do Amazon S3 tenham o acesso público bloqueado, recomendamos ativar as quatro configurações de bloqueio de acesso público na sua conta. Estas configurações bloqueiam o acesso público a todos os buckets e pontos de acesso atuais e futuros.
Antes de aplicar estas configurações, verifique se seus aplicativos funcionarão corretamente sem acesso público. Se você precisa de um nível determinado de acesso público aos buckets ou objetos, por exemplo, para hospedar um site estático como descrito em Hospedagem de um site estático usando o Amazon S3, é possível personalizar as configurações individualmente para atender aos seus casos de uso de armazenamento.
Habilitar o Bloqueio de Acesso Público ajuda a proteger seus recursos, impedindo que o acesso público seja concedido por meio de políticas de recursos ou listas de controle de acesso (ACLs) diretamente vinculadas aos recursos do S3. Além de habilitar o Bloqueio de Acesso Público, inspecione cuidadosamente as seguintes políticas para garantir que elas não concedam acesso público:
-
Políticas baseadas em identidade vinculadas a entidades principais da AWS associadas (por exemplo, perfis do IAM)
-
Políticas baseadas em recursos anexadas a recursos da AWS associados [por exemplo, chaves do AWS Key Management Service (KMS)]
nota
-
Você pode habilitar as configurações de bloqueio de acesso público somente para pontos de acesso, buckets e Contas da AWS. O Amazon S3 não oferece suporte a configurações de bloqueio de acesso público por objeto.
-
Quando você aplica configurações de bloqueio de acesso público a uma conta, as configurações se aplicam a todas as Regiões da AWS globalmente. As configurações talvez não entrem em vigor em todas as regiões imediata ou simultaneamente, mas acabam se propagando para todas as regiões.
Tópicos
- Configurações do bloqueio de acesso público
- Executar operações de bloqueio de acesso público em um ponto de acesso
- O significado de "público"
- Usar o IAM Access Analyzer para S3 para revisar buckets públicos
- Permissões
- Configurar o bloqueio de acesso público
- Configurar o bloqueio de acesso público para sua conta
- Configurar o bloqueio de acesso público para seus buckets do S3
Configurações do bloqueio de acesso público
O Bloqueio de acesso público do S3 fornece quatro configurações. É possível aplicar essas configurações em qualquer combinação a pontos de acesso individuais, buckets ou Contas da AWS inteiras. Caso você aplique uma configuração a uma conta, ela se aplica a todos os buckets e pontos de acesso de propriedade dessa conta. Da mesma forma, se você aplicar uma configuração a um bucket, ela se aplicará a todos os pontos de acesso associados a esse bucket.
A tabela a seguir contém as configurações disponíveis.
Nome | Descrição |
---|---|
BlockPublicAcls |
A definição dessa opção como
Quando essa configuração for definida como notaOs pontos de acesso não têm ACLs associadas a eles. Se você aplicar essa configuração a um ponto de acesso, ela atuará como uma passagem para o bucket subjacente. Se um ponto de acesso tiver essa configuração ativada, as solicitações feitas por meio do ponto de acesso se comportam como se o bucket subjacente tivesse essa configuração ativada, independentemente de o bucket realmente ter essa configuração ativada. |
IgnorePublicAcls |
A definição dessa opção como notaOs pontos de acesso não têm ACLs associadas a eles. Se você aplicar essa configuração a um ponto de acesso, ela atuará como uma passagem para o bucket subjacente. Se um ponto de acesso tiver essa configuração ativada, as solicitações feitas por meio do ponto de acesso se comportam como se o bucket subjacente tivesse essa configuração ativada, independentemente de o bucket realmente ter essa configuração ativada. |
BlockPublicPolicy |
A definição dessa opção como A definição dessa opção como Use essa configuração para permitir que os usuários gerenciem políticas de ponto de acesso e bucket sem permitir que compartilhem publicamente o bucket ou os objetos contidos. Habilitar essa configuração não afeta as políticas de ponto de acesso ou de bucket existentes. ImportantePara usar essa configuração de maneira efetiva, recomendamos que aplique-a na conta. Uma política de bucket pode permitir que os usuários alterem as configurações do Bloqueio de acesso público de um bucket. Portanto, os usuários com permissão para alterar a política de bucket podem inserir uma política que os permita desabilitar as configurações do Bloqueio de acesso público do bucket. Caso essa configuração esteja habilitada para toda a conta, em vez de um bucket específico, o Amazon S3 bloqueia as políticas públicas, mesmo que um usuário altere a política de bucket para desabilitar essa configuração. |
RestrictPublicBuckets |
A definição dessa opção como A ativação dessa configuração não afeta políticas de ponto de acesso ou bucket existentes, exceto se o Amazon S3 bloquear os acessos público e entre contas derivados de qualquer política pública de ponto de acesso ou bucket, inclusive delegação não pública a contas específicas. |
Importante
-
As chamadas para GET Bucket acl e GET Object acl sempre retornam as permissões efetivas implantadas para o bucket ou o objeto especificado. Por exemplo, suponhamos que um bucket tenha uma ACL que conceda acesso público, mas o bucket também tenha a configuração
IgnorePublicAcls
habilitada. Nesse caso, GET Bucket acl retorna uma ACL refletindo as permissões de acesso que o Amazon S3 está impondo, em vez da ACL real associada ao bucket. -
As configurações do Bloqueio de acesso público não alteram as políticas ou ACLs existentes. Portanto, a remoção de uma configuração do Bloqueio de acesso público disponibiliza novamente um bucket ou um objeto com uma política pública ou uma ACL.
Executar operações de bloqueio de acesso público em um ponto de acesso
Para realizar operações do Block Public Access em um ponto de acesso, use o serviço s3control
da AWS CLI.
Importante
Observe que não é possível alterar as configurações do Bloqueio de acesso público de um ponto de acesso após ele ser criado. Assim, a única maneira de especificar configurações do Bloqueio de acesso público para um ponto de acesso é incluí-las ao criar o ponto de acesso.
O significado de "público"
ACLs
O Amazon S3 considerará uma ACL de bucket de objeto pública se ela conceder alguma permissão a membros dos grupos AllUsers
ou AuthenticatedUsers
predefinidos. Para obter mais informações sobre grupos predefinidos, consulte Grupos predefinidos do Amazon S3.
Políticas de buckets
Ao avaliar uma política de bucket, o Amazon S3 começa presumindo que a política é pública. Em seguida, ele avalia a política para determinar se ela se qualifica como não pública. Para ser considerada não pública, uma política de bucket deve conceder acesso apenas a valores fixos (valores que não contenham um curinga nem uma variável de política do AWS Identity and Access Management) para um ou mais dos seguintes itens:
-
Um principal, um usuário, uma função ou um principal do produto da AWS (por exemplo,
aws:PrincipalOrgID
) -
Um conjunto de Classless Inter-Domain Routings (CIDRs – Roteamentos sem classe entre domínios) que use
aws:SourceIp
. Para obter mais informações sobre o CIDR, consulte RFC 4632no site RFC Editor. nota
As políticas de bucket que concedem acesso condicionado à chave de condição
aws:SourceIp
com intervalos de IPs muito amplos (por exemplo, 0.0.0.0/1) são avaliadas como “públicas”. Isso inclui valores maiores que /8 para IPv4 e /32 para IPv6 (excluindo intervalos privados RFC1918). Bloquear o acesso público rejeitará essas políticas “públicas” e impedirá o acesso entre contas a buckets que já usam essas políticas “públicas”. -
aws:SourceArn
-
aws:SourceVpc
-
aws:SourceVpce
-
aws:SourceOwner
-
aws:SourceAccount
-
aws:userid
, fora do padrão "AROLEID:*
" -
s3:DataAccessPointArn
nota
Quando usado em uma política de bucket, esse valor pode conter um curinga para o nome do ponto de acesso sem tornar a política pública, desde que o ID da conta seja corrigido. Por exemplo, permitir acesso a
arn:aws:s3:us-west-2:123456789012:accesspoint/*
permitiria o acesso a qualquer ponto de acesso associado à conta123456789012
na regiãous-west-2
, sem tornar pública a política de bucket. Observe que esse comportamento é diferente para políticas de ponto de acesso. Para ter mais informações, consulte Pontos de acesso. -
s3:DataAccessPointAccount
Para obter mais informações sobre políticas de bucket, consulte Políticas de bucket para o Amazon S3.
exemplo : Políticas públicas de buckets
Nessas regras, as políticas de exemplo a seguir são consideradas públicas.
{ "Principal": "*", "Resource": "*", "Action": "s3:PutObject", "Effect": "Allow" }
{ "Principal": "*", "Resource": "*", "Action": "s3:PutObject", "Effect": "Allow", "Condition": { "StringLike": {"aws:SourceVpc": "vpc-*"}} }
É possível tornar essas políticas não públicas com a inclusão de alguma das chaves de condição listadas anteriormente usando-se um valor fixo. Por exemplo, a última política acima pode se tornar não pública com a definição de aws:SourceVpc
como um valor fixo como o seguinte.
{ "Principal": "*", "Resource": "*", "Action": "s3:PutObject", "Effect": "Allow", "Condition": {"StringEquals": {"aws:SourceVpc": "vpc-91237329"}} }
Como o Amazon S3 avalia uma política de bucket que contém concessões de acesso público e não público
Este exemplo mostra como o Amazon S3 avalia uma política de bucket que contém concessões de acesso público e não público.
Suponhamos que um bucket tenha uma política que conceda acesso a um conjunto de entidades principais fixas. Segundo as regras descritas anteriormente, essa política não é pública. Por isso, se você habilitar a configuração RestrictPublicBuckets
, a política permanecerá em vigor como escrita, porque RestrictPublicBuckets
só se aplica a buckets que tenham políticas públicas. No entanto, se você adicionar uma instrução pública à política, o RestrictPublicBuckets
será ativado no bucket. Isso permite que somente principais de serviço da AWS e usuários autorizados da conta do proprietário do bucket acessem o bucket.
Como exemplo, suponhamos que um bucket de propriedade de "Account-1" tenha uma política que contenha o seguinte:
-
Uma instrução que conceda acesso ao AWS CloudTrail (uma entidade principal de serviço da AWS)
-
Uma instrução que conceda acesso à conta "Account-2"
-
Uma instrução que conceda acesso ao público, por exemplo, especificando
"Principal": "*"
sem limitação deCondition
Essa política é qualificada como pública por causa da terceira instrução. Com essa política implementada e RestrictPublicBuckets
ativado, o Amazon S3 permite o acesso somente pelo CloudTrail. Embora a instrução 2 não seja pública, o Amazon S3 desabilita o acesso de "Account-2". Isso porque a instrução 3 renderiza toda a política pública. Assim, RestrictPublicBuckets
se aplica. Dessa forma, o Amazon S3 desabilita o acesso entre contas, mesmo que a política delegue acesso a uma conta específica, "Account-2". Porém, se você remover a instrução 3 da política, esta não se qualificará como pública e RestrictPublicBuckets
deixará de se aplicar. Por isso, "Account-2" retoma o acesso ao bucket, mesmo caso você deixe RestrictPublicBuckets
habilitado.
Pontos de acesso
O Amazon S3 avalia as configurações do Bloqueio de acesso público de maneira um pouco diferente para os pontos de acesso em comparação com os buckets. As regras que o Amazon S3 aplica para determinar quando uma política de ponto de acesso é pública são geralmente as mesmas para pontos de acesso e para buckets, exceto nas seguintes situações:
-
Um ponto de acesso que tenha uma origem de rede da VPC é sempre considerado não público, independentemente do conteúdo da política de ponto de acesso.
-
Uma política de ponto de acesso que concede acesso a um conjunto de pontos de acesso usando
s3:DataAccessPointArn
é considerada pública. Observe que esse comportamento é diferente para políticas de bucket. Por exemplo, uma política de bucket que concede acesso a valores des3:DataAccessPointArn
que correspondem aarn:aws:s3:us-west-2:123456789012:accesspoint/*
não é considerada pública. No entanto, a mesma instrução em uma política de ponto de acesso tornaria o ponto de acesso público.
Usar o IAM Access Analyzer para S3 para revisar buckets públicos
É possível usar o IAM Access Analyzer para S3 para revisar buckets com ACLs de bucket, políticas de bucket ou políticas de ponto de acesso que concedem acesso público. O IAM Access Analyzer para S3 alerta você sobre buckets que são configurados para permitir o acesso a qualquer pessoa na internet ou a outras Contas da AWS, incluindo Contas da AWS fora da organização. Para cada bucket público ou compartilhado, você recebe descobertas que relatam a origem e o nível de acesso público ou compartilhado.
No IAM Access Analyzer para S3, é possível bloquear todo o acesso público a um bucket com um único clique. Você também pode detalhar as configurações de permissão no nível do bucket para definir níveis granulares de acesso. Para casos de uso específicos e verificados que exigem acesso público ou compartilhado, você pode confirmar e registrar sua intenção de que o bucket permaneça público ou compartilhado arquivando as descobertas do bucket.
Em eventos raros, o IAM Access Analyzer para S3 pode relatar nenhuma descoberta para um bucket que uma análise do Bloqueio de Acesso Público do Amazon S3 relata como público. Isso acontece porque o bloqueio de acesso público do Amazon S3 analisa as políticas de ações atuais e quaisquer ações potenciais que possam ser adicionadas no futuro, fazendo com que um bucket se torne público. Por outro lado, o IAM Access Analyzer para S3 analisa somente as ações atuais especificadas para o serviço do Amazon S3 na avaliação do status do acesso.
Para obter mais informações sobre o IAM Access Analyzer para S3, consulte Revisar o acesso de bucket usando o IAM Access Analyzer para S3.
Permissões
Para usar os recursos do Bloqueio de acesso público do Amazon S3, você deve ter as permissões a seguir.
Operação | Permissões obrigatórias |
---|---|
Status da política de bucket GET | s3:GetBucketPolicyStatus |
Configurações do Bloqueio de acesso público do bucket GET | s3:GetBucketPublicAccessBlock |
Configurações do Bloqueio de acesso público do bucket PUT | s3:PutBucketPublicAccessBlock |
Configurações do Bloqueio de acesso público do bucket DELETE | s3:PutBucketPublicAccessBlock |
Configurações do Bloqueio de acesso público da conta GET | s3:GetAccountPublicAccessBlock |
Configurações do Bloqueio de acesso público da conta PUT | s3:PutAccountPublicAccessBlock |
Configurações do Bloqueio de acesso público da conta DELETE | s3:PutAccountPublicAccessBlock |
Configurações do Bloqueio de acesso público do ponto de acesso PUT | s3:CreateAccessPoint |
nota
As operações DELETE exigem as mesmas permissões das operações PUT. Não há permissões separadas para as operações DELETE.
Configurar o bloqueio de acesso público
Para ter mais informações sobre como configurar o Bloqueio de Acesso Público para a Conta da AWS, os buckets do Amazon S3 e os pontos de acesso, consulte os seguintes tópicos: