Compartilhar via


Como proteger o Azure Pipelines

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020

O Azure Pipelines apresenta desafios de segurança distintos . Embora os pipelines permitam executar scripts ou implantar código em ambientes de produção, é crucial evitar que eles se tornem canais para códigos mal-intencionados. Equilibrar a segurança com a flexibilidade e o poder necessários para as equipes de desenvolvimento é essencial.

Observação

O Azure Pipelines faz parte de um pacote de Azure DevOps Services, todos criados em uma infraestrutura segura no Azure. Para obter uma compreensão abrangente dos conceitos de segurança em todos Azure DevOps Services, recomendamos exibir os seguintes recursos:

Tradicionalmente, as organizações reforçam a segurança por meio de bloqueios rígidos. Código, pipelines e ambientes de produção enfrentam severas restrições de acesso. Embora essa abordagem funcione bem em pequenas organizações com usuários e projetos limitados, as organizações maiores enfrentam uma realidade diferente. Com vários colaboradores tendo acesso ao código, o princípio de 'assumir violação' torna-se crucial. Envolve operar como se um adversário possuísse acesso de colaborador aos repositórios, necessitando de maior vigilância.

Para atingir as metas de segurança, considere os seguintes pontos:

  • Impedir a execução de código mal-intencionado:

    • Verifique se os pipelines estão configurados para impedir a execução não autorizada de código mal-intencionado, o que inclui as seguintes tarefas:
      • Restrinja o acesso a segredos e credenciais confidenciais.
      • Valide parâmetros de entrada e argumentos para evitar comportamento não intencional.
      • Revise e audite regularmente os scripts de pipeline em busca de possíveis riscos de segurança.
      • Implemente práticas de segurança como:
        • Use consultas parametrizadas em scripts para evitar a injeção de SQL.
        • Escape de caracteres especiais em argumentos para evitar a injeção de comando shell.
        • Limite as permissões para conexões de serviço de pipeline.
    • Considere o uso de pipelines YAML, que fornecem controle refinado sobre a execução e são menos propensos a riscos de segurança.
  • Mitigar a exposição lateral:

    • Isole pipelines para evitar o movimento lateral dentro dos projetos e repositórios da sua organização.
    • Limite o acesso apenas aos repositórios e recursos necessários para cada pipeline.
    • Monitore a atividade do pipeline e configure alertas para comportamentos suspeitos.
    • Revise e atualize as permissões para minimizar a exposição regularmente.
  • Use pipelines YAML:

    • Os pipelines YAML oferecem as seguintes vantagens em termos de segurança:
      • Defina explicitamente as etapas e dependências do pipeline.
      • Controle de versão para definições de pipeline.
      • Visibilidade clara da configuração do pipeline.
      • Risco reduzido de configurações incorretas acidentais.
      • Revisão de código e solicitações de pull:
        • Trate pipelines YAML como qualquer outro código.
        • Imponha solicitações de pull para mesclar alterações para evitar etapas mal-intencionadas.
        • Use políticas de branch para configurar esse processo de revisão.
      • Gerenciamento de acesso a recursos:
      • Parâmetros de tempo de execução:
    • Considere migrar pipelines existentes para o formato YAML para melhorar a segurança e a capacidade de manutenção.

A segurança é um processo contínuo e avaliações e atualizações regulares são essenciais. Os pipelines YAML oferecem a melhor segurança para o Azure Pipelines.

Os artigos a seguir descrevem recomendações para ajudá-lo a desenvolver um pipeline seguro baseado em YAML: