O blog da AWS

Mantendo a imutabilidade de objetos ao estender automaticamente os períodos de retenção do Amazon S3 Object Lock

Esta postagem foi escrita por Ed Gummett, Arquiteto de Soluções Especialista Sênior e Emmanuel Olotu, Arquiteto de Soluções Especialista em Storage. Adaptada para o Português por Rogerio Xavier, Arquiteto de Soluções Sênior para parceiros AWS.

Proteger contra a eliminação acidental ou maliciosa é um elemento-chave da proteção de dados. A imutabilidade protege os dados no local, impedindo alterações ou eliminações não intencionais. No entanto, por vezes, não está claro por quanto tempo os dados devem ser tornados imutáveis. Os usuários nesta situação procuram uma solução que mantenha a imutabilidade a curto prazo, indefinidamente. Querem garantir que os seus dados estão sempre protegidos, sem qualquer compromisso a longo prazo.

O Amazon S3 Object Lock é o padrão da indústria para imutabilidade de armazenamento de objetos para proteção contra ransomware, e empresas em todo o mundo o utilizam para manter os seus dados seguros. Quando um objeto no Amazon S3 é bloqueado no modo de conformidade, os usuários não podem alterar o modo de retenção ou encurtar o período de retenção. O modo de conformidade bloqueia a eliminação permanente de objetos durante um período de retenção definido pelo cliente. Um usuário pode definir o modo de conformidade por um ano para certos objetos, mas determinar que esses objetos ainda são valiosos à medida que se aproximam até a sua data de Retenção. Muitas vezes, os usuários querem estender as definições de S3 Object Lock das versões atuais dos objetos, permitindo que as versões não atuais expirem para que estejam disponíveis para eliminação permanente.

Nesse post, apresentamos uma solução baseada no AWS CloudFormation que estende automaticamente os períodos de retenção do S3 Object Lock, em escala. Ao estender continuamente os períodos de retenção de todas as versões atuais dos objetos armazenados em um bucket do Amazon S3, os objetos não podem ser permanentemente eliminados até que se tornem não atuais e, em seguida, um período mínimo de retenção definido tenha passado.

Visão geral da solução

A solução é executada semanalmente e garante que todas as versões atuais dos objetos no bucket protegido (ou prefixo especificado) sejam imutáveis por pelo menos o ‘período de retenção mínimo’ definido

Para implementar essa solução, você precisa de uma conta da AWS e de um bucket de uso geral da Amazon S3 com o S3 Object Lock habilitado (conhecido como ‘bucket protegido’). O S3 Object Lock requer que o versionamento S3 esteja habilitado no seu bucket. Quando um bucket S3 tem o versionamento S3 habilitado, solicitações simples de exclusão (que colocam um marcador de exclusão) ou gravações no mesmo nome de chave (nome do objeto) fazem com que o objeto original se torne uma versão não atual. Você pode usar o S3 Lifecycle para definir regras específicas sobre sua contagem de versões ou vida útil da versão não atual.

A implantação desta solução aplica o modo de conformidade a todas as versões atuais dos objetos em escopo, mesmo que atualmente não tenham nenhum bloqueio ou tenham o modo de governança aplicado. Com o modo de conformidade, o S3 Object Lock bloqueia a exclusão permanente de objetos durante o período de retenção definido. Considere as implicações disso e certifique-se de que a solução atenda às suas necessidades antes de implementá-la em um ambiente de produção.

Como funciona

Diagram showing solution flow with S3 Inventory labelled 1, Amazon Athena labelled 2, Manifest CSV 3, and S3 Batch Operations 4

Diagrama mostrando o fluxo da solução com inventário do S3(1), Amazon Athena (2), Arquivo de manifesto CSV (3) e Operações em Lote do S3 (4)

  1. A criação de relatórios semanais de inventário do Amazon S3 inicia o Athena (por meio de Notificação de Eventos S3 e AWS Lambda).
  2. O Amazon Athena executa uma consulta para obter os objetos que precisam ter sua retenção estendida para que não fiquem abaixo do período mínimo de retenção na próxima semana (daí o ‘+7’).
  3. A consulta do Athena gera um manifesto CSV de todas as versões de objeto que exigem extensão de Bloqueio de Objeto S3. Isso aciona um trabalho Amazon S3 Batch Operations (novamente por meio de Notificação de Eventos S3 e Lambda).
  4. O S3 Batch Operations realiza uma operação PutObjectRetention em cada objeto no manifesto, definindo sua data de retenção como hoje + período mínimo de retenção + frequência de extensão.

Implantação da Solução

Faça o download deste CloudFormation template. Crie uma stack do CloudFormation usando este modelo na mesma Região da AWS que o seu bucket S3. Os parâmetros da stack, mostrados na figura a seguir, incluem:

  • O nome do seu bucket: (“my-protected-bucket”)
  • Prefixo (opcional): (“important-objects/”)
  • Período mínimo de retenção de Bloqueio de Objeto: (90)
  • Frequência de extensão: (28)
Screenshot of CloudFormation template parameters - bucket, prefix, minimum retention and extension frequency

Exemplo dos parâmetros do CloudFormation – bucket, prefixo, retenção mínima e frequência de extensão

Durante a implantação, a stack usa uma função AWS Lambda para verificar se o bucket protegido tem o S3 Object Lock ativado. Se não, a implantação falha. Então, cria um bucket S3 com nome exclusivo, um espaço de trabalho da Amazon Athena e todas as notificações de eventos S3, funções Lambda e funções do AWS Identity and Access Management (IAM) necessárias. Visualize a guia Recursos da stack CloudFormation implantada para ver todos os recursos implantados.

A stack é implantada em cerca de cinco minutos e opera automaticamente assim que o primeiro Inventário S3 for entregue. Pode levar até 48 horas para entregar o primeiro Inventário. Esta solução não usa nenhuma configuração de Inventário S3 existente, pois precisa de um formato e local de saída específicos. É adicional e não interfere com quaisquer outras configurações de Inventário S3.

Você pode ter diferentes conjuntos de dados, com diferentes requisitos de conformidade, em prefixos dentro do mesmo bucket. Nesse caso, basta implantar a solução várias vezes – uma vez para cada prefixo.

Como é executada semanalmente, esta solução não se aplica imediatamente aos objetos recém-criados. Se esse for um requisito, configure as configurações de retenção padrão do S3 Object Lock no bucket no modo de conformidade com uma duração de pelo menos uma semana. Esta solução estende a Reter até a data de cada objeto em escopo, garantindo que os objetos estejam sempre protegidos. Esteja ciente de que configurações alternativas de retenção do S3 Object Lock podem ser aplicadas a novos objetos à medida que são gravados, a menos que negadas por uma política de bucket, como neste exemplo.

Impondo um período de retenção de dados

Para excluir automaticamente e permanentemente as versões não atuais dos objetos após o período de retenção necessário, configure uma regra de S3 Lifecycle NoncurrentVersionExpiration no bucket protegido. Isso só atua sobre os objetos após o número especificado de dias ter passado depois que a versão do objeto se torna não atual – seja por uma nova versão do objeto ser criada ou por um marcador de exclusão ser colocado.

As regras de expiração S3 Lifecycle não podem excluir objetos que estejam bloqueados até que a data de retenção tenha passado. A configuração desta regra exclui permanentemente as versões não atuais dos objetos apenas após os dias especificados terem passado e após o período de retenção deles expirar. Isso garante que os dados sejam retidos por um período precisamente definido após serem excluídos ou sobrescritos.

Monitorando a solução

Você pode encontrar o status dos trabalhos de Operações em Lote do S3 acionados pela solução no console de Operações em Lote do S3.

Você pode filtrar a descrição do trabalho, pois inclui o nome do bucket protegido. Além disso, os trabalhos são marcados para que você possa identificá-los facilmente:

  • Chave: job-created-by
  • Valor: Auto Extend Object Lock Solution

Haverá uma tarefa falha em cada trabalho de Operações em Lote do S3. Isso porque o arquivo CSV gerado a partir do Athena contém uma linha de cabeçalho e as Operações em Lote do S3 não suportam linhas de cabeçalho nos manifestos. Você pode ignorar essa tarefa falha. Os relatórios de Inventário S3, saídas do Athena e relatórios de Operações em Lote do S3 são armazenados no bucket da solução. Estes são seus registros de conformidade com o período mínimo de retenção definido. Para minimizar os encargos de armazenamento, você pode desejar usar regras de ciclo de vida para expirar esses objetos após um período especificado e/ou fazer a transição de objetos maiores para uma das classes de armazenamento do S3 Glacier (se estiverem sendo retidos por pelo menos 90 dias).

Modo ‘somente relatório’

Para executar a solução até preparar o trabalho de Operações em Lote do S3, sem iniciar automaticamente o trabalho para aplicar as retenções do S3 Object Lock, execute as seguintes etapas imediatamente após implantar a stack CloudFormation:

  1. Abra a função Lambda <nome da stack>-ExtendObjLockS3BatchJobLambda-<UID>. Se precisar identificar a UID do Lambda, vá para o console do CloudFormation, selecione a stack e escolha Recursos.
  2. Na guia Código, localize a linha ‘ConfirmationRequired’: False e substitua False por True.
  3. Implemente o código atualizado.

Depois que o primeiro inventário for gerado, a solução preparará o trabalho de Operações em Lote do S3. Devido à alteração anterior, o trabalho permanecerá em estado suspenso até ser confirmado manualmente. Os trabalhos em estado suspenso falham após 30 dias. Revise a configuração do trabalho e o manifesto para validar se as operações são as pretendidas. Você pode optar por executar o trabalho manualmente no console do Amazon S3 ou reverter a alteração anterior no Lambda e aguardar até que o próximo Inventário S3 seja gerado.

 Operando em larga escala

Nos testes, descobrimos que estender todos os 1 bilhão de objetos de versão atual em um prefixo foi concluído incrivelmente rápido:

  • Processamento de inventário do Athena (e geração de um arquivo .csv de 66 GB): 14 minutos.
  • Operações em Lote do S3
    • Fase ‘Preparando’: Aproximadamente oito horas.
    • Fase ‘Ativa’ (aplicando S3 Object Locks): Aproximadamente 24 horas.

Isso mostra que a solução escalona até mesmo para os maiores buckets do S3. Observe que, como o tempo limite de consulta DML padrão do Athena é de 30 minutos, se seu bucket tiver mais de aproximadamente 2 bilhões de objetos, você poderá precisar tomar uma ou ambas as seguintes ações:

  1. Solicitar um aumento no tempo limite da consulta DML nas cotas de serviço do Athena.
  2. Implantar o modelo do CloudFormation várias vezes, especificando diferentes prefixos.

Alterando a configuração após a implantação

Você pode alterar o prefixo, o período mínimo de retenção e a frequência de extensão após a implantação da solução, atualizando a stack do CloudFormation. Não altere o bucket S3 protegido, pois isso não é suportado.

Cobranças

As operações PUT para extensões do S3 Object Lock são cobradas como uma solicitação PUT da classe de armazenamento S3 Standard, independentemente da classe de armazenamento em que o objeto está. As únicas outras cobranças notáveis para a solução vêm das Operações em Lote do S3.

Como exemplo, se implantarmos a solução em um bucket ou prefixo contendo 1 milhão de objetos, com uma frequência de extensão de 28 dias, o custo total estimado seria de US$ 7,63 por mês com base nos preços da Região us-east-1.

A frequência de extensão determina o custo da solução. Por exemplo, se seus requisitos suportarem uma frequência de extensão de 280 dias, cada objeto poderá ter seu bloqueio estendido a cada 280 dias, em vez de a cada 28 dias. As cobranças pelas solicitações PUT e os custos “por objeto” para Operações em Lote S3 seriam reduzidos 10 vezes. Ajuste a frequência de extensão para atender às suas necessidades (usando um múltiplo de sete, pois a solução é executada semanalmente). O período mínimo de retenção não afeta o custo da solução.

Exemplo de implantação 1: Período mínimo de retenção de 90 dias

Você quer garantir que todas as versões atuais dos objetos sejam sempre imutáveis por pelo menos 90 dias no futuro. Você especifica um período mínimo de retenção de 90 dias e uma frequência de extensão de 28 dias.

Um objeto de exemplo tem um período de retenção restante de 91 dias quando um inventário semanal é gerado. Se esse objeto não for estendido, na semana seguinte ele terá um período de retenção restante de apenas 84 dias, o que seria inferior ao período mínimo de retenção especificado. Portanto, a solução estende o período de retenção do objeto para 118 (90+28) dias no futuro, e uma nova extensão não será necessária por mais 28 dias.

Exemplo de implantação 2: Mantendo a imutabilidade sem um período mínimo de retenção

Você não tem um requisito específico de retenção mínima e simplesmente deseja garantir que todas as versões atuais dos objetos permaneçam imutáveis. Você deseja minimizar os custos e está confortável com os objetos tendo datas de retenção de até um ano no futuro. Você especifica um período mínimo de retenção de 1 (um) dia e uma frequência de extensão de 364 dias.

Um objeto de exemplo tem um período de retenção restante de cinco dias quando um inventário semanal é gerado. Se este objeto não for estendido, na semana seguinte ele não será mais imutável. Portanto, a solução estende o período de retenção do objeto para 364 dias no futuro.

Limpando a solução

Como a solução é implantada usando o CloudFormation, você pode removê-la excluindo a stack do CloudFormation. A exclusão da stack do CloudFormation não afeta o período de retenção Object Lock S3 aplicado a qualquer objeto.

Você deve excluir o bucket S3 “solução” (criado para armazenar inventários, saída e relatórios do Athena) manualmente. Para identificar o bucket de solução, acesse o console do CloudFormation, selecione a stack, escolha Recursos, localize ExtendObjLockInventoryBucket e selecione o link para abrir uma nova guia exibindo o bucket de solução. Para esvaziar o bucket, você pode aplicar uma regra de ciclo de vida ou usar o botão Esvaziar bucket no console do S3. Assim que o bucket S3 estiver vazio, prossiga para excluí-lo.

Conclusão

A imutabilidade dos dados é um aspecto fundamental do planejamento de proteção de dados. Às vezes, não está claro por quanto tempo os dados devem ser tornados imutáveis, pois dados mais antigos podem ser tão valiosos quanto dados novos. Neste post, apresentamos uma solução para definir e manter a imutabilidade para versões atuais de objetos no Amazon S3, indefinidamente.

Garantir a imutabilidade contínua para dados existentes em seu bucket ou prefixo S3 pode ajudar a cumprir os requisitos de conformidade e evitar que os dados sejam permanentemente excluídos. Esta solução ajuda a garantir que os usuários não possam excluir permanentemente versões de objetos, manual ou através do Ciclo de Vida S3, até que uma nova versão do objeto seja gravada ou um marcador de exclusão seja colocado e, em seguida, seu período mínimo de retenção escolhido tenha passado.

Para começar, faça o download do modelo do CloudFormation. Se você precisar habilitar o Object Lock S3 para um bucket existente, isso agora é possível sem acionar o suporte da AWS. Para saber mais sobre o Object Lock S3, visite a documentação ou a página do produto. Na AWS, prosperamos com o feedback dos usuários e esperamos seus pensamentos e comentários.

Este blog foi traduzido para o Português, e o conteúdo original pode ser acessado aqui.

 

Sobre os Autores
Ed Gummett Ed Gummett é Arquiteto de Soluções Especialista Sênior na AWS, onde ajuda os usuários a aproveitar ao máximo as tecnologias de armazenamento e proteção de dados da AWS. Ele trabalhou em pré-vendas de infraestrutura de TI, arquitetura, consultoria e administração de sistemas por mais de 20 anos. Quando não estiver trabalhando ou fazendo DIY, você o encontrará na praia com sua família e cachorro, ou correndo de kart.
Emmanuel Olotu Emmanuel Olotu é Arquiteto de Soluções Especialista em Storage baseado na Cidade do Cabo. Ele tem muitos anos de experiência trabalhando com sistemas Windows, virtualização, tecnologias de nuvem, armazenamento e segurança de rede. Ele gosta de ajudar os usuários a resolver problemas e otimizar sua arquitetura e custos. Fora do trabalho, ele adora passar tempo com a família e assistir filmes de ficção científica.
 

Tradutor
Rogerio Xavier Rogerio Xavier é Arquiteto de Soluções Sênior para parceiros da AWS, atua ajudando parceiros na jornada de parceria com a AWS e a entregar a melhor solução aos clientes. Com mais de 15 anos de experiência em infraestrutura de TI, arquitetura e administração de sistemas. Nos ultimos 7 anos ele se dedicou em Redes, Storage (Block e Object), Sistemas Operacionais, Messaging, Migração de dados, Serverless, além de modernização de aplicações. Ele adora passar o tempo livre com a família e jogar video-game.
Revisor
Rogerio Xavier Ricardo Tasso é Arquiteto de Soluções para parceiros na AWS, atua ajudando na jornada de parceria com a AWS e a entregar a melhor solução aos clientes. Trabalha com Administração de Sistemas e Soluções de TI há mais de 15 anos, com experiência em redes, storage, Sistemas Operacionais, filas e messaging, com foco nos últimos 7 anos em DevOps, Serverless, Containers, Infra como Código, CI/CD, IA para DevOps, além de arquitetura e modernização de aplicações.