Recomendações para proteger a infraestrutura compartilhada no Azure Pipelines

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

Recursos protegidos no Azure Pipelines são uma abstração da infraestrutura real. Siga estas recomendações para proteger a infraestrutura subjacente.

Usar pools hospedados pela Microsoft

Os pools hospedados pela Microsoft oferecem isolamento e uma máquina virtual limpa para cada execução de um pipeline. Se possível, use pools hospedados pela Microsoft em vez de pools auto-hospedados.

Separar agentes para cada projeto

Um agente pode ser associado a apenas um pool. Talvez seja conveniente compartilhar agentes entre projetos compartilhando o pool com vários projetos. Em outras palavras, vários projetos podem executar trabalhos no mesmo agente, um após o outro. Embora essa prática economize custos de infraestrutura, pode permitir movimentação lateral.

Para eliminar essa forma de movimentação lateral e evitar que um projeto "envenene" um agente de outro projeto, mantenha pools de agentes separados com agentes separados para cada projeto.

Usar contas de baixo privilégio para executar agentes

É tentador, mas perigoso, executar o agente com uma identidade que possa acessar diretamente os recursos do Azure DevOps. Essa configuração problemática é comum em organizações que usam o Microsoft Entra ID. Se você executar o agente em uma identidade apoiada pelo Microsoft Entra ID, ele poderá acessar diretamente as APIs do Azure DevOps sem usar o token de acesso do trabalho. Em vez disso, você deve executar o agente como uma conta local sem privilégios, como Serviço de Rede.

O Azure DevOps tem um grupo chamado incorretamente de Contas de Serviço de Coleção de Projetos. Por herança, os membros das Contas de Serviço de Coleção de Projetos também são membros de Administradores de Coleção de Projetos. Os clientes às vezes executam seus agentes de build usando uma identidade que é apoiada pelo Microsoft Entra ID e que é membro das contas de derviço de coleção de projetos. Se adversários executarem um pipeline em um desses agentes de build, eles poderão assumir toda a organização do Azure DevOps.

Também vimos agentes auto-hospedados serem executados em contas com privilégios elevados. Geralmente, esses agentes usam contas privilegiadas para acessar segredos ou ambientes de produção. Mas se os adversários executarem um pipeline comprometido em um desses agentes de build, eles poderão acessar esses segredos. Eles poderão então se mover lateralmente por meio de outros sistemas acessíveis por meio dessas contas.

Para manter seus sistemas seguros, use a conta com os privilégios mais baixos para executar agentes auto-hospedados. Por exemplo, use sua conta de computador ou uma identidade de serviço gerenciado. Deixe o Azure Pipelines gerenciar o acesso a segredos e ambientes.

Minimizar o escopo das conexões de serviço

As conexões de serviço devem ser capazes de acessar apenas os recursos necessários. Se possível, use federação de identidades de carga de trabalho em vez de uma entidade de serviço para sua conexão de serviço do Azure. A federação de identidades de carga de trabalho usa uma tecnologia padrão do setor, o Open ID Connect (OIDC), para facilitar a autenticação entre o Azure e o Azure DevOps enão usa segredos.

Sua conexão de serviço do Azure deve ter como escopo os recursos que a sua conexão de serviço precisa acessar. Os usuários não devem ter direitos amplos de colaborador para toda a assinatura do Azure.

Ao criar uma nova conexão de serviço do Azure Resource Manager, sempre selecione um grupo de recursos. Verifique se o grupo de recursos contém apenas as VMs ou os recursos exigidos pelo build. Da mesma forma, ao configurar o aplicativo GitHub, conceda acesso somente aos repositórios que você deseja compilar usando o Azure Pipelines.

Próximas etapas

Considere algumas recomendações gerais de segurança.