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. Os desenvolvedores usam 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. Eles desenvolvem testes de unidade, testes de integração e PaC (política como código) simultaneamente 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 gerados localmente.

  4. Configure o GitHub Actions para verificar se há problemas de qualidade e segurança de código. Examine usando suas próprias consultas personalizadas do GitHub CodeQL ou outras ferramentas de segurança 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 administrador designado eleva seu acesso 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 o sistema detecta uma anomalia, ele registra automaticamente um problema do GitHub para resolução.

Componentes

  • O GitHub é uma plataforma de hospedagem de código para controle de versão e colaboração. Nessa arquitetura, ela armazena modelos de IaC e serve como o repositório central para fluxos de trabalho de desenvolvimento, teste e governança.

  • O GitHub Actions é uma ferramenta de automação de CI/CD (integração contínua e implantação contínua) que permite que os fluxos de trabalho criem, testem e implantem código diretamente dos repositórios do GitHub. Nessa arquitetura, o GitHub Actions automatiza o teste de unidade, a verificação de segurança e o provisionamento de infraestrutura para pipelines de IaC.

  • O GitHub Advanced Security é um conjunto de recursos de segurança que inclui análise estática e detecção de vulnerabilidades para código armazenado no GitHub. Nessa arquitetura, ele aprimora a segurança de IaC verificando modelos e levantando alertas sobre configurações incorretas ou riscos.

  • CodeQL é um mecanismo de análise de código semântico que permite que consultas personalizadas detectem vulnerabilidades e configurações incorretas no código. Nessa arquitetura, o CodeQL verifica artefatos do repositório para identificar possíveis problemas de segurança antes da implantação.

    Observação

    O CodeQL não oferece suporte nativamente à análise de todos os arquivos de IaC, como os do Terraform. No entanto, você pode usar o projeto da comunidade do Extrator IaC do CodeQL ou alternativas fornecidas pelo fornecedor, como o Trivy do Aqua Security.

  • O Terraform é uma ferramenta de automação de infraestrutura de software livre desenvolvida pela HashiCorp que permite o provisionamento declarativo em ambientes de nuvem. Nessa arquitetura, o Terraform provisiona e modifica recursos do Azure com base em definições de IaC e dá suporte a fluxos de trabalho de desenvolvimento controlados por teste.

  • O Microsoft Defender para Nuvem é uma plataforma de gerenciamento de segurança que fornece proteção contra ameaças em cargas de trabalho de nuvem híbrida. Nessa arquitetura, ela monitora continuamente a infraestrutura implantada em busca de vulnerabilidades.

  • O Microsoft Sentinel é uma solução de SIEM (gerenciamento de eventos e informações de segurança nativa na nuvem) e uma solução soar (resposta automatizada de orquestração de segurança) que usa IA e análise para detectar e responder a ameaças. Nessa arquitetura, o Microsoft Sentinel monitora a atividade de infraestrutura e gera alertas ou problemas do GitHub quando anomalias são detectadas.

  • O Azure Policy é um serviço de governança que impõe regras e conformidade entre recursos do Azure. Nessa arquitetura, o Azure Policy valida as implantações de IaC em relação aos padrões organizacionais e de carga de trabalho e bloqueia configurações não compatíveis. 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ê e interromperá a implantação.

  • O Azure Monitor é uma plataforma de telemetria e observabilidade que coleta métricas de desempenho e logs de atividades de recursos do Azure. Nessa arquitetura, o Azure Monitor detecta condições irregulares na infraestrutura e dispara alertas para que a triagem e a correção possam ser iniciadas.

Detalhes do cenário

O DevSecOps para IaC é conceitualmente semelhante ao DevSecOps para código do aplicativo no AKS (Serviço de Kubernetes do Azure). No entanto, 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 Snyk ou o Aqua Security Trivy, ao GitHub Advanced Security 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 está operacional, o desvio de configuração da nuvem pode ser complexo 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