Incorporar segurança de Confiança Zero no seu fluxo de trabalho de desenvolvimento

Como desenvolvedor, você precisa se sentir confiante e seguro para se mover em velocidade. A necessidade de segurança começa assim que você clona seu código. Neste artigo, você vai aprender a desenvolver seguindo os princípios de Confiança Zero, para que possa inovar de forma rápida e segura. A estratégia e a abordagem de segurança da Confiança Zero para projetar e implementar aplicativos abrangem os seguintes princípios:

  • Verificar explicitamente. Sempre autenticar e autorizar com base em todos os pontos de dados disponíveis.
  • Usar o acesso com privilégios mínimos. Limite o acesso do usuário com JIT/JEA (Just-In-Time e Just-Enough-Access), políticas adaptáveis baseadas em risco e proteção de dados.
  • Pressuposição de violação. Minimize o raio de alcance e segmente o acesso. Verifique a criptografia de ponta a ponta e use a análise para obter visibilidade, promover a detecção de ameaças e melhorar as defesas.

A incorporação de segurança ao seu fluxo de trabalho ajuda você a:

  • Identifique vulnerabilidades de segurança mais rapidamente.
  • Forneça ferramentas de desenvolvedor mais seguras.
  • Crie conexões para melhorar a colaboração entre as equipes de segurança e desenvolvimento.

Inove e proteja seu fluxo de trabalho ao programar

A solução unificada da Microsoft, ilustrada no diagrama a seguir, faz a ponte entre as equipes de DevOps e SecOps para ajudá-lo a acelerar e proteger o desenvolvimento de código para nuvem.

O diagrama mostra as tecnologias que compõem a solução unificada de desenvolvimento de código para nuvem.

Nossa solução para proteger o DevOps depende de dois componentes principais: fornecer aos desenvolvedores ferramentas para impulsionar a inovação e proteger o fluxo de trabalho do desenvolvedor à medida que os desenvolvedores criam código. Assista à sessão Acelere e proteja seu código para o desenvolvimento na nuvem do Microsoft Build 2022 para saber como esses componentes podem proteger seu ambiente de desenvolvimento.

Implemente as seguintes práticas recomendadas que funcionam juntas no Azure e no GitHub para proteger sua solução de desenvolvimento.

  • Como a segurança começa quando os desenvolvedores clonam o código, habilite o DevSecOps com o Azure e o GitHub para unir as equipes de DevOps e SecOps e proteger seus ambientes de desenvolvimento.
  • Forneça ferramentas de desenvolvedor flexíveis e poderosas para qualquer desenvolvedor, linguagem e pilha com o Visual Studio e o Visual Studio Code.
  • Simplifique a integração e a colaboração de novos desenvolvedores com uma ferramenta completa de ciclo de vida de desenvolvimento na nuvem usando o GitHub Codespaces e o Computador de Desenvolvimento da Microsoft.
  • Inclua proteção de propriedade intelectual interna para código que você não dispersa mais em vários locais. Ajude suas equipes a colaborar, desenvolver, automatizar e implantar código onde quiserem com o GitHub Actions e o Azure Pipelines.
  • Obtenha diretrizes de segurança e feedback de segurança contínuo dentro do fluxo de trabalho do desenvolvedor com escaneamento de código, escaneamento secreto e análise de dependências usando o GitHub Advanced Security.
  • Instale a segurança com confiança zero em toda a sua organização usando serviços de gerenciamento de identidade no Microsoft Entra ID.

Encaixe a segurança Confiança Zero no seu ciclo de vida de desenvolvimento

Desde a etapa de pré-commit até o commit, passando pela implantação, operação e monitoramento, é essencial contar com soluções de segurança implementadas em todas as fases do ciclo de vida do desenvolvimento.

Estágio de pré-commit

  • Modelagem de ameaças
  • Plug-in de segurança IDE
  • Ganchos de pré-commit
  • Padrões de codificação seguros
  • Revisão em pares

Oitenta e cinco por cento dos defeitos nos códigos aparecem durante a fase de pré-commit do desenvolvimento, em grande parte devido a erros humanos. Concentre-se na segurança antes de confirmar seu código escrevendo seu código no Visual Studio Code, Visual Studio ou GitHub Codespaces para identificar vulnerabilidades e proteger o código. Utilize revisões de pares para incentivar práticas de codificação seguras.

Estágio de confirmação (CI)

  • Análise de código estático
  • Testes de unidade de segurança
  • Gerenciamento de dependência
  • Exame de credenciais

Durante o estágio de confirmação, utilize métodos de segurança abrangentes para revisar seu código (incluindo análise de código estático) e digitalizar seu código à medida que você o verifica no seu controle de origem. Use a varredura de credenciais (também conhecida como varredura de segredos ou varredura de tokens) para detectar credenciais que possam ser introduzidas por engano no repositório de código. Detecte dependências inseguras antes de apresentá-las ao seu ambiente com a revisão de dependências.

Estágio de implantação (CD)

  • Verificação de infraestrutura como código (IaC)
  • Varredura de segurança dinâmica
  • Verificações de configuração de nuvem
  • Testes de aceitação de segurança

Durante o estágio de implantação, examine a integridade geral de sua base de código e execute uma verificação de segurança de alto nível para identificar riscos. Execute verificações de configuração de nuvem, verificações de código de infraestruturas e testes de aceitação de segurança para garantir o alinhamento com as metas de segurança da organização.

Operar e monitorar o estágio

  • Monitoramento contínuo
  • Inteligência contra ameaças
  • Análise post-mortem sem culpa

Durante a fase de operação e monitoramento, use o monitoramento contínuo e a inteligência contra ameaças para atenuar as vulnerabilidades de dependências que você pode herdar com o tempo. Realize post-mortems para tirar lições aprendidas e continuar iterando ao longo do seu ciclo de DevOps.

Implementar varredura de dependência, código e segredo

Para facilitar a proteção do código para os desenvolvedores, utilize recursos nativos e automatizados para fornecer feedback contínuo com recursos de segurança contínuos durante todo o ciclo de vida do desenvolvimento. Forneça segurança geral para desenvolvedores e comunidades com a varredura de dependências do GitHub Advanced Security, a varredura de código e a varredura secreta.

Verificação de dependência

  • Revisão integrada das dependências
  • Alertas e atualizações de segurança

Obtenha níveis de risco de dependências e correções automatizadas para dependências vulneráveis em sua base de código com a verificação contínua de dependências. Como um processo contínuo, isso orienta seus desenvolvedores de forma amigável e discreta.

Varredura de código

  • Estrutura extensível para varredura de código
  • Integrado ao fluxo de trabalho do desenvolvedor
  • Apoiado pelo motor CodeQL líder do setor

Implemente a verificação de código ao gerar código sem nenhuma outra etapa para executar em locais separados. Facilite as correções no início do ciclo de vida de desenvolvimento exibindo os resultados da varredura na sua experiência de usuário familiar do GitHub.

Verificação de segredo

  • Varredura de segredos vazados em repositórios públicos e privados
  • Parceria com 40+ fornecedores
  • Proteção por push
    • Passar da correção para a prevenção
    • Verifique se há segredos de alta confiança
    • Habilite a proteção com apenas um clique

Verifique seu código em busca de credenciais e tokens codificados com a verificação de segredos. Envie varreduras de proteção para segredos e tokens antes de enviar por push para sua base de código. Verifique se há segredos de alta confiança à medida que os desenvolvedores enviam código, bloqueando o push quando o GitHub identifica um segredo.

Gerenciar e proteger identidades de carga de trabalho

  • Gerenciamento do ciclo de vida
  • Governança de acesso
  • Acesso adaptável seguro

Obtenha visibilidade da atividade de suas identidades de carga de trabalho e habilite a limpeza periódica. Determine quem possui identidades de carga de trabalho e como você mantém essas informações atualizadas em todas as alterações da organização. Acompanhe quando você usou identidades de carga de trabalho pela última vez, quando emitiu tokens pela última vez e quando os tokens expiram.

Para reduzir o potencial de vazamento de segredos e credenciais, realize revisões de acesso periodicamente. Exija que os usuários revisna suas identidades de carga de trabalho e removam privilégios de acesso desnecessários. Fazer com que os usuários relatem privilégios de acesso superprivilegiados e subutilizados. Discuta sobre como você protege identidades de carga de trabalho contra violações. Habilite o acesso condicional para garantir que o acesso seja originado dos recursos esperados.

Identidades seguras com o GitHub OIDC e a Federação de ID de Carga de Trabalho do Microsoft Entra

Para proteger ainda mais sua organização, use o GitHub OpenID Connect (OIDC) com Identidades de carga de trabalho do Microsoft Entra e minimize a necessidade de armazenar e acessar segredos. Gerencie com segurança os segredos da entidade de segurança do servidor do Azure e outros recursos de credenciais de nuvem de longa duração para minimizar o tempo de inatividade do serviço devido a credenciais expiradas. Integre-se a plataformas de desenvolvedor, como o GitHub Actions, para criar seus aplicativos com segurança.

Nosso fluxo de trabalho recomendado de Federação de Identidade de Carga de Trabalho, ilustrado no diagrama a seguir, compreende seis etapas.

O diagrama ilustra as etapas de fluxo de trabalho da Federação de Identidade de Carga de Trabalho.

  1. Configure a confiança na ID do Microsoft Entra e solicite um token.
  2. Configure o fluxo de trabalho do GitHub para permitir que as ações obtenham o token.
  3. O fluxo de trabalho do GitHub envia uma solicitação para a ID do Azure.
  4. O Microsoft Entra ID valida a confiança no aplicativo e busca as chaves para validar o token.
  5. O Microsoft Entra ID acessa e emite o token.
  6. A ação de implantação utiliza o token de acesso do Microsoft Entra para implantar em recursos no Azure.

Assista April Edwards, Senior Cloud Advocate e DevOps Practice Lead, demonstrar o fluxo de trabalho da Federação de Identidades de Carga de Trabalho. A demonstração começa aos 19:14 minutos da sessão do Microsoft Build 2022, Acelere e proteja seu desenvolvimento de códigos na nuvem.

Próximas etapas

  • Inscreva-se para a Azure Developer CLI, uma ferramenta de código aberto que acelera o tempo necessário para começar a usar o Azure.
  • Configure o Azure para confiar no OIDC do GitHub como uma identidade federada. O OpenID Connect (OIDC) permite que seus fluxos de trabalho do GitHub Actions acessem recursos no Azure sem precisar armazenar as credenciais do Azure como segredos do GitHub de longa duração.
  • Implemente os princípios da Confiança Zero conforme descrito no memorando 22-09 (em apoio à ordem executiva dos EUA 14028, Melhorando a segurança cibernética do país) usando o Microsoft Entra ID como um sistema centralizado de gerenciamento de identidade.
  • Acelere e proteja seu código com o Azure DevOps com ferramentas que oferecem aos desenvolvedores a experiência de codificação mais rápida e segura para a nuvem.
  • O artigo Proteger o ambiente dos desenvolvedores ajuda você a implementar princípios de Confiança Zero nos seus ambientes de desenvolvimento com boas práticas de privilégio mínimo, segurança de branch e ferramentas, extensões e integrações confiáveis.
  • Ambientes DevOps seguros para Confiança Zero descreve as práticas recomendadas para proteger seus ambientes DevOps e evitar que hackers comprometam computadores de desenvolvimento, infectem pipelines de lançamento com scripts maliciosos e tenham acesso a dados de produção por meio de ambientes de teste.
  • Personalizar tokens descreve as informações que você pode receber nos tokens do Microsoft Entra. Esse artigo explica como personalizar tokens para melhorar a flexibilidade e o controle, aumentando a segurança de confiança zero do aplicativo com privilégios mínimos.
  • Configurar declarações de grupo e funções de aplicativo em tokens mostra como configurar seus aplicativos com definições de função de aplicativo e atribuir grupos de segurança a funções de aplicativo. Esses métodos ajudam a melhorar a flexibilidade e o controle, aumentando a segurança de confiança zero do aplicativo com privilégios mínimos.