Partilhar via


Azure Pipelines - Atualização do Sprint 227

Caraterísticas

Federação de identidade de carga de trabalho no Azure Pipelines (visualização pública)

Deseja parar de armazenar segredos e certificados em conexões de serviço do Azure? Quer parar de se preocupar em renovar esses segredos sempre que eles expiram? Agora estamos anunciando uma pré-visualização pública da Federação de Identidade de Carga de Trabalho para as conexões de serviço do Azure. A Federação de Identidade de Carga de Trabalho usa uma tecnologia padrão do setor, Open ID Connect (OIDC), para simplificar a autenticação entre Azure Pipelines e Azure. Em vez de segredos, é utilizado um requerente de federação para facilitar esta autenticação.

Como parte desse recurso, a conexão de serviço do Azure (ARM) foi atualizada com outro esquema para dar suporte à federação de identidades de carga de trabalho. Isso permite que as tarefas de Pipeline que usam a conexão de serviço do Azure se autentiquem usando um assunto de federação (sc://<org>/<project>/<service connection name>). Os principais benefícios da utilização deste esquema em relação aos sistemas de autenticação existentes são os seguintes:

  • Gerenciamento simplificado: você não pode mais gerar, copiar e armazenar segredos de entidades de serviço no Azure AD para o Azure DevOps. Os segredos usados em outros esquemas de autenticação de conexões de serviço do Azure (por exemplo, entidade de serviço) expiram após um determinado período (dois anos atualmente). Quando expiram, os oleodutos falham. Você tem que regenerar um novo segredo e atualizar a conexão de serviço. Mudar para a federação de identidades de carga de trabalho elimina a necessidade de gerenciar esses segredos e melhora a experiência geral de criação e gerenciamento de conexões de serviço.
  • Segurança aprimorada: com a federação de identidades de carga de trabalho, não há nenhum segredo persistente envolvido na comunicação entre o Azure Pipelines e o Azure. Como resultado, as tarefas executadas em trabalhos de pipeline não podem vazar dados ou exfiltrar segredos com acesso aos seus ambientes de produção. Esta tem sido muitas vezes uma preocupação para os nossos clientes.

Você pode aproveitar esses recursos de duas maneiras:

  • Use o novo esquema de federação de identidade de carga de trabalho sempre que criar uma nova conexão de serviço do Azure. No futuro, este será o mecanismo recomendado.
  • Converta suas conexões de serviço existentes do Azure (que são baseadas em segredos) para o novo esquema. Você pode executar essa conversão uma conexão de cada vez. O melhor de tudo é que você não precisa modificar nenhum dos pipelines que usam essas conexões de serviço. Eles aplicarão automaticamente o novo esquema assim que você concluir a conversão.

Para criar uma nova conexão de serviço do Azure usando a federação de identidades de carga de trabalho, basta selecionar Federação de identidades de carga de trabalho (automática) ou (manual) na experiência de criação de conexão de serviço do Azure:

 Captura de ecrã do recurso.

Captura de tela da federação de identificação.

Para converter uma conexão de serviço do Azure criada anteriormente, selecione a ação "Converter" depois de selecionar a conexão:

 Screenshot do convert.

Todas as tarefas do Azure incluídas no Azure Pipelines agora dão suporte a esse novo esquema. No entanto, se você estiver usando uma tarefa do Marketplace ou uma tarefa personalizada interna para implantar no Azure, talvez ela ainda não ofereça suporte à federação de identidades de carga de trabalho. Nesses casos, pedimos que você atualize sua tarefa para dar suporte à federação de identidades de carga de trabalho para melhorar a segurança. Uma lista completa das tarefas suportadas pode ser encontrada aqui.

Para esta visualização, damos suporte à federação de identidade de carga de trabalho somente para conexões de serviço do Azure. Esse esquema não funciona com nenhum outro tipo de conexão de serviço. Consulte os nossos documentos para mais detalhes.

Esta postagem no blog contém mais detalhes.

Os agentes de pipeline podem ser registrados usando o Microsoft Entra ID em vez de um PAT

O agente de pipeline agora oferece suporte a mais argumentos para usar um Principal do Serviço ou um utilizador para registrar um agente. Você deve conceder à identidade usada acesso ao grupo de agentes nas suas configurações de segurança. Isso elimina a necessidade de usar um token de acesso pessoal (PAT) para a configuração única de agentes.

Registrar um agente usando uma entidade de serviço

Para usar uma Entidade de Serviço para registrar um agente de Pipelines com os Serviços de DevOps do Azure, forneça os seguintes argumentos:

--auth 'SP' --clientid 00001111-aaaa-2222-bbbb-3333cccc4444 --clientsecret --tenantid aaaabbbb-0000-cccc-1111-dddd2222eeee

Usar um Principal de Serviço na extensão de VM do agente

As VMs do Azure podem ser incluídas em Grupos de Implantação usando uma Extensão de VM. A extensão VM foi atualizada para usar uma entidade de serviço em vez de uma PAT para registrar o agente:

"settings": {
  "userServicePrincipal": true     
}
"protectedSettings": {
  "clientId": "[parameters('clientId')]"      
  "clientSecret": "[parameters('clientSecret')]"      
  "tenantId": "[parameters('tenantId')]"      
}

Registrar um agente interativamente usando o fluxo de código do dispositivo

Você pode usar um navegador da Web para concluir facilmente a configuração. Ao executar o script de configuração do agente, digite "AAD" para o tipo de autenticação. O script irá guiá-lo através das próximas etapas, incluindo onde ir na Web e qual código inserir. Depois de inserir o código na Web, retorne ao console para concluir a configuração do agente.

 Captura de tela do fluxo de autenticação.

APIs REST para ambientes

Um ambiente é uma coleção de recursos que se pode direcionar com implementações de um pipeline. Os ambientes fornecem histórico de implementações, rastreabilidade de itens de trabalho e commits, além de mecanismos de controle de acesso.

Sabemos que você deseja criar ambientes programaticamente, por isso publicamos documentação para sua API REST.

Impedir execuções não intencionais de pipelines

Hoje, se o seu pipeline YAML não especificar uma seção trigger, executa-se para quaisquer alterações introduzidas no seu repositório. Isso pode criar confusão sobre por que um pipeline foi executado e levar a muitas execuções não intencionais.

Adicionamos uma configuração de Pipelines no nível da organização e do projeto chamada Desabilitar gatilho YAML CI implícito que permite alterar esse comportamento. Você pode optar por não acionar pipelines se sua seção de gatilho estiver ausente.

 Captura de tela do gatilho YAML CI.

Crie repositórios do GitHub com segurança por padrão

No último sprint, introduzimos um controle centralizado para a construção de RPs a partir de repositórios bifurcados do GitHub.

Com este sprint, estamos a viabilizar a Securely build pull requests from forked repositories opção ao nível da organização, para novas organizações. As organizações existentes não são afetadas.

Desativação da substituição do estado da política de cobertura de código para "Falha" quando a construção falha.

Anteriormente, o status da política de cobertura de código era substituído por 'Falha' se sua compilação no PR estivesse falhando. Este foi um bloqueador para alguns de vocês que tinham a compilação como uma verificação opcional e a política de cobertura de código como uma verificação obrigatória para solicitações de pull, resultando em solicitações de pull sendo bloqueadas.

Captura de ecrã de PRs bloqueados.

Com este sprint, a política de cobertura de código não será substituída por 'Falha' se a compilação falhar. Este recurso será habilitado para todos os clientes.

Captura de ecrã dos resultados após a alteração.

Próximos passos

Observação

Esses recursos serão lançados nas próximas duas a três semanas.

Vá até o Azure DevOps e dê uma olhada.

Como fornecer feedback

Gostaríamos muito de ouvir o que você pensa sobre esses recursos. Use o menu Ajuda para relatar um problema ou fornecer uma sugestão.

Faça uma sugestão

Você também pode obter conselhos e suas perguntas respondidas pela comunidade no Stack Overflow.