Bloquear o acesso público ao armazenamento do Amazon S3 - Amazon Simple Storage Service

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.

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.

Atenção

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 certo nível de acesso público aos seus 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 conforme cada caso de uso de armazenamento.

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.

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 TRUE causa o seguinte comportamento:

  • As chamadas PUT Bucket acl e PUT Object falharão se a Access Control List (ACL – Lista de controle de acesso) especificada for pública.

  • As chamadas PUT Object falharão se a solicitação incluir uma ACL pública.

  • Se essa configuração for aplicada a uma conta, as chamadas PUT Bucket falharão se a solicitação incluir uma ACL pública.

Quando essa configuração for definida como TRUE, as operações especificadas falharão (quer por meio da API REST, da AWS CLI ou dos AWS SDKs). Porém, as políticas e as ACLs existentes para buckets e objetos não são modificadas. Essa configuração permite se proteger contra acesso público ao mesmo tempo em que permite auditar, refinar ou alterar as políticas e as ACLs existentes para os buckets e os objetos.

nota

Os 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 TRUE faz o Amazon S3 ignorar todas as ACLs públicas em um bucket e todos os objetos contidos. Essa configuração permite bloquear com segurança acesso público concedido por ACLs ao mesmo tempo em que permite chamadas PUT Object que incluam uma ACL pública (ao contrário de BlockPublicAcls, que rejeita chamadas PUT Object que incluam uma ACL pública). A habilitação dessa configuração não afeta a persistência de ACLs existentes nem evita a definição de novas ACLs públicas.

nota

Os 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

Definir esta opção como TRUE para um bucket faz com que o Amazon S3 rejeite chamadas para a política PUT de bucket, se a política de bucket especificada permitir acesso público, e rejeite chamadas para a política PUT de poto de acesso para todos os pontos de acesso do bucket, se a política especificada permitir acesso público. Definir esta opção como TRUE para um ponto de acesso faz com que o Amazon S3 rejeite chamadas para a política PUT de ponto de acesso e a política PUT de bucket que são feitas por meio do ponto de acesso, se a política especificada (para o ponto de acesso ou para o bucket subjacente) for pública.

Essa configuração permite 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.

Importante

Para usar essa configuração de maneira efetiva, aplique-a no nível da 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 TRUE restringe o acesso a um ponto de acesso ou a um bucket com uma política pública apenas a principais de serviços da AWS e a usuários autorizados dentro da conta do proprietário do bucket. Essa definição bloqueia todo o acesso entre contas ao ponto de acesso ou ao bucket (exceto por principais de serviços da AWS), ao mesmo tempo que continua permitindo que usuários dentro da conta gerenciem o ponto de acesso ou o bucket.

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"

Buckets

  • 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

    • 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 só deve conceder acesso a valores fixos (valores que não contenham um curinga) de um ou mais dos seguintes:

      • 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 4632 no site RFC Editor.

      • Um principal, um usuário, uma função ou um principal do produto da AWS (por exemplo, aws:PrincipalOrgID)

      • aws:SourceArn

      • aws:SourceVpc

      • aws:SourceVpce

      • aws:SourceOwner

      • aws:SourceAccount

      • s3:x-amz-server-side-encryption-aws-kms-key-id

      • 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 à conta 123456789012 na região us-west-2, sem tornar pública a política de bucket. Observe que esse comportamento é diferente para políticas de ponto de acesso. Para obter mais informações, consulte Pontos de acesso.

      • s3:DataAccessPointAccount

    • Nessas regras, as políticas de exemplo a seguir são consideradas públicas.

      { "Principal": { "Federated": "graph.facebook.com" }, "Resource": "*", "Action": "s3:PutObject", "Effect": "Allow" }
      { "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"}} }
    • Para obter mais informações sobre políticas de bucket, consulte Políticas de bucket e políticas de usuário.

Exemplo

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:

  1. Uma instrução que conceda acesso ao AWS CloudTrail (uma entidade principal de serviço da AWS)

  2. Uma instrução que conceda acesso à conta "Account-2"

  3. Uma instrução que conceda acesso ao público, por exemplo, especificando "Principal": "*" sem limitação de Condition

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 de s3:DataAccessPointArn que correspondem a arn: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 Analisador de acesso para S3 para revisar buckets públicos

Você pode usar o Analisador de acesso 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 Access Analyzer for 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.

Com o conhecimento apresentado nas descobertas, você pode tomar medidas corretivas imediatas e precisas. No Analisador de acesso para S3, você pode 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 Analisador de acesso para S3 pode relatar nenhuma descoberta para um bucket que uma análise de 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 Analisador de acesso 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 Access Analyzer for S3, consulte Revisar o acesso de bucket usando o Access Analyzer for 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 obter mais informações sobre como configurar o bloqueio de acesso público para sua Conta da AWS e seus buckets do Amazon S3, consulte os tópicos a seguir.