0Pricing
Cloud & IT Cert Prep · Aula

Controle de acesso do S3: políticas de bucket e ACLs

Escreva políticas de bucket, compare-as com ACLs e configure as opções de bloqueio de acesso público para uma hospedagem segura.

Controle de acesso do S3: políticas de bucket e ACLs é uma aula grátis de Cloud & IT Cert Prep no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cloud & IT Cert Prep, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cloud & IT Cert Prep inclui 4 aulas no total.

Visão geral do controle de acesso do S3

O S3 oferece vários mecanismos de controle de acesso sobrepostos: políticas do IAM (baseadas em identidade, controlam o que as entidades principais podem fazer), políticas de bucket (políticas JSON baseadas em recursos no bucket), Listas de Controle de Acesso (ACLs) (concessões legadas por objeto ou bucket) e S3 Block Public Access (substituição no nível da conta ou do bucket que bloqueia qualquer acesso público, independentemente de outras políticas). Atualmente, para a maioria dos casos de uso, a abordagem recomendada é usar políticas de bucket junto com Block Public Access; as ACLs são consideradas legadas.

Políticas de bucket: JSON baseado em recursos

Uma política de bucket é um documento JSON anexado diretamente ao bucket do S3. Ela especifica quais entidades principais (usuários do IAM, funções, contas da AWS, serviços ou o público) podem executar quais ações em quais recursos (o bucket e/ou prefixos de chaves específicos). As políticas de bucket permitem acesso entre contas sem a necessidade de funções do IAM: você pode conceder diretamente, na política de bucket, acesso de leitura a objetos específicos para uma função do IAM de outra conta da AWS. Cada bucket pode ter uma política, e o tamanho máximo é de 20 KB.

# Allow a specific IAM role from another account to read objects
{
  'Version': '2012-10-17',
  'Statement': [{
    'Effect': 'Allow',
    'Principal': {
      'AWS': 'arn:aws:iam::999999999999:role/PartnerReadRole'
    },
    'Action': 's3:GetObject',
    'Resource': 'arn:aws:s3:::my-bucket/partner-data/*'
  }]
}

Tornando objetos legíveis publicamente

Para disponibilizar conteúdo público (por exemplo, recursos de sites estáticos e conjuntos de dados públicos), você pode tornar os objetos legíveis publicamente por meio de uma política de bucket. Primeiro, desative Block Public Access no nível do bucket e, em seguida, adicione uma declaração de política de bucket com Principal: '*' e Action: s3:GetObject. É necessária a combinação da desativação da configuração Block Public Access com a permissão Allow da política de bucket — ativar apenas uma delas não funcionará. Sempre restrinja o Resource a um prefixo específico, em vez de ao bucket inteiro, a menos que você queira intencionalmente tornar todos os objetos públicos.

# Public read policy for static website assets
{
  'Version': '2012-10-17',
  'Statement': [{
    'Effect': 'Allow',
    'Principal': '*',
    'Action': 's3:GetObject',
    'Resource': 'arn:aws:s3:::my-website-bucket/public/*'
  }]
}

Configurações de S3 Block Public Access

S3 Block Public Access é uma rede de segurança com quatro configurações que substituem as políticas de bucket e as ACLs: BlockPublicAcls (rejeita solicitações para definir ACLs públicas), IgnorePublicAcls (ignora ACLs públicas existentes), BlockPublicPolicy (rejeita políticas de bucket que concedem acesso público) e RestrictPublicBuckets (restringe o acesso com base em uma política pública). Todas as quatro configurações são ativadas por padrão. Você também pode ativar Block Public Access no nível da conta, bloqueando-o para todos os buckets independentemente das configurações individuais — uma medida ideal para evitar exposição pública acidental.

# Enable all Block Public Access settings on a bucket
aws s3api put-public-access-block \
  --bucket my-private-bucket \
  --public-access-block-configuration \
    BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true

Listas de controle de acesso (ACLs): legado

As ACLs do S3 são o mecanismo original de controle de acesso, anterior ao IAM. Uma ACL concede permissões predefinidas (READ, WRITE, FULL_CONTROL) a contas da AWS ou grupos predefinidos (todos os usuários, usuários da AWS autenticados e entrega de registros). As ACLs podem ser aplicadas no nível do bucket ou no nível de um objeto individual. Atualmente, a AWS recomenda desativar as ACLs (a configuração 'Bucket Owner Enforced' do S3 faz com que o proprietário do bucket seja o proprietário de todos os objetos, desativando as ACLs) e usar políticas de bucket e IAM. As ACLs ainda são cobradas na prova SAA-C03 como um conceito legado.

# Disable ACLs by setting ownership to BucketOwnerEnforced
aws s3api put-bucket-ownership-controls \
  --bucket my-bucket \
  --ownership-controls '{"Rules":[{"ObjectOwnership":"BucketOwnerEnforced"}]}'

Controle de acesso à origem para CloudFront

Ao disponibilizar conteúdo do S3 por meio do CloudFront, você quer manter o bucket privado, mas permitir que o CloudFront busque os objetos. Use Origin Access Control (OAC) — o substituto moderno do Origin Access Identity (OAI). O OAC cria uma identidade do CloudFront à qual você concede a permissão s3:GetObject na política de bucket, mantendo Block Public Access ativado. Dessa forma, os usuários precisam passar pelo CloudFront (para armazenamento em cache, WAF e HTTPS) e não podem acessar o bucket diretamente — um padrão comum de arquitetura segura na prova SAA-C03.

# Bucket policy granting CloudFront OAC access
{
  'Version': '2012-10-17',
  'Statement': [{
    'Effect': 'Allow',
    'Principal': {
      'Service': 'cloudfront.amazonaws.com'
    },
    'Action': 's3:GetObject',
    'Resource': 'arn:aws:s3:::my-bucket/*',
    'Condition': {
      'StringEquals': {
        'AWS:SourceArn': 'arn:aws:cloudfront::123456789012:distribution/EDFDVBD6EXAMPLE'
      }
    }
  }]
}

Acesso entre contas ao S3

Há duas maneiras de conceder acesso de outra conta da AWS ao seu bucket do S3. Opção 1 — política de bucket: adicione uma declaração com o ARN da conta externa como Principal e as ações desejadas do S3. Os usuários e as funções do IAM da conta externa ainda precisam de permissões do IAM para chamar o S3, e a política de bucket também precisa conceder Allow a eles. Opção 2 — função do IAM com política de confiança: crie uma função na sua conta que confie na conta externa; as identidades da conta externa assumem a função e obtêm as permissões do seu bucket. A política de bucket é mais simples para cenários somente de leitura; as funções são melhores para acesso operacional.

Configuração de CORS para aplicações Web

Cross-Origin Resource Sharing (CORS) permite que uma aplicação Web hospedada em um domínio faça solicitações de busca do JavaScript para um bucket do S3 em um domínio diferente. Sem uma configuração de CORS, os navegadores bloqueiam essas solicitações por motivos de segurança. Você adiciona uma configuração de CORS ao bucket que especifica origens, métodos HTTP e cabeçalhos permitidos. O CORS é comumente necessário quando uma SPA do React hospedada em example.com busca imagens ou arquivos diretamente de um URL de bucket do S3.

# Apply a CORS configuration
aws s3api put-bucket-cors \
  --bucket my-website-bucket \
  --cors-configuration '{"CORSRules":[{"AllowedOrigins":["https://example.com"],"AllowedMethods":["GET"],"AllowedHeaders":["*"],"MaxAgeSeconds":3600}]}'

URLs pré-assinados para acesso temporário

Um URL pré-assinado concede acesso por tempo limitado a um objeto privado do S3 (para GET ou PUT) sem alterar nenhuma permissão do bucket ou do objeto. O URL inclui suas credenciais e um horário de expiração — qualquer pessoa com o URL pode acessar o objeto até que ele expire. Use URLs pré-assinados para: permitir que usuários autenticados da sua aplicação baixem arquivos privados, permitir que clientes carreguem arquivos diretamente no S3 sem passar pelo seu back-end ou compartilhar relatórios temporariamente. A expiração pode variar de 1 segundo a 7 dias (ao usar credenciais temporárias do STS, o máximo é de 12 horas).

# Generate a pre-signed GET URL valid for 24 hours
aws s3 presign s3://my-private-bucket/reports/invoice.pdf \
  --expires-in 86400

# Generate a pre-signed PUT URL (for client uploads)
aws s3 presign s3://my-private-bucket/uploads/new-file.pdf \
  --expires-in 3600 \
  --method PUT

Condições de política de bucket para segurança

Use condições de política de bucket para adicionar segurança baseada em contexto. Padrões comuns: aws:SourceIp restringe o acesso a intervalos de IP específicos (por exemplo, endpoints de VPC ou redes corporativas); aws:SecureTransport: true força o uso de HTTPS ao negar solicitações por HTTP (uma prática recomendada para todos os buckets que armazenam dados confidenciais); s3:x-amz-server-side-encryption garante que os objetos sejam carregados com criptografia no lado do servidor; e aws:PrincipalOrgID restringe o acesso a entidades principais dentro da sua Organização da AWS, evitando a exfiltração de dados para contas externas.

# Deny non-HTTPS access to the bucket
{
  'Effect': 'Deny',
  'Principal': '*',
  'Action': 's3:*',
  'Resource': [
    'arn:aws:s3:::my-secure-bucket',
    'arn:aws:s3:::my-secure-bucket/*'
  ],
  'Condition': {
    'Bool': {'aws:SecureTransport': 'false'}
  }
}

Endpoints de VPC do S3 para acesso privado

Por padrão, as instâncias do EC2 em uma sub-rede privada acessam o S3 pela Internet (por meio de um gateway NAT), gerando custos de NAT e expondo o tráfego à Internet pública. Os Endpoints de Gateway do S3 fornecem conectividade privada ao S3 dentro de uma VPC, sem um gateway NAT e sem custo adicional. Você adiciona o Endpoint de Gateway à sua tabela de rotas; o tráfego para o S3 é roteado automaticamente pela rede privada da AWS. Você também pode adicionar condições à política de bucket usando aws:SourceVpce para restringir o acesso apenas a solicitações provenientes do endpoint.

# Create an S3 gateway endpoint and associate with route tables
aws ec2 create-vpc-endpoint \
  --vpc-id vpc-12345678 \
  --service-name com.amazonaws.us-east-1.s3 \
  --route-table-ids rtb-12345678

Verificação rápida

Teste sua compreensão dos conceitos do AWS Solutions Architect (SAA-C03) abordados nesta lição.

Recapitulação da lição

Nesta lição, você aprendeu que: as políticas de bucket são documentos JSON baseados em recursos que controlam o acesso entre contas e o acesso de serviços ao S3, S3 Block Public Access é uma substituição de segurança que evita exposição pública acidental e URLs pré-assinados, endpoints de VPC e configurações de CORS atendem com segurança a padrões de acesso específicos. A seguir, abordaremos versionamento do S3, MFA Delete e replicação.

Perguntas Frequentes

A aula “Controle de acesso do S3: políticas de bucket e ACLs” é grátis?

Sim — o texto completo de “Controle de acesso do S3: políticas de bucket e ACLs” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cloud & IT Cert Prep, atualize para CoddyKit PRO. O curso de Cloud & IT Cert Prep inclui 4 aulas no total.

O que vou aprender em “Controle de acesso do S3: políticas de bucket e ACLs”?

Escreva políticas de bucket, compare-as com ACLs e configure as opções de bloqueio de acesso público para uma hospedagem segura. Você pratica Cloud & IT Cert Prep com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Cloud & IT Cert Prep?

Nenhuma experiência prévia é necessária. Cloud & IT Cert Prep no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Controle de acesso do S3: políticas de bucket e ACLs”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Cloud & IT Cert Prep?

Sim. Cada aula de Cloud & IT Cert Prep inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Buckets, objetos e regiões
  2. Controle de acesso do S3: políticas de bucket e ACLs
  3. Versionamento, exclusão com MFA e replicação
  4. Classes de armazenamento e políticas de ciclo de vida
← Voltar para Cloud & IT Cert Prep