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:
- E se precisarmos de registros de dois anos atrás?
- E se uma investigação exigir dados históricos de 12 meses atrás?
- E se alguém pedir registros que não temos mais?
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:
- Qual é o propósito real desses registros?
- Com que frequência são acessados?
- Quando acessados, que valor comercial eles proporcionam?
- Existem requisitos de conformidade que determinam os períodos de retenção?
- Quem é o responsável pela decisão sobre a retenção de logs?
- Como podemos reduzir os custos de armazenamento sem sacrificar nada?
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:
- Investigações de segurança
- Resposta a incidentes
- Requisitos de conformidade e auditoria
- Análise operacional histórica
Estratégia de ciclo de vida:
- Dias 0–30: Padrão S3
- Dias 31–90: S3 Padrão-IA
- Dias 91–365: Recuperação flexível da geleira S3
- Excluir após 12 meses
QA
Retenção: 90 dias
Os registros de controle de qualidade (QA) dão suporte principalmente a:
- Validação de lançamento
- Análise de regressão
- Solução de problemas históricos
Estratégia de ciclo de vida:
- Dias 0–60: S3 Padrão-IA
- Excluir após 90 dias
Desenvolvimento
Retenção: 30 dias
Os registros de desenvolvimento são usados principalmente para:
- Depuração de aplicativos
- Solução de problemas
- Apoio ao desenvolvimento
Estratégia de ciclo de vida:
- Dias 0–30: S3 Padrão-IA
- Excluir após 30 dias
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:
- Com que frequência os registros são acessados?
- Existem toras de madeira mais valiosas do que outras?
- Como estão configurados nossos buckets S3 atualmente?
- Eles são raramente acessados após o primeiro mês?
- Com que rapidez eles devem ser recuperados?
- Os custos de recuperação são aceitáveis?
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:
- Configurações de ciclo de vida reutilizáveis
- Alterações controladas por versão
- Revisão por pares através de solicitações de pull
- Implantação consistente em diversos ambientes
- Risco reduzido de desvio de configuração
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:
- Ativar o versionamento de buckets S3
- Validar regras de ciclo de vida em um ambiente de não produção
- Confirme os cálculos de tempo de transição.
- Comportamento de expiração do objeto de teste
- Verificar fluxos de trabalho de recuperação
- Certifique-se de que os baldes corretos sejam direcionados para eles.
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:
- Crie um ambiente de desenvolvimento dedicado.
- Arquive os registros de desenvolvimento no bucket.
- Aplicar as políticas de ciclo de vida propostas.
- Validar transições de classe de armazenamento.
- Verificar o comportamento de expiração.
- Resultados do documento.
- Obtenha aprovação antes de prosseguir para outros módulos de desenvolvimento.
- 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:
- Equipes de DevOps
- Equipes de segurança
- Equipes de conformidade
- Liderança em infraestrutura
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:
- Custo
- Conformidade
- Segurança
- Visibilidade operacional
- Simplicidade
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
Gostou do que ouviu? Tem dúvidas sobre o que é certo para você? Adoraríamos conversar! Entre em contato conosco.