Skip to main content

Explicação sobre os desvios e o método de detecção

Escrito por:
Lauren Place
wordpress-sync/feature-iac-drift-pink

9 de março de 2022

0 minutos de leitura

Aviso de descontinuidade Detecção de desvios em recursos gerenciados

A detecção de desvios em recursos gerenciados, incluindo snyk iac describe --only-managed and snyk iac describe --drift, foi descontinudada. A data de fim de vida útil da detecção de desvios de recursos gerenciados foi 30 de setembro de 2023.

As expectativas nem sempre correspondem à realidade. Se você começou a usar a infraestrutura como código (IaC) para gerenciar sua infraestrutura, já está no caminho certo para tornar seus processos de provisionamento de nuvem mais seguros. Por outro lado, há uma segunda questão que afeta o ciclo de vida da infraestrutura: como saber quais recursos ainda não são gerenciados pela IaC na sua nuvem? E, com relação aos recursos gerenciados, eles permanecem inalterados na nuvem em comparação a quando você os definiu no código?

Mudanças nas cargas de trabalho da nuvem acontecem o tempo todo. Aumentar as cargas de trabalho em execução na nuvem significa um número cada vez maior de pessoas e serviços autenticados interagindo com a infraestrutura em vários ambientes de nuvem. À medida que a IaC se difunde e as bases de código de IaC se expandem, fica cada vez mais difícil rastrear as alterações ou garantir que as alterações manuais na configuração sejam contabilizadas. É por isso que a detecção de desvios é importante para proteger o que é automatizado após sua implantação e permanência na nuvem.

Neste post, vamos discutir o que são desvios de infraestrutura e as causas desses desvios. As dicas de gerenciamento que compartilhamos podem ser úteis tanto para desenvolvedores independentes quanto para grandes organizações. Para saber mais sobre como detectar e prevenir desvios de infraestrutura, confira este artigo.

O que são desvios de infraestrutura?

Os desvios de infraestrutura, chamados apenas de “desvios” daqui em diante, ocorrem quando o estado da infraestrutura em tempo real não corresponde ao que está definido na configuração da IaC. Essa diferença entre o que está definido no código e o que existe na nuvem pode acontecer por vários motivos.

Um benefício de usar a IaC ou ter maior cobertura de IaC para recursos de nuvem é que isso minimiza os casos de desvios. Ao definir configurações pretendidas e práticas recomendadas de segurança antes da implantação, é possível reduzir a necessidade de alterações de configuração a serem feitas posteriormente no seu console de nuvem. Ainda assim, há alterações inevitáveis feitas devido a emergências ou erros humanos.

Os desvios podem ser causados por entrada humana, configuração inadequada, aplicativos que fazem alterações indesejadas e muitos outros fatores. Duas das causas mais comuns estão relacionadas a problemas em processos ou fluxos de trabalho, como quando as alterações manuais em um console de nuvem não são transpostas como código ou quando as alterações são aplicadas a um determinado ambiente, mas não propagadas nos demais.

Causas comuns de desvios de infraestrutura:

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

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

  3. Ambientes de IaC fora de sincronia: alterações ocultas ou invisíveis de ambiente para ambiente

O que é detecção de desvios?

A detecção de desvios é um processo contínuo que atua na sua infraestrutura de nuvem gerenciada pela IaC e tenta identificar especialmente os desvios da IaC que representam riscos de segurança para a organização. O ideal é que uma ferramenta de detecção desse tipo mostre os resultados de maneira simples (por exemplo, um recurso do Terraform relatado diretamente com a formatação adequada) para ajudar os desenvolvedores a entender o problema de forma rápida e a corrigi-lo na infraestrutura.

Considere isso como a segunda fase da segurança da IaC. Encontramos problemas de configuração incorreta e aplicamos barreiras de proteção de segurança na IaC durante os pipelines de desenvolvimento e compilação, mas repetimos o processo após o envio para a produção.

“Todos os eventos de desvios geram incertezas, um tempo de resolução e um possível problema de segurança.”

Entrevista com DevOps

A detecção de desvios é importante, pois a sua segurança é diretamente proporcional ao que está implantado e em execução nos seus ambientes de nuvem. Muitas vezes, há uma falsa sensação de segurança ao automatizar o gerenciamento da sua infraestrutura com a IaC. Mas as coisas mudam! É por isso que precisamos de detecção de desvios. É importante monitorar o que é automatizado e consolidar a segurança \_ao longo de todo o ciclo de vida da infraestrutura_, desde o momento em que uma configuração de IaC é salva até depois que ela é implantada na nuvem.

O que acontece quando os desvios não forem gerenciados?

Intencionalmente ou não, um desenvolvedor pode causar muitos danos apenas com chaves do IAM e um SDK. É fundamental ser capaz de detectar decisões ruins rapidamente e reverter a situação para um estado íntegro e seguro.

Alguns resultados ruins de desvios de configuração de infraestrutura incluem…

  • Vazamentos de dados: os desvios podem deixar dados críticos expostos.

  • Tempo de inatividade dos aplicativos: os desvios podem causar falhas em aplicativos.

  • Falhas de implantação: os desvios podem fazer com que sua implantação falhe.

Em cada um desses casos, o aumento da cobertura da IaC pode ajudar a minimizar desvios ou corrigir problemas mais rapidamente do que se \_não fossem gerenciados_ pela IaC. Ao contrário das implantações de infraestrutura automatizadas pela IaC, os recursos configurados manualmente, ou não gerenciados, demoram mais para serem configurados, além de serem propensos a erros. Com a IaC, é possível padronizar a configuração da infraestrutura, reduzindo assim a probabilidade de erros na configuração ou de dependências excluídas (como ausência de uma regra de grupo de segurança ou política do IAM).

No caso de violações de dados, se todos os recursos forem gerenciados pela IaC, haverá a possibilidade de padronizar controles de segurança e evitar ou atenuar certos problemas, como um bucket do S3 que se torna publicamente disponível. Em um caso de tempo de inatividade, é possível monitorar sua infraestrutura com mais eficiência e reimplantar a última versão íntegra antes do desastre.

Comparação entre detecção e gerenciamento de desvios

O gerenciamento é uma solução de segurança mais holística para reduzir os riscos de desvios e permitir sua correção rápida. Ele detecta os desvios nos seus recursos gerenciados \_e_ não gerenciados nos ambientes de nuvem para que possam ser controlados.

Em um cenário ideal, as equipes de segurança e desenvolvimento poderiam ter 100% de cobertura de IaC de seus recursos de nuvem e um fluxo de trabalho mais ou menos como este: 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 da IaC e as políticas de conformidade definidas pela sua organização.

Manter a infraestrutura segura e sincronizada com o código

Confira um exemplo de receita abrangente para a segurança da IaC:

  1. Aumentar a cobertura da IaC para recursos de nuvem em ambientes de nuvem.

  2. Adotar uma ferramenta de segurança de IaC para verificar suas configurações durante os pipelines de desenvolvimento e compilação, pois isso permite detectar qualquer problema de configuração incorreta com antecedência e passar por análises de segurança.

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

  4. Empregar uma ferramenta de detecção de desvios de código aberto (driftctl) para detectar problemas relacionados na produção e relatar os resultados desses desvios aos desenvolvedores da forma mais conveniente para eles.

  5. Tomar medidas com base nas descobertas do driftctl, fazendo com que os desenvolvedores adicionem mais código e o importem sem alterações no Terraform.

  6. Encerrar o ciclo de feedback usando sua ferramenta de segurança de IaC (ou snyk iac test) para proteger as configurações recém-criadas do Terraform.

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

  8. Por fim, criar quantos trabalhos recorrentes forem necessários para gerar alertas (por exemplo, uma verificação de hora em hora em busca de qualquer alteração do IAM e uma verificação diária de serviços de nuvem menos críticos).

Considerações ao atenuar desvios

Atualmente, existem diversas ferramentas de detecção e gerenciamento de desvios. Há algumas coisas a considerar na hora de escolher sua ferramenta.

Ao tomar uma decisão, pense no nível de acesso que pretende conceder à ferramenta (acesso total, somente leitura ou uma política privilégios mínimos). Certas ferramentas, como o Terraform, exigem acesso totalmente autenticado, enquanto outras exigem acesso somente leitura. O driftctl (mencionado acima) opera com acesso de privilégios mínimos para detectar desvios.

Gerenciamento de desvios com o Snyk IaC

Se você tiver interesse em controlar recursos não gerenciados na IaC ou detectar desvios dos seus recursos gerenciados, saiba que pode contar com a Snyk. O gerenciamento de desvios no Snyk IaC ajuda a proteger a infraestrutura mais rapidamente, relatando problemas e correções diretamente aos desenvolvedores da forma mais conveniente para eles. Por meio da criação de um ciclo de feedback mais rápido entre as equipes de segurança e desenvolvimento na nuvem, os desenvolvedores terão a capacidade de controlar seu Terraform do código à nuvem e de proteger as configurações de infraestrutura após a implantação. A segunda parte disso é também revelar recursos não gerenciados no ambiente de nuvem para que você possa colocá-los sob o controle da IaC e reduzir os riscos de desvios desde o início.