Práticas recomendadas de controle de acesso - Amazon Simple Storage Service

Práticas recomendadas de controle de acesso

O Amazon S3 fornece uma variedade de recursos e ferramentas de segurança. Os cenários a seguir devem servir como um guia para quais ferramentas e configurações você pode querer usar ao executar determinadas tarefas ou operar em ambientes específicos. A aplicação adequada dessas ferramentas pode ajudar a manter a integridade dos dados e ajudar a garantir que os recursos sejam acessíveis aos usuários pretendidos.

nota

Para obter mais informações sobre o uso da classe de armazenamento Amazon S3 Express One Zone com buckets de diretório, consulte O que é a classe S3 Express One Zone? e Buckets de diretório.

Criar um bucket

Ao criar um bucket, é necessário aplicar as seguintes ferramentas e configurações para ajudar a garantir que os recursos do Amazon S3 estejam protegidos.

S3 Object Ownership para simplificar o controle de acesso

A Propriedade de objeto do S3 é uma configuração no nível do bucket do Amazon S3 que você pode usar para controlar a propriedade de objetos carregados no bucket e para desabilitar ou habilitar as listas de controle de acesso (ACLs). Por padrão, a Propriedade de Objetos está definida com a configuração Imposto pelo proprietário do bucket e todas as ACLs estão desabilitadas. Com as ACLs desabilitadas, o proprietário do bucket possui cada objeto no bucket e gerencia o acesso aos dados exclusivamente usando políticas.

Há três configurações em Propriedade de objeto que podem ser usadas tanto para controlar a propriedade de objetos carregados no bucket como para desabilitar ou habilitar ACLs:

ACLs desabilitadas
  • Imposto pelo proprietário do bucket (padrão): as ACLs são desabilitadas e o proprietário do bucket automaticamente tem a propriedade e o controle total sobre todos os objetos do bucket. As ACLs não afetam mais as permissões nos dados no bucket do S3. O bucket usa políticas exclusivamente para definir o controle de acesso.

ACLs habilitadas
  • Bucket owner preferred (Preferencial do proprietário do bucket): o proprietário do bucket tem a propriedade e o controle total sobre novos objetos que outras contas gravam no bucket com a ACL bucket-owner-full-control pré-configurada.

  • Object writer (Gravador de objetos): a Conta da AWS que carrega um objeto é a proprietária do objeto, tem controle total sobre ele e pode conceder acesso a outros usuários por meio de ACLs.

Para obter mais informações, consulte Controlar a propriedade de objetos e desabilitar ACLs para seu bucket.

Bloqueio de acesso público

O Bloqueio de acesso público do S3 fornece quatro configurações para ajudar a evitar expor inadvertidamente seus recursos do S3. É 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. Por padrão, as quatro configurações de Bloquear todo o acesso público são habilitadas para novos buckets. Recomendamos que você mantenha todas as quatro configurações habilitadas, a menos que precise desativar uma ou mais delas para seu caso de uso específico. É possível modificar as configurações individuais do Bloqueio de Acesso Público usando o console do Amazon S3.

Para obter mais informações, consulte O significado de "público".

Se precisar conceder acesso a usuários específicos, é recomendável usar políticas do AWS Identity and Access Management (IAM) em vez de desabilitar todas as configurações do Bloqueio de Acesso Público. Manter o Bloqueio de Acesso Público é uma prática recomendada de segurança. Usar o Bloqueio de Acesso Público com identidades do IAM ajuda a garantir que qualquer operação bloqueada por uma configuração do Bloqueio de Acesso Público seja rejeitada, a menos que o usuário solicitado tenha recebido permissão específica.

Para obter mais informações, consulte Configurações do bloqueio de acesso público.

Conceder acesso com identidades do IAM

Ao configurar contas para novos membros da equipe que exigem acesso ao S3, use usuários e funções do IAM para garantir privilégios mínimos. Também é possível implementar uma forma de autenticação multifator (MFA) do IAM para apoiar uma base de identidade sólida. Com as identidades do IAM, é possível conceder permissões exclusivas aos usuários e especificar quais recursos eles podem acessar e quais ações eles podem executar. As identidades do IAM fornecem mais recursos, incluindo a capacidade de exigir que os usuários insiram credenciais de login antes de acessar recursos compartilhados e aplicar hierarquias de permissão a diferentes objetos em um único bucket.

Para obter mais informações, consulte Exemplo 1: Proprietário do bucket que concede permissões do bucket aos usuários.

Políticas de buckets

Com as políticas de bucket, é possível personalizar o acesso ao bucket para ajudar a garantir que somente os usuários que você aprovou possam acessar recursos e executar ações neles. Além das políticas de bucket, recomendamos usar as configurações do Bloqueio de Acesso Público no nível do bucket para limitar ainda mais o acesso público aos dados.

Para obter mais informações, consulte Uso de políticas de bucket.

Ao criar políticas, evite o uso de caracteres curinga (*) no elemento Principal, porque ele permite que qualquer pessoa acesse os recursos do Amazon S3. Em vez disso, é melhor listar explicitamente usuários ou grupos que têm permissão para acessar o bucket. Em vez de incluir um caractere curinga para as ações, conceda permissões específicas quando aplicável.

Para aprimorar a prática de privilégios mínimos, as declarações Deny no elemento Effect devem ser o mais amplas possíveis e as declarações Allow devem ser tão restritas quanto possível. O efeito de Deny combinado com a ação “s3:*” é outra boa maneira de implementar as práticas recomendadas de adesão para os usuários incluídos em declarações de condição de política.

Para obter mais informações sobre como especificar condições para quando uma política estiver em vigor, consulte Exemplos de chave de condição do Amazon S3.

Buckets em uma configuração de VPC

Ao adicionar usuários em uma configuração corporativa, você poderá usar um endpoint de Virtual Private Cloud (VPC) para permitir que todos os usuários na rede virtual acessem os recursos do Amazon S3. Os VPC endpoints permitem que os desenvolvedores concedam acesso e permissões específicos a grupos de usuários com base na rede à qual o usuário está conectado. Em vez de adicionar cada usuário a um grupo ou perfil do IAM, você poderá usar endpoints da VPC para negar acesso ao bucket se a solicitação não for originada do endpoint especificado.

Para obter mais informações, consulte Controlar o acesso a partir de VPC endpoints com políticas de bucket.

Armazenar e compartilhar dados

Use as seguintes ferramentas e melhores práticas para armazenar e compartilhar os dados do Amazon S3.

Versionamento e bloqueio de objetos para integridade de dados

Se você usar o console do Amazon S3 para gerenciar buckets e objetos, recomendamos implementar o versionamento do S3 e o Bloqueio de objetos do S3. Esses recursos ajudam a evitar alterações acidentais em dados críticos e permitem reverter ações não intencionais. Esse recurso de reversão é particularmente útil quando há vários usuários com permissões completas de gravação e execução acessando o console do Amazon S3.

Para obter informações sobre o Versionamento do S3, consulte Usando o versionamento em buckets do S3. Para obter mais informações sobre Bloqueio de objetos, consulte Usar o bloqueio de objetos do S3.

Gerenciamento do ciclo de vida do objeto para eficiência de custos

Para gerenciar os objetos de modo que eles sejam armazenados de maneira econômica durante todo o ciclo de vida, é possível emparelhar configurações de ciclo de vida com o versionamento de objetos do S3. As configurações de ciclo de vida definem as ações que você deseja que o Amazon S3 execute durante a vida útil de um objeto. Por exemplo, é possível criar uma configuração de ciclo de vida que fará a transição de objetos para outra classe de armazenamento, arquivá-los ou excluí-los após um período especificado. É possível definir uma configuração de ciclo de vida para todos os objetos no bucket ou para um subconjunto de objetos usando um prefixo ou uma tag compartilhados.

Para obter mais informações, consulte Gerenciando seu ciclo de vida de armazenamento.

Replicação entre regiões para vários locais de escritório

Ao criar buckets que são acessados por diferentes locais de escritório, considere a implementação da Replicação do S3 Entre Regiões Diferentes. A replicação entre regiões ajuda a garantir que todos os usuários tenham acesso aos recursos de que precisam e aumenta a eficiência operacional. A replicação entre regiões oferece maior disponibilidade mediante a cópia de objetos entre buckets do S3 em diferentes Regiões da AWS. No entanto, o uso desse recurso aumenta os custos de armazenamento.

Para obter mais informações, consulte Replicação de objetos.

Permissões para hospedagem segura de sites estáticos

Ao configurar um bucket para ser usado como um site estático acessado publicamente, é necessário desabilitar todas as configurações de bloqueio de acesso público. Ao escrever a política de bucket para o site estático, aceite apenas ações s3:GetObject e não permissões ListObject e PutObject. Isso ajuda a garantir que os usuários não possam visualizar todos os objetos no bucket nem adicionar seu próprio conteúdo.

Para obter mais informações, consulte Configuração de permissões para acesso ao site.

Recomendamos manter o Bloqueio de Acesso Público habilitado. Se quiser manter todas as quatro configurações do Bloqueio de Acesso Público habilitadas e hospedar um site estático, use o controle de acesso à origem (OAC) do Amazon CloudFront. O Amazon CloudFront fornece os recursos necessários para configurar um site estático seguro. Os sites estáticos do Amazon S3 só são compatíveis com endpoints HTTP. O CloudFront usa o armazenamento durável do Amazon S3 ao mesmo tempo que fornece cabeçalhos de segurança adicionais, como HTTPS. O HTTPS adiciona segurança criptografando uma solicitação HTTP normal e protegendo-a contra ataques cibernéticos comuns.

Para obter mais informações, consulte Conceitos básicos de um site estático seguro no Guia do desenvolvedor do Amazon CloudFront.

Compartilhar recursos

Existem várias maneiras diferentes de compartilhar recursos com um grupo específico de usuários. É possível usar as ferramentas a seguir para compartilhar um conjunto de documentos ou outros recursos com um único grupo de usuários, departamento ou escritório. Embora essas ferramentas possam ser usadas para atingir o mesmo objetivo, algumas delas podem se adequar melhor do que outras às configurações existentes.

Propriedade de objeto do S3

A Propriedade de objeto do S3 é uma configuração no nível do bucket do Amazon S3 que você pode usar para controlar a propriedade de objetos carregados no bucket e para desabilitar ou habilitar as listas de controle de acesso (ACLs). Por padrão, a Propriedade de Objetos está definida com a configuração Imposto pelo proprietário do bucket e todas as ACLs estão desabilitadas. Com as ACLs desabilitadas, o proprietário do bucket possui cada objeto no bucket e gerencia o acesso aos dados exclusivamente usando políticas.

A maioria dos casos de uso modernos no Amazon S3 não exige mais o uso de ACLs. Recomendamos manter as ACLs desabilitadas, exceto em circunstâncias incomuns em que seja necessário controlar o acesso para cada objeto individualmente.

Para obter mais informações, consulte Controlar a propriedade de objetos e desabilitar ACLs para seu bucket.

Políticas de usuário

É possível compartilhar recursos com um grupo limitado de pessoas usando políticas de usuários e grupos do IAM. Ao criar um usuário do IAM, você será solicitado a criá-lo e adicioná-lo a um grupo. No entanto, é possível criar e adicionar usuários a grupos a qualquer momento. Se os indivíduos com os quais você pretende compartilhar esses recursos já estiverem configurados no IAM, será possível adicioná-los a um grupo comum. Depois, é possível usar uma política de usuário do IAM para compartilhar o bucket com esse grupo. Também é possível usar políticas de usuário do IAM para compartilhar objetos individuais em um bucket.

Para obter mais informações, consulte Permitir que um usuário do IAM acesse um dos seus buckets.

Listas de controle de acesso

Como regra geral, recomendamos que você use políticas de bucket do S3 ou políticas de usuários do IAM para controle de acesso. Usar políticas em vez de ACLs simplifica o gerenciamento de permissões. As ACLs do Amazon S3 são o mecanismo de controle de acesso original do Amazon S3 anterior ao IAM. No entanto, determinados cenários de controle de acesso exigem o uso de ACLs. Por exemplo, suponha que o proprietário do bucket deseja conceder permissão para objetos, mas nem todos os objetos pertencem ao proprietário do bucket. Nesse caso, o proprietário do objeto deve, primeiro, conceder permissão ao proprietário do bucket usando uma ACL do objeto.

A maioria dos casos de uso modernos no Amazon S3 não exige mais o uso de ACLs. Recomendamos desabilitar as ACLs, exceto em circunstâncias incomuns em que seja necessário controlar o acesso para cada objeto individualmente. Com Object Ownership, é possível desabilitar ACLs e confiar em políticas para controle de acesso. Ao desabilitar ACLs, você pode facilmente manter um bucket com objetos carregados por diferentes Contas da AWS. Como proprietário do bucket, você possui todos os objetos do bucket e pode gerenciar o acesso a eles usando políticas.

Importante

Se o bucket usar a configuração Imposto pelo proprietário do bucket para a Propriedade de Objetos do S3, será necessário usar políticas para conceder acesso ao bucket e aos objetos contidos nele. Quando a configuração Imposto pelo proprietário do bucket estiver habilitada, as solicitações para definir listas de controle de acesso (ACLs) ou atualizar ACLs falharão e retornarão o código de erro AccessControlListNotSupported. Ainda há suporte para solicitações de leitura de ACLs.

Para obter mais informações sobre como usar ACLs, consulte Exemplo 3: O proprietário do bucket concede permissões para objetos que não possui.

Prefixos

Ao tentar compartilhar recursos específicos de um bucket, é possível replicar permissões para pastas usando prefixos. O console do Amazon S3 é compatível com o conceito de pasta como um meio de agrupar objetos usando um prefixo de nome compartilhado para objetos. Portanto, para conceder uma permissão explícita a um usuário do IAM para acessar os recursos associados a esse prefixo, é possível especificar esse prefixo nas condições da política de usuário do IAM.

Para obter mais informações, consulte Organizar objetos no console do Amazon S3 usando pastas.

Marcação

Se usar a marcação de objetos para categorizar o armazenamento, você poderá compartilhar objetos marcados com um valor específico com usuários especificados. A marcação de recursos permite controlar o acesso a objetos com base nas tags associadas ao recurso que um usuário está tentando acessar. Para permitir o acesso aos recursos marcados, use a condição ResourceTag/key-name em uma política de usuário do IAM.

Para obter mais informações, consulte Controle do acesso aos recursos da AWS usando tags de recursos no Guia do usuário do IAM.

Proteger dados

Use as seguintes ferramentas para ajudar a proteger os dados em trânsito e em repouso, ambas as quais são cruciais para manter a integridade e a acessibilidade dos dados.

Object encryption

O Amazon S3 oferece várias opções de criptografia de objetos que protegem os dados em trânsito e em repouso. A criptografia no lado do servidor criptografa o objeto antes de salvá-lo em discos em seus datacenters e os descriptografa ao fazer download dos objetos. Contanto que você autentique sua solicitação e tenha permissões de acesso, não há diferença na forma de acesso aos objetos criptografados ou não criptografados. Ao configurar a criptografia no lado do servidor, você tem três opções mutuamente exclusivas:

  • Criptografia no lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3)

  • Criptografia no lado do servidor com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS)

  • Criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C)

Para obter mais informações, consulte Proteger os dados usando criptografia do lado do servidor.

Criptografia no lado do cliente é o ato de criptografar os dados antes de enviá-los para o Amazon S3. Para obter mais informações, consulte Proteger dados usando a criptografia do lado do cliente.

Métodos de assinatura

O Signature versão 4 é o processo para adicionar informações de autenticação às solicitações da AWS enviadas por HTTP. Por segurança, a maioria das solicitações para AWS deve ser assinada com uma chave de acesso, que consiste em um ID de chave de acesso e na chave de acesso secreta. Essas duas chaves são comumente conhecidas como suas credenciais de segurança.

Para obter mais informações, consulte Autenticação de solicitações (AWS Signature Version 4) e Processo de assinatura do Signature Version 4.

Registro em log e monitoramento

O monitoramento é uma parte importante da manutenção da confiabilidade, da disponibilidade e da performance das soluções do Amazon S3 para que você possa depurar mais facilmente uma falha de vários pontos, caso isso ocorra. O registro em log pode fornecer insights sobre quaisquer erros que os usuários estejam recebendo e quando e quais solicitações são feitas. A AWS fornece várias ferramentas para monitorar seus recursos do Amazon S3:

  • Amazon CloudWatch

  • AWS CloudTrail

  • Logs de acesso do Amazon S3

  • AWS Trusted Advisor

Para obter mais informações, consulte Registrar em log e monitorar no Amazon S3.

O Amazon S3 é integrado ao AWS CloudTrail, um serviço que fornece um registro das ações realizadas por um usuário, por um perfil ou por um AWS service (Serviço da AWS) no Amazon S3. Esse recurso pode ser emparelhado com o Amazon GuardDuty, que monitora ameaças contra seus recursos do Amazon S3 analisando eventos de gerenciamento do CloudTrail e eventos de dados do CloudTrail S3. Essas fontes de dados monitoram diferentes tipos de atividade. Por exemplo, os eventos de gerenciamento do CloudTrail relacionados ao Amazon S3 incluem operações que listam ou configuram projetos do S3. O GuardDuty analisa eventos de dados do S3 de todos os buckets do S3 e os monitora em busca de atividades maliciosas e suspeitas.

Para obter mais informações, consulte Proteção do Amazon S3 no Amazon GuardDuty no Guia do usuário do Amazon GuardDuty.