Unidade 6 / 11

Gestão de Infraestrutura como Código (IaC): Terraform, Ansible e Plan Control

Ganhos:

  • Capacidade de produzir código IaC (Terraform, Ansible) com inteligência artificial com as permissões mais restritas e padrões seguros e compreender a abordagem declarativa
  • Capacidade de evitar a perda de dados lendo e capturando linhas de exclusão e forçando a substituição antes de aplicar a saída do plano/verificação
  • Capacidade de evitar vazamento de segredos, mantendo o arquivo de estado criptografado e bloqueado no back-end remoto e dividindo as alterações em etapas pequenas e reversíveis

Gestão de Infraestrutura como Código (IaC): Terraform, Ansible e Plan Control com IA

No passado, a configuração de um servidor era feita com cliques manuais, comandos e notas pessoais; O resultado foram servidores “flocos de neve” irreproduzíveis que ninguém sabia exatamente como configurar. Infraestrutura como Código (IaC) é a abordagem que acaba com esse caos: servidores, redes, regras de segurança são definidas não manualmente, mas por arquivos de texto versionáveis ​​(código). Quando você executa esse código, a infraestrutura é configurada exatamente como você a escreveu — a mesma, documentada e repetível sempre. As ferramentas mais comuns são Terraform e CloudFormation para infraestrutura em nuvem e Ansible para configuração de servidor. Aqui a IA é muito hábil em escrever, explicar e revisar esse código IaC. Mas o poder da IaC é também o seu perigo: uma linha errada pode destruir uma infra-estrutura inteira; então a IA escreve o código, você lê o “plano”, aprova e executa.

Nesta unidade discutiremos a abordagem declarativa, a distinção planejar/aplicar, segurança do Estado e idempotência; Você aprenderá a geração IaC com IA e a habilidade mais crítica, "controle de plano".

Pensando declarativamente: “e se”, não “como fazer”

A maioria das ferramentas IaC são declarativas: você descreve o estado final do sistema ("digamos 3 servidores web, 1 balanceador de carga"), a própria ferramenta calcula como chegar a esse estado. Isso é diferente de escrever um script ("faça isso e depois faça aquilo" passo a passo). A grande vantagem da abordagem declarativa é a idempotência: mesmo que você execute o código dez vezes, o resultado é o mesmo, pois a ferramenta verifica se o estado desejado já existe e, caso exista, não mexe nele. Lembre-se dessa diferença ao escrever IaC para a IA: você diz "deixe esta infraestrutura estar em estado", e não "execute esses comandos".

Planejar/aplicar: grade de segurança mais vital

O recurso que salva vidas do IaC é a etapa do plano. No Terraform, terraform plan, no Ansible, o modo --check produz uma prévia de "o que mudará se eu aplicá-lo" antes de executar o código: "2 recursos serão adicionados, 1 será alterado, 0 será excluído". Esta é a única forma de comparar a sua intenção com a realidade antes da implementação. Regra crítica: nunca se inscreva sem ler o plano. Procure especialmente as linhas “destruir”; Se você vir “12 serão excluídos” em vez de “1 será alterado” devido a um erro de digitação, o plano salvou você do desastre. Depois de imprimir o código para a IA, diga "examine a saída do plano linha por linha comigo, marque cada linha que contém exclusão/recriação".

Cuidado: algumas alterações no Terraform "destroem e recriam" um recurso em vez de "atualizar no local". Isso significa perda de dados para um banco de dados. Ignorar -/+ ou "substituição de forças" na saída do plano é um dos erros mais caros.

Arquivo de estado: registro de segredos e verdades

Ferramentas como o Terraform mantêm o estado atual da infraestrutura que gerenciam em um arquivo de estado. Este arquivo é crítico por dois motivos. Primeiro, pode conter segredos (senhas de banco de dados e chaves podem cair no estado em texto simples); Portanto, nunca cole o estado em um repositório público ou IA, mantenha-o em um backend remoto criptografado e com acesso restrito. Em segundo lugar, se o Estado for corrompido ou perdido, o veículo perde a ligação entre a infra-estrutura real e a infra-estrutura imaginada; Portanto, um backup do estado e um mecanismo de bloqueio (cadeado que evita que duas pessoas o quebrem ao mesmo tempo) são essenciais.

Passo a passo: IaC seguro com IA

  1. Intenção e provedor do estado. “2 servidores na AWS, com Terraform, nesta região, deste tamanho, e um grupo de segurança.” Se a nuvem, a ferramenta e a versão forem claras, a IA produz a sintaxe correta.
  2. Solicite padrões de segurança. "Abra o grupo de segurança, habilite a criptografia, extraia segredos para variáveis, conceda acesso público." A IA pode gerar amostras soltas por padrão.
  3. Leia e entenda o código. Entenda cada recurso, cada permissão, linha por linha. Não aplique uma permissão que você não entende.
  4. Obtenha um plano e audite-o. Execute plan/--check, examine a saída com AI, marque as linhas de exclusão e reconstrução.
  5. Aplicar pequeno e reversível. Implemente uma grande mudança em pequenos pedaços, não de uma só vez. Conheça o caminho de volta a cada passo.
  6. Proteger o Estado. Use backend e bloqueio remoto e criptografado; Nunca vaze estado.

três mini cases

Caso 1 — O plano recuperou uma base de dados. Um engenheiro queria aumentar o tamanho de um banco de dados com o código Terraform que produziu com IA. Enquanto esperava "1 para mudar" na saída do plano de terraform, ele viu "1 para destruir, 1 para adicionar" - o parâmetro que ele escolheu estava acionando uma reconstrução, não uma atualização no local, o que significa que todos os dados seriam excluídos. O controle do plano interrompeu a perda irreversível de dados antes de ser implementado.

Caso 2 — Retorno de inadimplência solta. Uma equipe pediu à IA um código de firewall. Para executar o exemplo, a IA gerou uma regra simples de 0.0.0.0/0, que significa “público na internet”. O engenheiro percebeu isso ao ler o código e restringiu o acesso apenas ao intervalo de IP corporativo. Se fosse implementado sem auditoria, o banco de dados estaria aberto a toda a internet.

Caso 3 — Vazamento de estado evitado. Um membro júnior estava prestes a colar o arquivo terraform.tfstate intacto em uma ferramenta pública para resolver um problema do Terraform. Engenheiro sênior parado: o estado continha uma senha de banco de dados em texto simples. Em vez disso, um resumo descriptografado descrevendo o problema foi compartilhado e o estado foi movido para o back-end criptografado remoto.

Quatro modelos copiáveis

1) Geração de recursos IaC (padrão seguro):

Sua função: engenheiro sênior de infraestrutura em nuvem. [Nuvem, por ex. AWS] para[ferramenta, por ex. Terraform] gerar código. Finalidade: [finalidade]. Regras de segurança: acesso público (0.0.0.0/0) ABERTO; comece com permissão mais restrita; ativar a criptografia; extraia segredos em variáveis, não os incorpore no código; Verifique as configurações que podem levar à exclusão/recriação. Explique cada fonte com um breve comentário.

2) Planeje a auditoria de resultados:

Abaixo está uma saída [plano Terraform/verificação Ansible]. Diga-me: (1) quantos recursos serão adicionados/alterados/excluídos, (2) marque também as linhas “destruir” ou “forçar substituição” que representam risco de perda de dados, (3) liste quaisquer alterações que pareçam inesperadas ou perigosas. Resultado: [plano]

3) Revisão de segurança do código IaC:

Examine o seguinte código IaC para segurança: (1) há acesso/permissões excessivamente amplos, (2) a criptografia está desativada, (3) há segredos incorporados no código, (4) há recursos disponíveis publicamente? Sugira correção para cada descoberta. Código: [código mascarado]

4) Divida a mudança em partes seguras:

Não quero implementar esta grande mudança de infraestrutura [explicação] de uma só vez. Divida-o em etapas pequenas e independentes, às quais seja fácil voltar. Para cada etapa: o que muda, o que devo prestar atenção no plano, como faço para desfazer se houver problemas?

Alerta fraco / Alerta forte

Alerta fraco:

Escreva o código Terraform que cria um servidor na AWS.

Região, tamanho, segurança, rede e criptografia não são claros. A IA produz os padrões de trabalho mais flexíveis e explícitos — se colocada em produção, seria uma vulnerabilidade.

Alerta poderoso:

Sua função: engenheiro sênior de infraestrutura em nuvem. Defina um servidor web com Terraform no AWS eu-central-1: t3.small, apenas da faixa de IP corporativo (darei com uma variável), porta 443 está aberta, disco criptografado, sem acesso público, rótulos são obrigatórios. Segredos são revelados à variável. Após o código: Antes de implementá-lo, diga-me os 3 tipos de linhas que devo prestar atenção no plano e explique o caminho de retorno.

Palco

Risco

grade de segurança

escrevendo código

Padrão solto (público)

Permissão mais restrita + leitura

planejar/verificar

Excluir sem perceber

Planeje a inspeção, destrua a marcação

Aplicar

Grande mudança única

Passos pequenos e reversíveis

administração estadual

Vazamento de esmalte, distorção

Back-end criptografado remoto + bloqueio

Erros comuns

  • Candidatar-se sem ler o plano. O plano prenuncia a eliminação e a reconstrução; Se for ignorado, a perda de dados será inevitável.
  • Não percebendo o padrão solto. As instâncias de IA frequentemente produzem 0.0.0.0/0; Se for movido para produção, significa código aberto para toda a Internet.
  • Estado de vazamento. Exportar o arquivo de estado para a IA ou repositório aberto expõe segredos de texto simples.
  • Incorporando segredos no código. Escrever a senha no código IaC é um vazamento persistente no histórico de versões do código.
  • Confundindo uma reconstrução com uma atualização. Ignorar a linha de substituição de forças resultará em perda de dados nos bancos de dados.
Dica: Mesmo ao fornecer o resultado do plano para uma IA revisar, baseie a decisão final em seu próprio conhecimento, não no texto do plano. A IA resume o plano e sinaliza linhas de risco; mas a resposta à pergunta "esta exclusão é aceitável" depende do contexto do seu negócio.

Em resumo

IaC traz repetibilidade e documentação gerenciando a infraestrutura com código versionável em vez de cliques manuais. A IA é um parceiro poderoso na escrita deste código, descrevendo-o e revisando-o quanto à segurança. Mas o poder da IaC é o seu perigo: uma linha pode destruir toda a infraestrutura. Pense declarativo, comece com a permissão mais restrita, corrija padrões vagos, mantenha segredos fora do código e do estado. A proteção mais importante é a etapa de planejar/verificar: nunca execute sem ler as linhas de exclusão e reconstrução. Mantenha o estado criptografado, bloqueado e remoto. O código é da IA, a decisão é sua.

Tarefa de aplicativo

Escolha um alvo de infraestrutura pequeno (por exemplo, uma única máquina virtual e uma regra de segurança). Com o modelo de “geração de recursos IaC” acima, peça à IA um código com padrões seguros. Verifique novamente o código com o modelo "Revisão de segurança do código IaC" e tente encontrar pelo menos uma configuração solta. Se possível, execute plan/--check em uma conta de teste e revise a saída com o modelo "Plan output check"; Veja se há uma linha de exclusão ou recriação. Anote suas descobertas e como você protegerá o estado em 6 pontos.

lista de verificação

  • [] Especifiquei nuvem, ferramenta e versão para IA e solicitei código com as permissões mais restritas?
  • [] Verifiquei o código em busca de padrões soltos (0.0.0.0/0, criptografia fechada)?
  • [] Extraí os segredos da variável em vez de incorporá-los no código?
  • [] Eu li a saída do plano/verificação e marquei as linhas de exclusão antes de aplicar?
  • [] Avaliei o impacto da perda de dados das linhas de "substituição de forças"/reconstrução?
  • Eu não mantive o arquivo [] State criptografado, bloqueado, no back-end remoto e o vazei?