Editar

Compartilhar via


DevSecOps para iac (infraestrutura como código)

Microsoft Sentinel
Azure Monitor
GitHub

Ideias de soluções

Este artigo descreve uma ideia de solução. Seu arquiteto de nuvem pode usar essa orientação para ajudar a visualizar os principais componentes para uma implementação típica dessa arquitetura. Use este artigo como ponto de partida para projetar uma solução bem arquitetada que se alinhe aos requisitos específicos de sua carga de trabalho.

Essa ideia de solução ilustra o pipeline de DevSecOps usando o GitHub para IaC e como controlar o fluxo de trabalho para excelência operacional, segurança e otimização de custos.

Terraform é uma marca registrada da Hashicorp. Nenhum endosso é implícito pelo uso dessa marca.

Arquitetura

Diagrama que mostra a arquitetura de DevSecOps para IaC.

Baixe um Arquivo Visio dessa arquitetura.

Fluxo de dados

  1. Com o desenvolvimento orientado a testes, você faz check-in das alterações de código para definições de infraestrutura, como modelos IaC, em repositórios do GitHub. Você desenvolve testes de unidade, testes de integração e PaC ao mesmo tempo para testar a qualidade do IaC.
  2. As solicitações pull (PRs) acionam testes de unidade automatizados por meio de ações do GitHub.
  3. Você configura o processo de fluxo de trabalho Ações do GitHub para testar o IaC com estados e planos de infraestrutura implantados localmente.
  4. Você configura as Ações do GitHub para verificar se há problemas de segurança e qualidade do código. Em seguida, você usa ferramentas de verificação de segurança criadas no CodeQL do GitHub para verificar vulnerabilidades de segurança no IaC. Se uma vulnerabilidade for detectada, o GitHub enviará alertas para a organização ou para os proprietários e mantenedores do repositório.
  5. A ferramenta IaC provisiona e modifica recursos para cada ambiente, adaptando tamanho, contagem de instâncias e outras propriedades. Você pode executar testes de integração automatizados para IaC em recursos provisionados.
  6. Quando uma atualização manual para a infraestrutura é necessária, o acesso de administrador designado é elevado para executar as modificações. Após a modificação, o acesso elevado é removido e um problema deve ser registrado no GitHub para reconciliação do IaC. As etapas e a possibilidade de reconciliação dependem das ferramentas específicas do IaC.
  7. O SecOps monitora e defende continuamente contra ameaças e vulnerabilidades de segurança. A Política do Azure impõe a governança da nuvem.
  8. Quando uma anomalia é detectada, um problema deve ser gerado automaticamente no GitHub para retificações.

Componentes

  • O GitHub é uma plataforma de hospedagem de código para controle de versão e colaboração. Um repositório de controle de origem do GitHub contém todos os arquivos de projeto e seu histórico de revisões. Os desenvolvedores podem trabalhar juntos para contribuir, discutir e gerenciar código no repositório.
  • O GitHub Actions fornece um conjunto de fluxos de trabalho de compilação e lançamento que abrange integração contínua (CI), testes automatizados e implantações de contêiner.
  • O GitHub Advanced Security fornece recursos para proteger seu IaC. Requer outra licença.
  • O CodeQL fornece ferramentas de verificação de segurança que são executadas em código estático para detectar configurações incorretas de infraestrutura.
  • O Terraform é um produto do parceiro desenvolvido pela HashiCorp que permite a automação de infraestrutura no Azure, no local e em outros ambientes
  • O Microsoft Defender para Nuvem oferece um gerenciamento de segurança unificado e proteção avançada contra ameaças em cargas de trabalho de nuvem híbrida.
  • O Microsoft Sentinel é uma solução nativa de nuvem, SIEM e de orquestração de segurança, automação e resposta (SOAR). Ele usa IA avançada e análises de segurança para ajudá-lo a detectar e responder a ameaças em sua empresa.
  • O Azure Policy ajuda você a gerenciar e impedir problemas de TI com definições de políticas que podem impor regras para seus recursos de nuvem. Por exemplo, se um projeto estiver prestes a implantar uma máquina virtual com um SKU não reconhecido, o Azure Policy enviará alertas sobre o problema e interromperá a implantação.
  • O Azure Monitor coleta e analisa a telemetria de aplicativo, como métricas de desempenho e logs de atividades. Quando este serviço identifica condições irregulares, alerta os aplicativos e o pessoal.

Detalhes do cenário

Conceitualmente, o DevSecOps para infraestrutura como código (IaC) é semelhante ao DevSecOps para código de aplicativo no AKS. Mas você precisa de um conjunto diferente de pipelines e ferramentas para gerenciar e automatizar a integração contínua e a entrega contínua (CI/CD) para IaC.

Quando você adota o IaC, é importante criar testes de automação à medida que desenvolve o código. Esses testes reduzem a complexidade de testar o IaC quando sua carga de trabalho é dimensionada. Você pode usar estados de configuração de infraestrutura local, como estados Terraform e planos para desenvolver TDD (desenvolvimento orientado a teste) para IaC. Esses estados de configuração emulam as implantações reais. Você pode executar testes de integração para IaC em implantações de infraestrutura reais usando a API REST do Azure Resource Graph.

Policy as Code (PaC) também é um método importante para fornecer infraestrutura em conformidade com regulamentos e governança corporativa. Você pode adicionar fluxos de trabalho PaC em seus pipelines para automatizar a governança da nuvem.

Proteger a infraestrutura no início do estágio de desenvolvimento reduz os riscos de configuração incorreta da infraestrutura que abre pontos para ataque após a implantação. Você pode integrar ferramentas de análise de código estático para infraestrutura como Synk ou Aquasecurity tfsec usando o CodeQL do GitHub, para verificar problemas de segurança no código de infraestrutura. Esse processo é semelhante ao SAST (Static Application Security Testing).

Quando a infraestrutura é implantada e operacional, os desvios de configuração da nuvem podem ser difíceis de resolver, especialmente em ambientes de produção.

Configure entidades de serviço dedicadas para implantar ou modificar a infraestrutura de nuvem para ambientes de produção. Em seguida, remova todos os outros acessos que permitam a configuração manual do ambiente. Caso você precise de configurações manuais, eleve o acesso para o administrador designado e remova o acesso elevado assim que a alteração for modificada. Você deve configurar o Azure Monitor para gerar um problema no GitHub para que os desenvolvedores reconciliem as alterações. No entanto, a configuração manual deve ser evitada, se possível.

É importante monitorar continuamente o ambiente de nuvem em busca de ameaças e vulnerabilidades para evitar incidentes de segurança. Você pode usar as ferramentas de proteção contra ameaças e gerenciamento de eventos e informações de segurança (SIEM) para detectar tráfego anormal. Essas ferramentas alertam automaticamente os administradores de segurança e levantam um problema no GitHub para atenção.

Possíveis casos de uso

Você faz parte de uma equipe central de desenvolvedores IaC que usa uma estratégia multicloud para a empresa fictícia Contoso. Você deseja implantar a infraestrutura de nuvem em uma nova zona de destino do Azure, usando DevSecOps para IaC para garantir a segurança e a qualidade das implantações. Você também deseja controlar e auditar todas as modificações na infraestrutura.

Colaboradores

Esse artigo é mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.

Principais autores:

  • Vito Chin | Arquiteto de Soluções em Nuvem Sênior
  • Yee Shian Lee | Arquiteta de Soluções em Nuvem Sênior

Próximas etapas