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

Serviços de DevOps do Azure | Azure DevOps Server 2022 | Azure DevOps Server 2020

Os 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.

Agentes separados para cada projeto

Um agente pode ser vinculado a apenas um pool. Talvez você queira 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, ela pode permitir movimentos laterais.

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

Usar contas com privilégios baixos para executar agentes

É tentador, mas perigoso, executar o agente sob 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 sob uma identidade apoiada pela ID do Microsoft Entra, 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 não privilegiada, como Serviço de Rede.

O Azure DevOps tem um grupo chamado erroneamente de Contas de Serviço de Coleta de Projetos. Por herança, os membros das Contas de Serviço de Coleta de Projetos também são membros dos Administradores de Coleção de Projetos. Às vezes, os clientes executam seus agentes de compilação usando uma identidade apoiada pela ID do Microsoft Entra e que é membro das Contas de Serviço de Coleta de Projetos. Se os adversários executarem um pipeline em um desses agentes de compilação, eles poderão assumir toda a organização do Azure DevOps.

Também vimos agentes auto-hospedados serem executados em contas altamente privilegiadas. Muitas vezes, 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 compilação, eles poderão acessar esses segredos. Em seguida, os adversários podem mover-se lateralmente através de outros sistemas que são acessíveis através dessas contas.

Para manter seus sistemas seguros, use a conta com privilégios mais baixos para executar agentes auto-hospedados. Por exemplo, use sua conta de máquina ou uma identidade de serviço gerenciado. Permita que o Azure Pipelines gerencie 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 a federação de identidade 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, Open ID Connect (OIDC), para facilitar a autenticação entre o Azure e o Azure DevOps e não usa segredos.

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

Quando você cria uma nova conexão de serviço do Azure Resource Manager, sempre selecione um grupo de recursos. Certifique-se de que seu grupo de recursos contenha apenas as VMs ou recursos que a compilação exige. Da mesma forma, ao configurar o aplicativo GitHub, conceda acesso somente aos repositórios que deseja criar usando o Azure Pipelines.

Próximos passos

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