Como proteger o Azure Pipelines

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

O Azure Pipelines apresenta desafios de segurança exclusivos. Você pode usar um pipeline para executar scripts ou implantar código em ambientes de produção. Mas você deseja garantir que seus pipelines de CI/CD não se tornem caminhos para executar código mal-intencionado. E também que apenas o código que pretende implantar seja implantado. A segurança deve ser balanceada, dando às equipes a flexibilidade e o poder necessários para executar seus pipelines.

Observação

O Azure Pipelines é um dos itens da coleção do Azure DevOps Services, em que todos os itens foram criados na mesma infraestrutura segura no Azure. Para entender os principais conceitos sobre segurança para todos os Azure DevOps Services, confira Visão geral da Proteção de Dados do Azure DevOps e Segurança e Identidade do Azure DevOps.

Tradicionalmente, as organizações implementavam a segurança por meio de bloqueios draconianos. Ambientes de produção, pipelines e código tinham severas restrições de acesso e uso. Em organizações pequenas com poucos usuários e projetos, essa postura era relativamente fácil de gerenciar. No entanto, esse não é o caso em organizações maiores. Quando muitos usuários têm acesso de colaborador ao código, é necessário "presumir a violação". Pressupor uma violação significa comportar-se como se um adversário tivesse acesso de contribuidor a alguns (se não todos) dos repositórios.

O objetivo, nesse caso, é impedir que o adversário execute código mal-intencionado no pipeline. O código mal-intencionado pode roubar segredos ou corromper ambientes de produção. Outra meta é evitar a exposição lateral a outros projetos, pipelines e repositórios do pipeline comprometido.

Os pipelines YAML oferecem a melhor segurança para o Azure Pipelines. Em contraste com pipelines clássicos de build e lançamento, os pipelines YAML:

  • Podem passar por revisão de código. Os pipelines YAML não são diferentes de qualquer outra parte do código. Você pode evitar que atores mal-intencionados introduzam etapas mal-intencionadas em seus pipelines aplicando o uso de solicitações de pull para mesclar alterações. As políticas de branch facilitam a configuração.
  • Fornecem gerenciamento de acesso a recursos. Os proprietários de recursos decidem se um pipeline YAML pode acessar um recurso ou não. Esse recurso de segurança controla ataques como roubo a outro repositório. Aprovações e verificações fornecem controle de acesso para cada execução de pipeline.
  • Oferecem suporte a parâmetros de tempo de execução. Os parâmetros de tempo de execução ajudam a evitar uma série de problemas de segurança relacionados a variáveis, como Injeção de Argumento.

Esta série de artigos descreve recomendações para ajuda você a montar um pipeline seguro de CI/CD baseado em YAML. Ela também abrange os locais onde você pode fazer compensações entre segurança e flexibilidade. A série também pressupõe familiaridade com Azure Pipelines, os principais constructos de segurança do Azure DevOps e o Git.

Tópicos abordados: