Skip to main content

Drift de infraestrutura e detecção de drift: entenda o que são

Escrito por

Lauren Place

feature iac drift pink

9 de março de 2022

0 minutos de leitura

Aviso de descontinuação: detecção de drift em recursos gerenciados

A detecção de drift em recursos gerenciados, incluindo snyk iac describe --only-managed and snyk iac describe --drift, foi descontinuada. A detecção de drift em recursos gerenciados será encerrada em 30 de setembro de 2023.

Nem sempre as expectativas correspondem à realidade. Se você começou a usar infraestrutura como código (IaC) para gerenciar sua infraestrutura, já está no caminho para tornar mais seguros os processos de provisionamento na nuvem. Mas há uma segunda etapa no ciclo de vida da infraestrutura: como saber quais recursos na nuvem ainda não são gerenciados por IaC? E, entre os recursos gerenciados, eles continuam iguais na nuvem ao que você definiu no código?

As cargas de trabalho na nuvem mudam o tempo todo. À medida que aumenta o número de cargas de trabalho na nuvem, também cresce o número de pessoas e serviços autenticados que interagem com a infraestrutura em vários ambientes de nuvem. Com a adoção cada vez maior de IaC e o crescimento das bases de código de IaC, fica mais difícil acompanhar as mudanças ou garantir que as alterações manuais de configuração sejam registradas. Por isso, a detecção de drift é importante para proteger o que foi automatizado depois da implantação e enquanto está em execução na nuvem.

Neste artigo, vamos explicar o que é drift de infraestrutura, quais são suas causas e dar dicas para gerenciá-lo — seja você uma pessoa desenvolvedora solo ou parte de uma grande organização. Para saber mais sobre como detectar e prevenir o drift de infraestrutura, confira este artigo.

O que é drift de infraestrutura?

Drift de infraestrutura, ou simplesmente “drift”, como vamos chamar aqui, ocorre quando o estado atual da infraestrutura não corresponde ao que está definido na sua configuração de IaC. Essa diferença entre o que está definido no código e o que existe na nuvem pode acontecer por vários motivos.

Uma vantagem de usar IaC ou ampliar a cobertura de IaC dos recursos na nuvem é reduzir os casos de drift! Ao definir as configurações desejadas e as práticas recomendadas de segurança antes da implantação, você reduz a necessidade de fazer alterações de configuração posteriormente no console da nuvem. Ainda assim, mudanças por causa de emergências ou erros humanos são inevitáveis.

O drift pode ser causado por ações humanas, configurações inadequadas, alterações indesejadas feitas por aplicativos e muito mais. Duas das causas mais comuns de drift estão ligadas a problemas de processos ou fluxos de trabalho, como alterações manuais no console da nuvem que não são registradas no código ou mudanças aplicadas a um ambiente, mas não replicadas nos outros.

Causas comuns do drift de infraestrutura:

  1. Alterações manuais: alguém acessa o console e cria ou modifica recursos manualmente, fora do Terraform, do CloudFormation ou de outras ferramentas de IaC

  2. Aplicativos autenticados: microsserviços que não estão funcionando como deveriam

  3. Ambientes de IaC fora de sincronia: alterações ocultas ou não percebidas de um ambiente para outro

O que é detecção de drift?

A detecção de drift é o processo contínuo de identificar drift na infraestrutura de nuvem gerenciada por IaC, especialmente desvios da sua IaC que representam um risco de segurança para a organização. O ideal é que os resultados de uma ferramenta de detecção de drift sejam apresentados de forma fácil de entender para quem desenvolve (por exemplo, com um recurso do Terraform exibido diretamente e com a formatação adequada), para que seja possível entender o problema e corrigi-lo rapidamente na infraestrutura implantada.

Você pode pensar nisso como a segunda etapa da segurança de IaC. Durante o desenvolvimento e os pipelines de build, você identifica problemas de configuração incorreta e aplica proteções de segurança na IaC, mas também precisa fazer isso depois que as alterações chegam à produção.

“Cada evento de drift gera incerteza, tempo de resolução e um possível problema de segurança.”

Pessoa entrevistada de DevOps

A detecção de drift é importanteporque sua segurança depende do que está efetivamente implantado e em execução nos ambientes de nuvem. É comum ter uma falsa sensação de segurança depois de automatizar o gerenciamento da infraestrutura com IaC, mas as coisas mudam! Por isso, precisamos detectar o drift. É importante acompanhar o que foi automatizado e aplicar segurança _durante todo o ciclo de vida da infraestrutura_, desde a criação de uma configuração de IaC até depois da implantação na nuvem.

O que acontece quando o drift não é gerenciado?

Intencionalmente ou não, uma pessoa desenvolvedora pode causar muitos danos usando apenas chaves do IAM e um SDK. É fundamental detectar rapidamente decisões equivocadas e reverter a situação para um estado íntegro e seguro.

Algumas consequências negativas do drift na configuração da infraestrutura incluem…

  • Vazamentos de dados: o drift pode deixar dados críticos expostos.

  • Indisponibilidade de aplicativos: o drift pode causar falhas nos aplicativos.

  • Falhas na implantação: o drift pode fazer sua implantação falhar.

Em todos esses casos, ampliar a cobertura de IaC ou garantir que uma parcela maior da infraestrutura seja gerenciada por IaC pode ajudar a minimizar o drift ou corrigir problemas mais rapidamente do que se eles _não fossem gerenciados_ por IaC. Ao contrário das implantações de infraestrutura automatizadas por IaC, os recursos configurados manualmente — ou não gerenciados — levam mais tempo para ser configurados e estão mais sujeitos a erros. Com IaC, você pode padronizar a configuração da infraestrutura, reduzindo a possibilidade de erros de configuração ou de dependências removidas (como uma regra de grupo de segurança ou política do IAM ausente).

No caso de vazamentos de dados, se todos os recursos forem gerenciados por IaC, você poderá padronizar os controles de segurança e prevenir ou reduzir problemas como a exposição pública de um bucket do S3. Em caso de indisponibilidade, você poderá acompanhar a infraestrutura com mais eficiência e reimplantar a última versão íntegra anterior ao incidente.

Detecção de drift vs. gerenciamento de drift

O gerenciamento de drift é uma solução de segurança mais abrangente para reduzir o risco de drift e permitir sua correção rápida. Para isso, ele detecta o drift nos recursos gerenciados _e_ identifica recursos não gerenciados nos ambientes de nuvem, para que possam ser colocados sob controle.

Em um cenário ideal, as equipes de segurança e desenvolvimento teriam cobertura de IaC para 100% dos recursos na nuvem, e o fluxo de trabalho seria mais ou menos assim: um recurso não gerenciado é detectado e importado como código; em seguida, é testado e colocado em um estado íntegro e seguro, de acordo com as práticas recomendadas de segurança de IaC e as políticas de conformidade definidas pela organização.

Como manter a infraestrutura segura e em sincronia com o código

Uma abordagem completa para proteger a IaC inclui:

  1. Ampliar a cobertura de IaC dos recursos na nuvem em todos os ambientes de nuvem.

  2. Adotar uma ferramenta de segurança de IaC para analisar as configurações durante o desenvolvimento e nos pipelines de build, identificar problemas de configuração logo no início e facilitar a aprovação nas revisões de segurança.

  3. Usar sua IaC (Terraform ou AWS CloudFormation) para detectar infraestrutura sincronizada.

  4. Usar uma ferramenta de código aberto para detectar drift (driftctl), identificar problemas de drift na produção e apresentar os resultados às pessoas desenvolvedoras em termos que façam sentido para elas.

  5. Agir com base nos resultados do driftctl, orientando as pessoas desenvolvedoras a adicionar mais código e importá-lo como está no Terraform.

  6. Fechar o ciclo de feedback usando sua ferramenta de segurança de IaC (ou snyk iac test) para proteger as novas configurações do Terraform.

  7. Repetir o processo até alcançar a cobertura desejada, região por região, se necessário.

  8. Por fim, configurar quantas tarefas recorrentes forem necessárias para gerar alertas (por exemplo, uma verificação por hora para detectar alterações no IAM e outra diária para serviços de nuvem menos críticos).

O que considerar ao reduzir o drift

Hoje, há muitas ferramentas de detecção e gerenciamento de drift disponíveis. Veja alguns pontos a considerar na hora de escolher uma.

Na hora de decidir, avalie o nível de acesso que você dará à ferramenta (por exemplo, acesso total, somente leitura ou uma política com o mínimo de privilégios). Algumas ferramentas, como o Terraform, exigem acesso totalmente autenticado, enquanto outras precisam apenas de acesso de leitura. O driftctl, mencionado acima, funciona com acesso de privilégio mínimo, ou seja, apenas o necessário para detectar o drift.

Gerenciamento de drift com Snyk IaC

Se você quer colocar recursos não gerenciados sob controle de IaC e também detectar drift nos recursos gerenciados, a Snyk pode ajudar. O gerenciamento de drift no Snyk IaC ajuda você a proteger a infraestrutura com mais rapidez, apresentando problemas e correções diretamente às pessoas desenvolvedoras, em termos que fazem sentido para elas. Ao criar um ciclo de feedback mais rápido entre as equipes de segurança na nuvem e de desenvolvimento, você dá às pessoas desenvolvedoras autonomia para cuidar do Terraform do código à nuvem e proteger as configurações da infraestrutura após a implantação. A solução também identifica recursos não gerenciados nos ambientes de nuvem, para que você possa colocá-los sob controle de IaC e reduzir o risco de drift desde o início.

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.