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 da solução ilustra o pipeline DevSecOps que usa o GitHub para iac (infraestrutura como código). Ele também descreve 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

O fluxo de dados a seguir corresponde ao diagrama anterior:

  1. Use o desenvolvimento controlado por teste para verificar as alterações de código para definições de infraestrutura, como modelos de IaC, em repositórios do GitHub. Você desenvolve testes de unidade, testes de integração e PaC (política como código) ao mesmo tempo para testar a qualidade da IaC.

  2. As solicitações de pull disparam testes de unidade automatizados por meio do GitHub Actions.

  3. Configure o processo de fluxo de trabalho do GitHub Actions para testar a IaC usando estados e planos de infraestrutura implantados localmente.

  4. Configure o GitHub Actions para verificar se há problemas de qualidade e segurança de código. Crie suas próprias consultas personalizadas do GitHub CodeQL para analisar modelos de IaC e detectar possíveis vulnerabilidades de segurança. 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 o tamanho, a 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. Você também deve registrar em log um Problema do GitHub para reconciliação da IaC. As etapas e abordagens de reconciliação dependem das ferramentas de IaC específicas.

  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 do GitHub é registrado automaticamente para que possa ser resolvido.

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 build e lançamento que abrange integração contínua, 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 de SIEM (gerenciamento de eventos e informações de segurança nativa da nuvem) e uma solução SOAR (resposta automatizada de orquestração de segurança). 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 as equipes a gerenciar e evitar problemas de TI usando definições de política que podem impor regras para recursos de nuvem. Por exemplo, se o projeto estiver prestes a implantar uma máquina virtual que tenha uma SKU não reconhecida, o Azure Policy alertará você 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 IaC é semelhante ao DevSecOps para código do aplicativo no AKS (Serviço de Kubernetes do Azure). 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 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 desenvolvimento controlado por teste. 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.

O PaC é outro método importante para fornecer infraestrutura que esteja em conformidade com as regulamentações e a 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 infraestrutura configurada incorretamente que expõe pontos de ataque após a implantação. Você pode integrar ferramentas de análise de código estático, como o Synk ou o Aqua Security tfsec usando o CodeQL do GitHub para verificar as vulnerabilidades de segurança no código de infraestrutura. Esse processo é semelhante ao teste de segurança de aplicativo estático.

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. Se você precisar de configurações manuais, eleve o acesso para o administrador designado e remova o acesso elevado após a alteração ser feita. Você deve configurar o Azure Monitor para gerar um problema do GitHub para que os desenvolvedores possam reconciliar as alterações. Evite a configuração manual, se possível.

É importante monitorar continuamente o ambiente de nuvem em busca de ameaças e vulnerabilidades para ajudar a evitar incidentes de segurança. Você pode usar a proteção contra ameaças e ferramentas SIEM para detectar tráfego anormal. Essas ferramentas alertam automaticamente os administradores de segurança e geram um problema do GitHub.

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 o DevSecOps para IaC para ajudar a garantir a segurança e a qualidade das implantações. Você também deseja controlar e auditar todas as modificações na infraestrutura.

Colaboradores

A Microsoft mantém este artigo. Os colaboradores a seguir escreveram este artigo.

Principais autores:

  • Vito Chin | Arquiteto sênior de soluções de nuvem
  • Yee Shian Lee | Arquiteto sênior de soluções de nuvem

Para ver perfis não públicos no LinkedIn, entre no LinkedIn.

Próximas etapas