Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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 com os requisitos específicos da sua carga de trabalho.
Essa ideia de solução ilustra o pipeline DevSecOps que usa o GitHub para infraestrutura como código (IaC). Ele também descreve como controlar o fluxo de trabalho para excelência operacional, segurança e otimização de custos.
Terraform é uma marca comercial da Hashicorp. O uso desta marca não implica qualquer endosso.
Arquitetura
Transfira um ficheiro do Visio desta arquitetura.
Fluxo de dados
O seguinte fluxo de dados corresponde ao diagrama anterior:
Os programadores utilizam o desenvolvimento orientado por testes para verificar alterações de código para definições de infraestrutura, como templates IaC, nos repositórios do GitHub. Desenvolvem simultaneamente testes unitários, testes de integração e políticas como código (PaC) para testar a qualidade do IaC.
As solicitações pull acionam o teste de unidade automatizado por meio das Ações do GitHub.
Configure o processo de fluxo de trabalho GitHub Actions para testar o IaC usando estados e planos de infraestrutura gerados localmente.
Configure as Ações do GitHub para verificar se há problemas de qualidade de código e segurança. Analise usando as suas próprias consultas personalizadas do GitHub CodeQL ou outras ferramentas de segurança para analisar modelos IaC e detetar potenciais vulnerabilidades de segurança. Se uma vulnerabilidade for detetada, o GitHub enviará alertas para a organização ou para os proprietários e mantenedores do repositório.
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.
Quando é necessária uma atualização manual da infraestrutura, o administrador designado eleva o seu acesso para realizar as modificações. Após a modificação, o acesso elevado é removido. Você também deve registrar um problema do GitHub para reconciliação do IaC. As etapas e abordagens de reconciliação dependem das ferramentas específicas da IAC.
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.
Quando o sistema deteta uma anomalia, regista automaticamente um problema no GitHub para resolução.
Componentes
O GitHub é uma plataforma de hospedagem de código para controle de versão e colaboração. Nessa arquitetura, ele armazena modelos IaC e serve como repositório central para fluxos de trabalho de desenvolvimento, teste e governança.
O GitHub Actions é uma ferramenta de automação de integração contínua e implantação contínua (CI/CD) que permite que fluxos de trabalho criem, testem e implantem código diretamente dos repositórios do GitHub. Nessa arquitetura, o GitHub Actions automatiza testes de unidade, verificação de segurança e 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 deteção de vulnerabilidades para código armazenado no GitHub. Nessa arquitetura, ele aprimora a segurança do IaC verificando modelos e gerando alertas sobre configurações incorretas ou riscos.
CodeQL é um mecanismo de análise de código semântico que permite consultas personalizadas para detetar vulnerabilidades e configurações incorretas no código. Nessa arquitetura, o CodeQL verifica os artefatos do repositório para identificar possíveis problemas de segurança antes da implantação.
Observação
O CodeQL não suporta a digitalização nativa de todos os ficheiros IaC, como o Terraform. No entanto, pode usar o projeto comunitário CodeQL IaC Extractor ou alternativas como as oferecidas por fornecedores, como o Trivy da Aqua Security.
Terraform é uma ferramenta de automação de infraestrutura de código aberto desenvolvida pela HashiCorp que permite o provisionamento declarativo em ambientes de nuvem. Nessa arquitetura, o Terraform provisiona e modifica os recursos do Azure com base nas definições do IaC e dá suporte a fluxos de trabalho de desenvolvimento orientados a testes.
O Microsoft Defender for Cloud é uma plataforma de gerenciamento de segurança que fornece proteção contra ameaças em cargas de trabalho de nuvem híbrida. Nessa arquitetura, ele monitora continuamente a infraestrutura implantada em busca de vulnerabilidades.
O Microsoft Sentinel é uma solução de gerenciamento de eventos e informações de segurança (SIEM) e de orquestração de segurança (SOAR) nativa da nuvem que usa IA e análises para detetar e responder a ameaças. Nessa arquitetura, o Microsoft Sentinel monitora a atividade da infraestrutura e gera alertas ou problemas do GitHub quando anomalias são detetadas.
O Azure Policy é um serviço de governança que impõe regras e conformidade em todos os recursos do Azure. Nessa arquitetura, a Política do Azure valida implantações do 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 seu projeto estiver prestes a implantar uma máquina virtual que tenha uma SKU não reconhecida, a Política do Azure 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 dos recursos do Azure. Nessa arquitetura, o Azure Monitor deteta condições irregulares na infraestrutura e dispara alertas para que a triagem e a correção possam ser iniciadas.
Detalhes do cenário
DevSecOps para IaC é conceptualmente semelhante ao DevSecOps para código de aplicação no Azure Kubernetes Service (AKS). No entanto, é necessário um conjunto diferente de pipelines e ferramentas para gerir 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 do teste de IaC quando sua carga de trabalho é dimensionada. Você pode usar estados de configuração de infraestrutura local, como estados Terraform e planos para desenvolvimento orientado a testes. 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 mal configurada que expõe pontos para ataque após a implantação. Pode integrar ferramentas de análise de código estático como o Snyk ou o Aqua Security Trivy com o GitHub Advanced Security para analisar vulnerabilidades de segurança no código de infraestrutura. Esse processo é semelhante ao teste de segurança de aplicativos estáticos.
Quando a infraestrutura está implementada e operacional, a deriva de configuração na cloud pode ser difícil 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 permitem a configuração manual do ambiente. Se você precisar de configurações manuais, eleve o acesso para o administrador designado e, em seguida, remova o acesso elevado depois que a alteração for 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 as ferramentas SIEM para detetar tráfego anormal. Essas ferramentas alertam automaticamente os administradores de segurança e levantam um problema no GitHub.
Potenciais casos de utilização
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 aterrissagem do Azure usando DevSecOps for IaC para ajudar a garantir a segurança e a qualidade das implantações. Você também deseja acompanhar e auditar todas as modificações na infraestrutura.
Contribuidores
A Microsoft mantém este artigo. Os seguintes colaboradores escreveram este artigo.
Principais autores:
- Vito Chin - Brasil | Arquiteto de Soluções Cloud Sênior
- Yee Shian Lee - Brasil | Arquiteto de Soluções Cloud Sênior
Para ver perfis não públicos do LinkedIn, faça login no LinkedIn.
Próximos passos
- Considere as ferramentas de IaC preferidas para usar no DevSecOps e certifique-se de que elas vêm com extensões para executar a verificação de segurança do IaC.
- Considere a linguagem ou os modelos IaC preferidos, Bicep ou Terraform no Azure.
- O guia do GitHub para organizações
- Usar ações do GitHub para se conectar ao Azure
- Ações do GitHub
- O que queremos dizer com conformidade com Zero Trust?
- AzOps para modelos do Azure Resource Manager
- Módulo e soluções de zonas de aterragem Terraform
- Introdução ao IaC usando Bicep