Práticas recomendadas de segurança para o Amazon S3 - Amazon Simple Storage Service

Práticas recomendadas de segurança para o Amazon S3

O Amazon S3 fornece uma série de recursos de segurança a serem considerados no desenvolvimento e na implementação das suas próprias políticas de segurança. As melhores práticas a seguir são diretrizes gerais e não representam uma solução completa de segurança. Como essas práticas recomendadas podem não ser adequadas ou suficientes para o seu ambiente, trate-as como recomendações úteis em vez de requisitos.

Práticas recomendadas de segurança para o Amazon S3

As seguintes práticas recomendadas do Amazon S3 podem ajudar a evitar incidentes de segurança.

Desativar listas de controle de acesso (ACLs)

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 ACLs. Por padrão, a Propriedade de objeto está definida com a configuração Imposto pelo proprietário do bucket e todas as ACLs estão desabilitadas. Quando as ACLs são desabilitadas, o proprietário do bucket possui todos os objetos do bucket e gerencia o acesso aos dados usando políticas de gerenciamento de acesso.

A maioria dos casos de uso no Amazon S3 não exige mais o uso de listas de controle de acesso (ACLs). Recomendamos desabilitar as ACLs, exceto em circunstâncias incomuns em que seja necessário controlar o acesso para cada objeto individualmente. Para desativar as ACLs e assumir a propriedade de cada objeto de seu bucket, aplique a configuração Imposto pelo proprietário do bucket para a Propriedade de objeto do S3. Ao desabilitar ACLs, você pode facilmente manter um bucket com objetos carregados por diferentes Contas da AWS.

Quando as ACLs são desabilitadas, o controle de acesso para os dados é baseado em políticas, como as seguintes:

  • Políticas de usuário do AWS Identity and Access Management (IAM)

  • Políticas de bucket do S3

  • Políticas de endpoint de nuvem privada virtual (VPC)

  • Políticas de controle de serviço (SCPs) do AWS Organizations

A desativação das ACLs simplifica o gerenciamento e a auditoria de permissões. Por padrão, as ACLs estão desabilitadas para novos buckets. Também é possível desabilitar ACLs para buckets existentes. Se você tiver um bucket existente que já contenha objetos, depois de desabilitar ACLs, as ACLs de objeto e bucket não farão mais parte do processo de avaliação de acesso. Em vez disso, o acesso é concedido ou negado com base nas políticas.

Antes de desabilitar as ACLs, faça o seguinte:

  • Revise sua política de bucket para garantir que ela abranja todas as maneiras pelas quais você pretende conceder acesso ao bucket fora da conta.

  • Redefina a ACL do bucket para o padrão (controle total para o proprietário do bucket).

Ao desabilitar as ACLs, os seguintes comportamentos ocorrem:

  • O bucket aceita somente solicitações PUT que não especificam uma ACL ou solicitações PUT com ACLs de controle total do proprietário do bucket. Essas ACLs incluem a ACL predefinida bucket-owner-full-control ou formas equivalentes dessa ACL que são expressas em XML.

  • Aplicações existentes compatíveis com ACLs de controle total do proprietário do bucket não são afetadas.

  • Solicitações PUT que contêm outras ACLs (por exemplo, concessões personalizadas para determinadas Contas da AWS) falham e retornam um código de status de HTTP de 400 (Bad Request) com o código de erro AccessControlListNotSupported.

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

Garantir que seus buckets do Amazon S3 utilizem as políticas corretas e não sejam acessados publicamente

A não ser que seja absolutamente necessário que alguém na internet possa ler ou gravar no seu bucket do S3, ele não deve ser público. Veja abaixo algumas etapas que você pode seguir para bloquear o acesso público:

  • Use o Bloqueio de Acesso Público do S3. Com o Bloqueio de Acesso Público do S3, é possível configurar facilmente os controles centralizados impostos para limitar o acesso público aos recursos do Amazon S3. Esses controles centralizados são aplicados independentemente de como os recursos são criados. Para ter mais informações, consulte Bloquear o acesso público ao armazenamento do Amazon S3.

  • Identifique as políticas de bucket do Amazon S3 que permitam uma identidade curinga, como "Principal": "*" (que efetivamente significa “qualquer pessoa”). Procure também políticas que permitem uma ação curinga "*" (que efetivamente permite que o usuário realize qualquer ação no bucket do Amazon S3).

  • Da mesma forma, procure as listas de controle de acesso (ACLs) do bucket do Amazon S3 que fornecem acesso de leitura, gravação, ou total a “Todos” ou a “Qualquer usuário autenticado da AWS”.

  • Use a operação de API ListBuckets para verificar todos os buckets do Amazon S3. Depois, use GetBucketAcl, GetBucketWebsite e GetBucketPolicy para determinar se cada bucket tem controles de acesso de conformidade e uma configuração de conformidade.

  • Use o AWS Trusted Advisor para inspecionar sua implementação do Amazon S3.

  • Considere a implementação de controles contínuos de detecção usando o Regras do AWS Config gerenciado s3-bucket-public-read-prohibited e s3-bucket-public-write-prohibited.

Para ter mais informações, consulte Gerenciamento de identidade e acesso para o Amazon S3.

Identificar possíveis ameaças aos buckets do Amazon S3 usando o Amazon GuardDuty

O Amazon GuardDuty é um serviço de detecção de ameaças que identifica possíveis ameaças a contas, contêineres, workloads e dados no ambiente da AWS. Usando modelos de machine learning (ML) e recursos de detecção de anomalias e ameaças, o Amazon GuardDuty monitora continuamente diferentes fontes de dados para identificar e priorizar possíveis riscos de segurança e atividades mal-intencionadas no seu ambiente. Ao habilitar o GuardDuty, ele oferece a detecção de ameaças para fontes de dados fundamentais, incluindo eventos de gerenciamento do AWS CloudTrail, logs de fluxo da VPC e logs de DNS. Para estender a detecção de ameaças aos eventos do plano de dados em buckets do S3, você pode habilitar o recurso Proteção do S3 no GuardDuty. Esse recurso detecta ameaças como exfiltração de dados e acesso suspeito a buckets S3 por meio de nós Tor. O GuardDuty também estabelece um padrão normal de referência no ambiente e, quando identifica um comportamento possivelmente anômalo, fornece informações contextuais para ajudar a corrigir o bucket do S3 ou as credenciais da AWS possivelmente comprometidos. Consulte mais informações em GuardDuty.

Implementar o acesso de privilégio mínimo

Ao conceder permissões, você decide quem receberá quais permissões para quais recursos do Amazon S3. Você habilita ações específicas que quer permitir nesses recursos. Portanto, recomendamos conceder apenas as permissões necessárias para executar uma tarefa. A implementação do acesso de privilégio mínimo é fundamental para reduzir o risco de segurança e o impacto que pode resultar de erros ou usuários mal-intencionados.

As ferramentas a seguir estão disponíveis para implementar o privilégio de acesso mínimo:

Para obter orientação sobre o que considerar ao escolher um ou mais mecanismos precedentes, consulte Gerenciamento de identidade e acesso para o Amazon S3.

Usar perfis do IAM para aplicações e Serviços da AWS que exigem acesso ao Amazon S3

Para que aplicações em execução no Amazon EC2 ou outros Serviços da AWS acessem recursos do Amazon S3, eles devem incluir credenciais válidas da AWS em suas solicitações de API da AWS. Recomendamos não armazenar credenciais da AWS diretamente na aplicação ou na instância do Amazon EC2. Essas são credenciais de longo prazo que não são automaticamente alternadas e podem ter um impacto comercial significativo se forem comprometidas.

Em vez disso, use um perfil do IAM para gerenciar credenciais temporárias para aplicações ou serviços que precisam de acesso ao Amazon S3. Quando você usa um perfil, não é necessário distribuir credenciais de longo prazo (como um nome de usuário e uma senha ou chaves de acesso) para uma instância do Amazon EC2 ou um AWS service (Serviço da AWS) como o AWS Lambda. Em vez disso, a função fornece permissões temporárias que os aplicativos podem usar ao fazer chamadas para outros recursos da AWS.

Para obter mais informações, consulte os seguintes tópicos no Manual do usuário do IAM:

Considerar a criptografia de dados em repouso

Você tem as seguintes opções de proteção de dados em repouso no Amazon S3:

  • Criptografia do lado do servidor: todos os buckets do Amazon S3 têm criptografia configurada por padrão e todos os novos objetos que são carregados em um bucket do S3 são automaticamente criptografados em repouso. A criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3) é a configuração de criptografia padrão para todos os buckets no Amazon S3. Para usar um tipo diferente de criptografia, você pode especificar a criptografia do lado do servidor a ser usada nas solicitações PUT do S3 ou definir a configuração de criptografia padrão no bucket de destino.

    O Amazon S3 também fornece as seguintes opções de criptografia do lado do servidor:

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

    • Criptografia de camada dupla do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (DSSE-KMS)

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

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

  • Criptografia do lado do cliente: criptografe dados do lado do cliente e carregue os dados criptografados no Amazon S3. Nesse caso, você gerencia o processo de criptografia, as chaves de criptografia e as ferramentas relacionadas. Assim como na criptografia no lado do servidor, a criptografia no lado do cliente pode ajudar a reduzir o risco criptografando os dados com uma chave armazenada em um mecanismo diferente do mecanismo que armazena os próprios dados.

    O Amazon S3 fornece muitas opções de criptografia no lado do cliente. Para obter mais informações, consulte Proteger dados usando a criptografia do lado do cliente.

Aplicar a criptografia de dados em trânsito

É possível usar HTTPS (TLS) para ajudar a evitar que invasores espionem ou manipulem tráfego de rede usando ataques person-in-the-middle (intermediários) ou similares. Recomendamos permitir apenas conexões criptografadas por HTTPS (TLS) usando a condição aws:SecureTransport nas políticas de bucket do Amazon S3.

Importante

Recomendamos que sua aplicação não fixe certificados TLS do Amazon S3, pois a AWS não permite a fixação de certificados publicamente confiáveis. O S3 renova automaticamente os certificados, o que pode ocorrer a qualquer momento antes da expiração do certificado. Renovar um certificado gera um novo par de chaves pública-privada. Se você fixou um certificado do S3 que foi renovado recentemente com uma nova chave pública, não poderá se conectar ao S3 enquanto a aplicação não usar o novo certificado.

Considere também implementar controles de detecção contínuos usando a regra gerenciada s3-bucket-ssl-requests-only de AWS Config.

Considerar o uso do Bloqueio de objetos do S3

Com o Bloqueio de objetos do S3, é possível armazenar objetos usando um modelo “gravação única e várias leituras” (WORM). O bloqueio de objetos do S3 pode ajudar a evitar a exclusão acidental ou inadequada de dados. Por exemplo, você pode usar o Bloqueio de objetos do S3 para ajudar a proteger os logs do AWS CloudTrail.

Para ter mais informações, consulte Usar o bloqueio de objetos do S3.

Habilitar o versionamento do S3

O versionamento do S3 é um meio de manter diversas variantes de um objeto no mesmo bucket. O versionamento pode ser usado para preservar, recuperar e restaurar todas as versões de cada objeto armazenado no bucket do . Com o versionamento, você pode se recuperar, facilmente, de ações não intencionais do usuário e de falhas de aplicativo.

Considere também implementar controles de detecção contínuos usando a regra gerenciada s3-bucket-versioning-enabled de AWS Config.

Para ter mais informações, consulte Usando o versionamento em buckets do S3.

Considerar o uso da Replicação do S3 Entre Regiões Diferentes

Embora o Amazon S3 armazene seus dados em diversas zonas de disponibilidade geograficamente distantes por padrão, requisitos de conformidade podem ditar que você armazene os dados em distâncias ainda maiores. Com a Replicação do S3 Entre Regiões Diferentes (CRR), é possível replicar dados entre Regiões da AWS distantes para ajudar a cumprir esses requisitos. A CRR permite a cópia assíncrona automática de objetos em buckets, em diferentes Regiões da AWS. Para ter mais informações, consulte Replicação de objetos.

nota

A CRR requer que tanto o bucket de origem quanto o de destino do S3 tenham o versionamento habilitado.

Considere também implementar controles de detecção contínuos usando a regra gerenciada s3-bucket-replication-enabled de AWS Config.

Considerar o uso dos endpoints da VPC para acesso ao Amazon S3

Um endpoint da Virtual Private Cloud (VPC) para Amazon S3 é uma entidade lógica dentro de uma VPC que permite conectividade apenas com o Amazon S3. Os endpoints da VPC podem ajudar a impedir que o tráfego atravesse a internet aberta.

Os VPC endpoints para Amazon S3 fornecem várias maneiras de controlar o acesso aos dados do Amazon S3:

  • É possível controlar as solicitações, os usuários ou os grupos permitidos por um endpoint da VPC específico usando políticas de bucket do S3.

  • Você pode controlar quais VPCs ou VPC endpoints têm acesso a seus buckets do S3 usando as políticas de bucket do S3.

  • Você pode ajudar a evitar a exfiltração de dados usando uma VPC que não tenha um internet gateway.

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

Use serviços de segurança gerenciados da AWS para monitorar a segurança dos dados

Vários serviços gerenciados de segurança da AWS podem ajudar a identificar, avaliar e monitorar os riscos de segurança e conformidade dos dados do Amazon S3. Esses serviços também podem ajudar você a proteger seus dados contra esses riscos. Esses serviços incluem recursos automatizados de detecção, monitoramento e proteção que são projetados para escalar desde recursos do Amazon S3 para uma única Conta da AWS até recursos para organizações que abrangem milhares de contas.

Para ter mais informações, consulte Monitorar a segurança dos dados com serviços de segurança gerenciados da AWS.

Práticas recomendadas de auditoria e monitoramento do Amazon S3

As práticas recomendadas a seguir para o Amazon S3 podem ajudar a detectar pontos fracos e incidentes potenciais de segurança.

Identificar e auditar todos os buckets do Amazon S3

A identificação de seus ativos de TI é um aspecto essencial de governança e segurança. É necessário ter visibilidade de seus recursos do Amazon S3 para avaliar sua postura de segurança e agir em possíveis áreas de fraqueza. Para auditar seus recursos, recomendamos fazer o seguinte:

  • Use o Editor de tags para identificar e marcar recursos sensíveis quanto a segurança ou auditoria; depois, use essas tags quando precisar procurar esses recursos. Para obter mais informações, consulte Pesquisa de recursos para marcar no Guia do usuário de recursos da AWS.

  • Use o S3 Inventory para auditar e gerar relatórios sobre o status da replicação e criptografia de seus objetos para necessidades empresariais, regulatórias e de conformidade. Para ter mais informações, consulte Inventário do Amazon S3.

  • Crie grupos de recursos para seus recursos do Amazon S3. Para obter mais informações, consulte O que são grupos de atributos? no Guia do usuário do AWS Resource Groups.

Implementar o monitoramento usando ferramentas de monitoramento da AWS

O monitoramento é uma parte importante para manter a confiabilidade, segurança, disponibilidade e performance do Amazon S3 e suas soluções da AWS. A AWS fornece várias ferramentas e serviços para ajudar a monitorar o Amazon S3 e outros Serviços da AWS. Por exemplo, é possível monitorar métricas do Amazon CloudWatch para o Amazon S3, particularmente as métricas PutRequests, GetRequests, 4xxErrors e DeleteRequests. Para obter mais informações, consulte Monitoramento de métricas com o Amazon CloudWatch e Monitorar o Amazon S3.

Para obter um segundo exemplo, consulte, Exemplo: atividade do bucket do Amazon S3. Este exemplo descreve como criar um alarme do CloudWatch que é ativado quando uma chamada de API do Amazon S3 é feita para PUT ou DELETE uma política do bucket, um ciclo de vida do bucket ou uma configuração de replicação do bucket ou para PUT uma ACL do bucket.

Habilitar o registro em log de acesso ao servidor do Amazon S3

O registro em log de acesso ao servidor fornece detalhes sobre as solicitações que são feitas a um bucket. Os logs de acesso ao servidor podem ajudar na auditoria de segurança e acesso, a saber mais sobre a base de clientes e entender sua fatura do Amazon S3. Para obter informações sobre como habilitar o registro em log de acesso ao servidor, consulte Registrar em log as solicitações com registro em log de acesso ao servidor.

Considere também implementar controles de detecção contínuos usando a regra gerenciada s3-bucket-logging-enabled.

Usar o AWS CloudTrail

O AWS CloudTrail fornece um registro das ações executadas por um usuário, uma função ou um AWS service (Serviço da AWS) no Amazon S3. É possível usar as informações coletadas pelo CloudTrail para determinar o seguinte:

  • A solicitação feita ao Amazon S3

  • O endereço IP do qual a solicitação foi feita.

  • Quem fez a solicitação.

  • Quando a solicitação foi feita

  • Detalhes adicionais sobre a solicitação

Por exemplo, é possível identificar entradas do CloudTrail para ações PUT que afetam o acesso a dados, em particular PutBucketAcl, PutObjectAcl, PutBucketPolicy e PutBucketWebsite.

Quando você configura sua Conta da AWS, o CloudTrail é habilitado por padrão. Você pode visualizar eventos recentes no console do CloudTrail. Para criar um registro contínuo de atividades e eventos para os buckets do Amazon S3, você pode criar uma trilha no console do CloudTrail. Para obter mais informações, consulte Registrar eventos de dados, no Guia do usuário do AWS CloudTrail.

Ao criar uma trilha, você pode configurar o CloudTrail para registrar em log eventos de dados. Eventos de dados são registros de operações de recurso executadas no recurso ou dentro de um recurso. No Amazon S3, os eventos de dados registram a atividade da API no nível do objeto para buckets individuais. O CloudTrail é compatível com um subconjunto de operações de API no nível do objeto do Amazon S3 como GetObject, DeleteObject e PutObject. Para obter mais informações sobre como o CloudTrail funciona com o Amazon S3, consulte Registrar chamadas de API do Amazon S3 em log usando AWS CloudTrail. No console do Amazon S3, você também pode configurar seus buckets do S3 para Habilitar o log de eventos do CloudTrail para buckets e objetos do S3.

O AWS Config fornece uma regra gerenciada (cloudtrail-s3-dataevents-enabled) que você pode usar para confirmar que pelo menos uma trilha do CloudTrail está registrando eventos de dados para seus buckets do S3. Para obter mais informações, consulte cloudtrail-s3-dataevents-enabled no Guia do desenvolvedor do AWS Config.

Habilitar AWS Config

Muitas das práticas recomendadas listadas neste tópico sugerem criar regras do AWS Config. O AWS Config ajuda a avaliar, fazer auditoria e analisar as configurações de seus recursos da AWS. O AWS Config monitora as configurações de recurso, para que seja possível avaliar as configurações gravadas com relação às configurações seguras desejadas. Com o AWS Config, você pode fazer o seguinte:

  • Revisar as alterações nas configurações e nas relações entre recursos da AWS

  • Investigar históricos detalhados de configurações de recursos

  • Determinar sua conformidade geral com relação às configurações especificadas nas diretrizes internas.

O uso do AWS Config pode ajudar a simplificar a auditoria de conformidade, a análise de segurança, o gerenciamento de alterações e a solução de problemas operacionais. Para obter mais informações, consulte Configuração do AWS Config com o console no Guia do desenvolvedor do AWS Config. Ao especificar os tipos de recurso que devem ser registrados, inclua os recursos do Amazon S3.

Importante

As regras gerenciadas do AWS Config só oferecem suporte a buckets de uso geral ao avaliar os recursos do Amazon S3. O AWS Config não registra alterações de configuração em buckets de diretório. Para obter mais informações, consulte AWS Config Managed Rules e List of AWS Config Managed Rules no Guia do desenvolvedor do AWS Config.

Para obter um exemplo de como usar o AWS Config, consulte Como usar o AWS Config para monitorar e responder a buckets do Amazon S3 que permitem acesso público no Blog de segurança da AWS.

Descobrir dados sigilosos usando o Amazon Macie

O Amazon Macie é um serviço de segurança que descobre dados sigilosos usando machine learning e correspondência entre padrões. O Macie fornece visibilidade sobre os riscos de segurança de dados e permite a proteção automatizada contra esses riscos. Com o Macie, é possível automatizar a descoberta e a emissão de relatórios de dados sigilosos em seu patrimônio de dados do Amazon S3 para compreender melhor os dados armazenados pela organização no S3.

Para detectar dados sigilosos com o Macie, é possível usar técnicas e critérios incorporados projetados para detectar uma lista grande e crescente de tipos de dados sigilosos para muitos países e regiões. Esses tipos de dados sigilosos incluem vários tipos de informações de identificação pessoal (PII), dados financeiros e dados de credenciais. Também é possível usar critérios personalizados definidos por você: expressões regulares que definem padrões de texto com os quais deve haver correspondência e, opcionalmente, sequências de caracteres e regras de proximidade que refinam os resultados.

Se o Macie detectar dados sigilosos em um objeto do S3, ele gerará uma descoberta de segurança para notificar você. Essa descoberta fornece informações sobre o objeto afetado, os tipos e o número de ocorrências dos dados sigilosos encontrados pelo Macie e detalhes adicionais para ajudar você a investigar o bucket e o objeto do S3 afetados. Para obter mais informações, consulte o Guia do usuário da Amazon Macie.

Uso da Lente de Armazenamento do S3

A Lente de Armazenamento do S3 é um recurso de análise de armazenamento em nuvem que você pode usar para obter visibilidade em toda a organização sobre o uso e a atividade do armazenamento de objetos. A Lente de Armazenamento do S3 também analisa as métricas para fornecer recomendações contextuais que você pode usar para otimizar os custos de armazenamento e aplicar as práticas recomendadas de proteção de dados.

Com a Lente de Armazenamento do S3, é possível usar métricas para gerar insights resumidos, como descobrir quanto armazenamento você tem em toda a organização ou quais são os buckets e prefixos que mais crescem. Você também pode usar as métricas da Lente de Armazenamento do S3 para identificar oportunidades de otimização de custos, implementar práticas recomendadas de proteção de dados e gerenciamento de acesso, e melhorar a performance das workloads de aplicações.

Por exemplo, você pode identificar buckets que não têm regras de Ciclo de Vida do S3 para anular multipart uploads que estão incompletos há mais de 7 dias. Você também pode identificar buckets que não estão seguindo as práticas recomendadas de proteção de dados, como usar a Replicação do S3 ou o Versionamento do S3. Para obter mais informações, consulte Noções básicas do Amazon S3 Storage Lens.

Monitorar as recomendações de segurança da AWS

Recomendamos verificar regularmente as recomendações de segurança publicadas no Trusted Advisor para sua Conta da AWS. Especificamente, procure avisos sobre buckets do Amazon S3 com “permissões de acesso em aberto”. É possível fazer isso de maneira programática usando describe-trusted-advisor-checks.

Além disso, monitore ativamente o endereço de e-mail registrado como principal para cada uma de suas Contas da AWS. A AWS usa esse endereço de e-mail para entrar em contato sobre problemas de segurança emergentes que poderiam afetar você.

Problemas operacionais da AWS com grande impacto são publicados no AWS Health Dashboard Service Health. Eles também são publicados em contas individuais por meio do AWS Health Dashboard. Para obter mais informações, consulte a documentação do AWS Health.