In this article
Como detectar e evitar o desvio de configuração
Etapas para detectar e evitar o desvio de configuração com sucesso
Como detectar o desvio de configuração em toda a organização
Independentemente de como sua organização gerencia a infraestrutura — de forma automatizada, manual, local, na nuvem ou combinando essas abordagens — pequenas mudanças diárias são inevitáveis. Seus sistemas foram criados para serem usados e modificados conforme as necessidades internas e externas, por isso mudam com o tempo.
Quando várias pessoas e equipes de engenharia interagem com essa infraestrutura de maneira improvisada e sem seguir os protocolos adequados, essas pequenas mudanças podem se acumular rapidamente e criar inconsistências entre a configuração atual do sistema e a configuração de referência. É assim que ocorre o desvio de configuração: mudanças implementadas de forma inadequada acabam causando problemas na infraestrutura ao longo do tempo.
O que é desvio de configuração?
O desvio de configuração ocorre quando as mudanças na infraestrutura de uma empresa não são documentadas ou realizadas corretamente, podendo comprometer sua integridade estrutural. As mudanças que causam esse desvio não são necessariamente ruins, mas, como afastam o sistema cada vez mais da configuração de referência, podem gerar problemas de segurança, conformidade ou desempenho se não forem corrigidas.
Embora o desvio de configuração possa ocorrer em qualquer tipo de infraestrutura, empresas que têm ambientes de infraestrutura como código (IaC) enfrentam desafios específicos para corrigir e evitar desvios de forma proativa. Alguns fatores são mitigados por padrão porque a IaC oferece recursos como controle de versão, que reduzem a probabilidade de uma mudança não documentada entrar em produção. Ainda assim, a rapidez do provisionamento automatizado na nuvem pode causar outros problemas. O desvio de configuração em ambientes de DevOps, CI/CD e outros ambientes automatizados de desenvolvimento pode se acumular rapidamente, sobretudo porque as mudanças acontecem em alta velocidade.
Em resumo, o desvio ocorre na IaC quando o estado atual da infraestrutura não corresponde à configuração codificada em IaC. Com isso, as pessoas de engenharia trabalham com uma versão desatualizada da infraestrutura, enquanto uma versão diferente está ativa no sistema.
Quais são as causas do desvio de configuração?
O desvio de configuração pode ocorrer devido a diversos tipos de mudança na estrutura do sistema. Estas são algumas das causas mais comuns:
Alterações manuais no sistema. Quando alguém cria ou modifica recursos manualmente, fora do sistema IaC estabelecido — como Terraform ou Cloudformation —, essas mudanças não são refletidas na configuração codificada.
Aplicativo autenticado. Isso significa que os microsserviços responsáveis por ações automatizadas, como ler um script ou gravar em um bucket, não estão funcionando como deveriam devido a algum bug. Esses erros de automação podem causar desvios.
Mudanças ocultas ou não percebidas na IaC. Mudanças desconhecidas deixam os ambientes de IaC fora de sincronia, criando uma lacuna entre aquilo com que a equipe de engenharia trabalha e o que realmente acontece no sistema em produção.
Correções e atualizações. Para lançar novas correções ou atualizações, as pessoas de engenharia precisam fazer diversas mudanças, grandes ou pequenas, no sistema. Cada uma delas pode causar desvios.
O que acontece quando o desvio não é gerenciado?
O desvio de configuração pode causar problemas sérios para as equipes, especialmente para aquelas que usam IaC. Quando o estado atual da infraestrutura não corresponde à configuração codificada em IaC, as pessoas de engenharia acabam trabalhando com uma versão desatualizada, enquanto uma versão diferente está ativa no sistema. Quanto maior a lacuna entre o que a equipe sabe sobre o sistema e o estado real dele, mais a postura de segurança, o desempenho e a conformidade do sistema se deterioram.
Riscos de segurança
Quando não é corrigido, o desvio pode causar sérios problemas de segurança e deixar seus sistemas expostos a invasores. Isso acontece porque mudanças improvisadas e não documentadas no sistema podem criar backdoors desconhecidos. Em muitos casos, o verdadeiro risco está em não saber que certas mudanças foram feitas no sistema, o que deixa vulnerabilidades sem correção. Por exemplo, a violação de dados da Twilio em 2020 foi causada pelo desvio de configuração de um bucket do S3. Uma pessoa da equipe de engenharia aplicou uma correção para um problema anterior, mas, durante o processo, deixou a configuração do bucket insegura. Como ninguém detectou o problema nem reverteu a configuração para o estado seguro original, o desvio passou despercebido por anos e acabou sendo explorado por invasores para obter dados pessoais de usuários.
Problemas de desempenho
Além de criar vulnerabilidades de segurança, o desvio de configuração também pode causar problemas de desempenho e indisponibilidade. Quando o estado atual da infraestrutura não corresponde ao código IaC, essa discrepância pode levar ao provisionamento excessivo de cargas de trabalho, além de recursos e processos sem otimização. Essas pequenas inconsistências podem se acumular e causar muitos problemas de desempenho.
Falhas de conformidade
A IaC deve funcionar como uma documentação atualizada do sistema. Quando o desvio de configuração compromete a precisão da IaC codificada, pequenas mudanças deixam de ser tratadas adequadamente pelas políticas de segurança. Imagine que alguém da equipe de engenharia abra uma porta sem refletir essa mudança na IaC. Mesmo que a mudança não ofereça riscos, ela faz com que o estado atual do sistema se afaste daquele definido na IaC e nas políticas de segurança correspondentes. Em uma auditoria, isso seria considerado uma falha de conformidade.
Como detectar o desvio de configuração
As práticas de gerenciamento do desvio de configuração ajudam sua equipe a identificar e corrigir desvios antes que causem problemas. Há várias ferramentas para analisar a infraestrutura, detectar desvios e recomendar as próximas etapas para corrigi-los.
Recursos gerenciados e não gerenciados
Ao analisar ferramentas de detecção de desvio de configuração, é importante observar que algumas soluções se especializam em recursos gerenciados, enquanto outras são voltadas para recursos não gerenciados. Para detectar desvios em recursos gerenciados, como os recursos do Terraform, sua equipe precisa de uma solução que analise regularmente os ativos identificados em busca de sinais de desvio.
Por outro lado, para lidar com recursos não gerenciados, sua equipe precisa de uma ferramenta que faça o inventário dos ativos ainda não documentados e, por isso, não verificados regularmente em busca de desvios. Depois de identificar os recursos não gerenciados, é preciso colocá-los sob o controle da IaC.
Ferramentas de gerenciamento do desvio de configuração
Terraform plan. Este é simplesmente um comando que pode ser usado na sua instância do Terraform. Ele identifica desvios nos recursos gerenciados e explica a mudança não documentada, além de apresentar um plano para corrigi-la. No entanto, esse comando de linha de comando só identifica mudanças nos recursos gerenciados, não nos não gerenciados.
Snyk IaC. Nossa ferramenta de gerenciamento do desvio de configuração foi criada para tornar a detecção de desvios rápida e simples para as equipes. Ela permite colocar recursos não gerenciados sob o controle do Terraform e ampliar a cobertura de IaC na nuvem. Nossa solução promove a colaboração entre desenvolvimento e segurança por meio de relatórios fáceis de usar.
CloudQuery. Esta ferramenta de código aberto para inventário de ativos na nuvem identifica rapidamente recursos na nuvem, detecta recursos não gerenciados e analisa vários arquivos de estado. Embora ajude a visualizar os ativos na nuvem, ela tem algumas limitações na hora de corrigir desvios. O CloudQuery pode ser impreciso ao procurar desvios em buckets do S3, oferece suporte limitado ao armazenamento de arquivos de estado em back-end, exige um banco de dados SQL e não é compatível com todos os recursos do Terraform.
Driftctl. Este recurso de código aberto — mantido pela Snyk — detecta, monitora e envia alertas sobre desvios. Embora seja versátil e consiga detectar desvios em recursos não gerenciados e analisar vários arquivos de estado, ele também tem algumas limitações. Por exemplo, não é compatível com todos os recursos do Terraform. Além disso, algumas pessoas usuárias enfrentaram problemas com erros de limitação de chamadas à API e longos tempos de espera ao fazer análises no modo detalhado.
O desvio de configuração é inevitável à medida que os sistemas evoluem e mudam com o tempo. Mas, se sua organização se concentrar em identificar e corrigir os desvios assim que ocorrerem, eles não causarão problemas nas etapas seguintes do pipeline, o que também poupa tempo e recursos. Criamos a Snyk IaC para ajudar as organizações a gerenciar e evitar desvios. Se quiser ver a solução em ação, fale conosco hoje mesmo para agendar uma demonstração.
Proteja a infraestrutura desde a origem
A Snyk automatiza a segurança e a conformidade de IaC nos fluxos de trabalho e detecta recursos com configurações divergentes ou ausentes.