Agentic SOC Summit: o novo padrão para defesa autônomaInscreva-se

O que é infraestrutura como código?

Infraestrutura como código (IaC) é o processo de gerenciamento e provisionamento dinâmico de infraestrutura por meio de código, em vez de um processo manual, para simplificar o desenvolvimento, a configuração e o tempo de execução de aplicações. A IaC aproveita o código para:

  • Automatizar o provisionamento, a implementação, a configuração e o gerenciamento da infraestrutura
  • Orquestrar a operação de todos os componentes de infraestrutura, como hardware, software, redes, máquinas virtuais, containers, bancos de dados e elementos de infraestrutura de nuvem
  • Configurar, monitorar e gerenciar todos os componentes e sistemas de infraestrutura

A ampla adoção de workloads, containers e computação em nuvem tornou a IaC uma parte importante do DevOps, permitindo a automação e o monitoramento contínuo de todo o ciclo de vida da aplicação, desde a integração e os testes até a entrega e a implementação. Também é um aspecto importante da segurança de aplicações e containers, bem como da proteção geral da workload.

cnapp-guide-temp

O guia completo para CNAPPs

Faça o download do Guia completo para CNAPPs da CrowdStrike para entender melhor por que as Plataformas de Proteção de Aplicações Nativas em Nuvem são componentes críticos das estratégias modernas de segurança na nuvem e como integrá-las melhor aos ciclos de vida de desenvolvimento.

Baixe agora

Cinco princípios da infraestrutura como código

Os princípios a seguir têm como objetivo ajudar suas equipes a superar os desafios relacionados à IaC e maximizar o retorno sobre o investimento (ROI) da sua estratégia de IaC.

  1. Descartabilidade do sistema: quando os sistemas são construídos com uma infraestrutura dinâmica em mente, fica fácil construir, destruir, atualizar, redimensionar e transferir recursos conforme a infraestrutura muda ao longo do tempo. Isso permite que a infraestrutura continue funcionando quando ocorre uma falha inesperada e ajuda a evitar interrupções operacionais que podem impactar os negócios.
  2. Duplicabilidade do sistema: deve ser fácil recriar qualquer parte da infraestrutura de forma eficiente, eliminando muitos dos perigos e ansiedades que surgem ao fazer alterações na infraestrutura. A fácil replicação da infraestrutura também permite que você lide com falhas rapidamente e provisione novos ambientes sem problemas.
  3. Reprodutibilidade do processo: qualquer alteração de infraestrutura ou ação tomada deve ser reproduzível. Para ajudar nisso, sua equipe de infraestrutura deve criar um script para qualquer processo que puder. Alguns processos são mais desafiadores de criar scripts, mas suas equipes devem considerar usar ferramentas para auxiliar no scripting desses processos.
  4. Design dinâmico: os desenvolvedores estão cientes de que qualquer mudança em uma infraestrutura complexa será cara. Por isso, eles devem projetar infraestruturas para suportar mudanças à medida que elas acontecem, prevendo meticulosamente como a infraestrutura mudará no futuro.
  5. Consistência do sistema: quando os processos são automatizados, sempre há uma chance de algo dar errado. Para superar esse desafio, os desenvolvedores de infraestrutura precisam garantir que todos os novos usuários adicionados ou alterações feitas sejam exatamente os mesmos que os existentes. Caso contrário, inconsistências podem resultar em automação defeituosa.

Seis benefícios da IaC

No cenário moderno de TI, a IaC deve ser considerada um componente essencial dentro da estratégia de TI. Até mesmo requisitos de infraestrutura relativamente simples podem se tornar mais eficientes e econômicos aproveitando os princípios de IaC.

Embora a IaC possa adicionar complexidade ao ambiente de TI, as vantagens de empregá-lo geralmente superam o custo de implementação e gerenciamento.

1. Velocidade

A IaC é um facilitador essencial do desenvolvimento ágil, integração contínua/entrega contínua (CI/CD) e práticas de DevOps. Ela elimina a maior parte do provisionamento e das configurações manuais de componentes de infraestrutura de nuvem, permitindo que a equipe provisione a infraestrutura por meio de um script codificado para cada ambiente, o que é significativamente mais rápido.

2. Precisão

Ao confiar no código, a IaC limita erros no processo de configuração e reduz inconsistências que podem ocorrer quando mais de uma pessoa é responsável pela configuração.

3. Responsabilidade

Você pode habilitar alterações de infraestrutura e configuração controladas por versão na sua IaC como qualquer outro arquivo de código-fonte. Isso lhe dá total rastreabilidade das alterações feitas em suas configurações, o que você pode usar para responsabilizar os usuários, se necessário.

4. Eficiência

A IaC é um facilitador estratégico do DevOps porque os componentes da infraestrutura de nuvem podem ser disponibilizados rapidamente, conforme necessário. É modular por natureza, o que significa que diferentes partes de código podem ser divididas e combinadas para atender às necessidades de vários casos de uso. Isso ajuda a agilizar o desenvolvimento de software e otimizar recursos dentro da equipe de TI.

5. Economia de custos

A automação geralmente leva à economia de custos, e a IaC não é exceção. Ao permitir que as organizações otimizem recursos limitados — incluindo custos de hardware, custos de pessoal, custos de armazenamento e muito mais — a IaC reduz os custos gerais e permite que as equipes se concentrem nas tarefas de maior valor que exigem supervisão e intervenção humana. As despesas gerais de capital e operacionais permanecem baixas.

6. Escalabilidade

A infraestrutura como código permite que você amplie facilmente o gerenciamento de infraestrutura sem gastar demais, porque a automação reduz configurações incorretas e elimina interações demoradas.

Infraestrutura mutável vs. imutável

Uma das primeiras decisões que as organizações precisam tomar é como elas vão automatizar a infraestrutura. Eles geralmente têm duas opções: infraestrutura mutável e imutável.

1. Infraestrutura mutável

A infraestrutura mutável pode ser atualizada ou modificada após ter sido provisionada. Esse tipo de infraestrutura dá às equipes de TI a flexibilidade de personalizar os servidores para que eles se adaptem melhor aos requisitos das aplicações. Infelizmente, isso traz inconsistências de implementação e pode dificultar o rastreamento.

2. Infraestrutura imutável

A infraestrutura imutável, por outro lado, não pode ser modificada depois de ter sido provisionada. Como nenhuma alteração pode ser feita, é preciso uma infraestrutura completamente nova caso seja necessária uma mudança. Embora pareça impraticável, uma nova infraestrutura pode ser criada na nuvem sem problemas.

Expert Tip

Que tipo de infraestrutura você deve escolher? Embora as necessidades variem de acordo com a organização, a maioria opta por seguir o caminho da infraestrutura imutável. A infraestrutura imutável torna extremamente simples manter a consistência nos ambientes de implementação e teste. Além disso, como esse tipo de infraestrutura permite que você rastreie versões anteriores da infraestrutura, você pode facilmente voltar para uma versão mais antiga se ela for mais eficiente.

IaC declarativa vs. imperativa

Existem duas abordagens principais para escrever código IaC:

1. IaC declarativa

Uma abordagem declarativa para IaC é aquela em que o usuário define o estado futuro e lista todos os recursos e atributos dentro da infraestrutura; no entanto, a ferramenta ou plataforma determinará a melhor forma de instalar e configurar o sistema para atingir o estado futuro.

2. IaC Imperativa

Uma abordagem imperativa requer muito mais contribuição e especificidade do que uma abordagem declarativa. Neste método, o desenvolvedor ou a equipe de TI definirá o estado futuro e também especificará o processo para fazê-lo. A ferramenta ou sistema não se desviará das etapas do processo nem alterará a ordem.

Saiba mais

Por que a IaC (Infrastructure-as-Code, Infraestrutura como Código) declarativa é a abordagem preferida? A maioria das organizações tende a adotar uma abordagem declarativa porque ela oferece muito mais flexibilidade para viabilizar vários casos de uso. Os benefícios específicos incluem:

  • Simplicidade: a IaC declarativa requer pouca contribuição do desenvolvedor além da especificação do estado futuro desejado.
  • Velocidade e flexibilidade: um sistema declarativo compila automaticamente um inventário de todos os objetos no ambiente. Ter esse registro torna mais fácil e rápido alterar ou desmontar a infraestrutura quando necessário no futuro.
  • Automação: em uma abordagem declarativa, quaisquer alterações feitas dentro do estado desejado são aplicadas automaticamente pela plataforma de IaC. Em uma abordagem imperativa, caberia ao desenvolvedor refletir as mudanças no ambiente.
  • Otimização: em uma abordagem de IaC declarativa, as organizações podem limitar scripts de implementação e outros códigos imperativos, o que ajuda a conter e reduzir a dívida técnica ao longo do tempo.

Práticas recomendadas de infraestrutura como código

Siga estas práticas recomendadas para garantir uma IaC segura a longo prazo:

  1. Codifique tudo na sua IaC para implementar quaisquer alterações de forma transparente e segura. Isso envolve a atualização automática do seu pipeline em execução para detectar essas alterações e evitar intervenção humana.
  2. Proteja segredos codificados não incluindo credenciais ao implementar um código para evitar um possível ataque. Algumas maneiras de proteger informações confidenciais incluem substituir segredos codificados por referências de variáveis confidenciais e usar uma ferramenta de gerenciamento de segredos.
  3. Execute uma varredura de erros de configuração usando ferramentas de teste de segurança de aplicação estática (SAST) ou análise de composição de software (SCA) em sua IaC para descobrir possíveis erros de configuração que podem deixar sua infraestrutura vulnerável a invasores.
  4. Modularize sua infraestrutura seguindo uma abordagem de arquitetura de microsserviços ao desenvolver a infraestrutura. Essa abordagem permite que vários componentes de infraestrutura sejam divididos em diferentes módulos que podem ser gerenciados individualmente.
  5. Restrinja o acesso aos ambientes para que os usuários tenham permissões de "somente leitura". Somente usuários com credenciais específicas devem receber acesso privilegiado para alterar a infraestrutura, e cada alteração deve ser assinada criptograficamente.

Plataformas e ferramentas de IaC

Algumas das plataformas e ferramentas de infraestrutura como código mais populares incluem:

Plataforma/FerramentaDescrição
TerraformO Terraform é uma ferramenta de IaC de código aberto que permite aos desenvolvedores definir e fornecer infraestrutura de data center em uma variedade de plataformas, incluindo Amazon Web Services (AWS), Microsoft Azure, Oracle Cloud, Google Cloud Platform e outras plataformas de nuvem pública.
PulumiO Pulumi é um kit de desenvolvimento de software (SDK) IaC de código aberto que permite aos desenvolvedores criar, implementar e gerenciar infraestrutura em qualquer nuvem, usando uma variedade de linguagens, incluindo Python, TypeScript, JavaScript, Go, C# e F#.
AnsibleO Ansible é uma ferramenta de IaC que oferece suporte ao desenvolvimento de aplicações para clientes IBM Power Systems. Assim como o Terraform e o Pulumi, o Ansible é um recurso de código aberto que pode automatizar o provisionamento, o gerenciamento de configuração e a implementação de aplicações.
Chef InfraO Chef Infra, junto com o Puppet, é pioneiro no espaço DevOps e uma das primeiras ferramentas de gerenciamento de infraestrutura para definir a IaC.
PuppetO Puppet, outro pioneiro em infraestrutura como código, é uma ferramenta de gerenciamento de configuração de software que usa sua própria linguagem declarativa e modelos para configurar sistemas.
CFEngineCFEngine é outro sistema de gerenciamento de configuração de código aberto. É considerada uma das ferramentas mais maduras do mercado e pode atender a necessidades de configuração complexas.
AWS CloudFormationO AWS CloudFormation é uma ferramenta de IaC que permite aos usuários modelar, provisionar e gerenciar a infraestrutura da AWS, bem como outros recursos externos.
Azure Resource ManagerO Azure Resource Manager é um serviço de infraestrutura como código que usa JSON para configurar componentes de infraestrutura no ambiente do Azure.
Gerenciador de implementação do Google CloudO Google Cloud Deployment Manager é um serviço de implementação de infraestrutura que automatiza a criação e o gerenciamento de recursos do Google Cloud. A IaC e a automação simplificam o desenvolvimento, a entrega e a implementação de aplicações. Ela permite que DevOps e TI criem, configurem e gerenciem a infraestrutura de forma mais eficiente.  A segurança é um aspecto extremamente importante para criar, entregar e implementar aplicações.  Pense, construa e proteja com a CrowdStrike.

Como a CrowdStrike pode ajudar

Organizações que escolhem infraestrutura como código para gerenciar seus ambientes de nuvem ainda estão expostas a ameaças e vulnerabilidades. O CrowdStrike Falcon® Cloud Security fornece insights exclusivos sobre adversários e oferece segurança nativa em nuvem e full-stack que cria menos trabalho para as equipes de segurança, defende contra ataques à nuvem e otimiza implementações multinuvem.

Guilherme (Gui) Alvarenga é Gerente Sênior de Marketing de Produtos do portfólio de Segurança de Nuvem da CrowdStrike.  Ele tem mais de 15 anos de experiência com soluções de nuvem, software como serviço (SaaS), rede e ML para empresas como Check Point, NEC e Cisco Systems. Guilherme formou-se em Publicidade e Propaganda pela Universidade Paulista, no Brasil, e fez seu MBA na Universidade Estadual de San Jose.  Estudou Computação Aplicada na Universidade de Stanford e especializou-se em Segurança de Nuvem e Investigação de Ameaças.