Gerenciando a retenção de logs na AWS: regras de ciclo de vida do S3 e melhores práticas do Terraform

Uma das maneiras mais fáceis para os custos da nuvem aumentarem sem serem percebidos é através da retenção de logs. Muitas organizações entendem a importância de coletar logs, mas poucas entendem como otimizar e usar os dados obtidos a partir deles, e menos ainda compreendem por quanto tempo esses logs devem ser mantidos. É importante entender com que frequência sua empresa acessa esses registros e se sua estratégia de armazenamento atual ainda está alinhada com as necessidades do negócio.

Ao trabalhar com um cliente para revisar nossa estratégia de registro de logs, descobrimos um padrão comum: os logs estavam sendo retidos por mais tempo do que o necessário, os custos de armazenamento continuavam a aumentar e não havia uma política de ciclo de vida padronizada em todos os ambientes.

Para solucionar isso, desenvolvemos uma política formal de retenção de logs com suporte do gerenciamento do ciclo de vida do Amazon S3 e da Infraestrutura como Código (IaC). O resultado foi uma abordagem mais consistente para o gerenciamento de logs, custos de armazenamento reduzidos e uma estratégia de retenção mais alinhada aos requisitos operacionais e de conformidade.

Comece com o propósito, não com as classes de armazenamento.

Um dos maiores erros que as organizações cometem é começar pela tecnologia em vez dos requisitos de negócios.

Muitas políticas de retenção são construídas em torno de cenários hipotéticos:

Embora essas perguntas sejam razoáveis, muitas vezes resultam na retenção de tudo por tempo indeterminado.

Em vez disso, comece com algumas perguntas simples:

Embora isso varie de empresa para empresa, em muitos casos, as equipes descobrem que os registros com mais de alguns meses raramente são acessados e oferecem pouco valor operacional. Eles estão lá para dar segurança, e antes que você perceba, você tem terabytes e mais terabytes de custos indesejados ocupando espaço e criando desordem.

O objetivo final deve ser reter os registros por tempo suficiente para dar suporte a investigações, resolução de problemas, conformidade e auditoria, evitando custos desnecessários de armazenamento.

Ambientes diferentes têm necessidades diferentes.

Nem todos os ambientes exigem o mesmo período de retenção.

Os registros de produção geralmente auxiliam em auditorias, resposta a incidentes e investigações de segurança. Os registros de desenvolvimento são normalmente usados para depuração de curto prazo e geralmente podem ser retidos por períodos muito mais curtos.

Nossa estratégia de retenção foi construída em torno de requisitos específicos do ambiente. Abaixo segue um exemplo de como isso pode ser feito.

Produção

Retenção: 12 meses

Os registros de produção exigem o maior período de retenção porque suportam:

Estratégia de ciclo de vida:

QA

Retenção: 90 dias

Os registros de controle de qualidade (QA) dão suporte principalmente a:

Estratégia de ciclo de vida:

Desenvolvimento

Retenção: 30 dias

Os registros de desenvolvimento são usados principalmente para:

Estratégia de ciclo de vida:

Ao adaptar a retenção a cada ambiente, evitamos aplicar requisitos de retenção dispendiosos em nível de produção onde não eram necessários.

Como escolher as classes de armazenamento S3 adequadas

O Amazon S3 oferece diversas classes de armazenamento, cada uma projetada para diferentes padrões de acesso.

A principal lição é que a seleção da classe de armazenamento deve ser orientada pelo uso real, e não por suposições.

Algumas questões a considerar:

Para o nosso caso de uso:

Padrão S3

Utilizado para registros de produção recém-criados, onde o acesso imediato é importante.

S3 Padrão-IA

Utilizado quando os registros ainda são acessados ocasionalmente, mas não exigem mais a urgência de padrões.

Recuperação flexível de geleiras S3

Utilizado para arquivamento a longo prazo em locais onde o acesso é raro, mas a recuperação permanece possível se necessário.

A AWS fornece uma descrição completa das classes de armazenamento S3 disponíveis e suas vantagens e desvantagens, que pode ser encontrada aqui:
https://aws.amazon.com/s3/storage-classes/

Infraestrutura como código facilita a governança

Uma política de retenção só é valiosa se for aplicada de forma consistente.

Em vez de configurar manualmente as regras de ciclo de vida em todos os ambientes, implementamos nossas políticas de ciclo de vida usando o Terraform.

Isso proporcionou diversos benefícios:

A Infraestrutura como Código transformou a gestão de retenção de dados, que antes exigia uma configuração única, em um processo operacional repetível.

Proteja-se contra erros

As políticas de ciclo de vida automatizam a exclusão e as transições de armazenamento. Isso os torna poderosos, mas também potencialmente perigosos.

Antes de ativar a expiração e as transições automáticas:

O controle de versões oferece uma camada adicional de proteção contra exclusões acidentais ou regras de ciclo de vida mal configuradas.

Testar antes da produção

Estabelecemos um processo de validação simples antes da implementação:

  1. Crie um ambiente de desenvolvimento dedicado.
  2. Arquive os registros de desenvolvimento no bucket.
  3. Aplicar as políticas de ciclo de vida propostas.
  4. Validar transições de classe de armazenamento.
  5. Verificar o comportamento de expiração.
  6. Resultados do documento.
  7. Obtenha aprovação antes de prosseguir para outros módulos de desenvolvimento.
  8. Promover para ambientes mais elevados

Essa abordagem nos permitiu identificar problemas de configuração precocemente, minimizando os riscos.

A governança importa

O armazenamento de logs não deve ser de responsabilidade de um único engenheiro.

Políticas de retenção bem-sucedidas exigem colaboração entre:

A definição clara de responsabilidades ajuda a garantir que os períodos de retenção permaneçam alinhados com os requisitos comerciais e regulamentares à medida que os sistemas evoluem.

Considerações finais

A política de retenção de logs mais eficaz não é necessariamente aquela que mantém os logs por mais tempo.

É aquele que equilibra:

As organizações frequentemente retêm dados devido a necessidades futuras hipotéticas, em vez de requisitos comerciais reais. Ao entender como os logs são usados, alinhar os períodos de retenção às necessidades específicas do ambiente, aproveitar as classes de armazenamento S3 apropriadas e as transições de armazenamento, e implementar políticas por meio de IaC (Infraestrutura como Código), as equipes podem reduzir significativamente os custos de armazenamento, mantendo a visibilidade de que realmente precisam.

Acima de tudo, lembre-se de que cada organização é diferente. A estratégia de ciclo de vida descrita aqui funcionou bem para o nosso caso, mas os períodos de retenção, as classes de armazenamento e os prazos de arquivamento devem sempre ser definidos pelas suas próprias necessidades operacionais e obrigações de conformidade.

Autor

Chase Hollander
Desenvolvedor AEM na Arbory Digital

Profissional certificado em metodologias ágeis, desenvolvedor e consultor com experiência em AEM.

Entre em contato com Chase no LinkedIn.

Gostou do que ouviu? Tem dúvidas sobre o que é certo para você? Adoraríamos conversar! Entre em contato conosco.

Blogs

category
Blog
tags
observability,logs,savings,compliance,productivity,devops,terraform,policy
number of rows
1