Partilhar via


Azure Pipelines - Atualização do Sprint 227

Funcionalidades

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 girar esses segredos sempre que eles expiram? Agora estamos anunciando uma visualização pública da Federação de Identidade de Carga de Trabalho para conexões 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 simplificar a autenticação entre o Azure Pipelines e o 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 ou exfiltrar segredos que tenham 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 identidade de carga de trabalho, basta selecionar Federação de identidade de carga de trabalho (automática) ou (manual) na experiência de criação de conexão de serviço do Azure:

 Screenshot of resource.

Screenshot of identify federation.

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

 Screenshot of 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 uma entidade de serviço ou um usuário para registrar um agente. Você deve conceder à identidade usada acesso ao pool de agentes em 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 uma entidade 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.

 Screenshot of authentication flow.

APIs REST para ambientes

Um Ambiente é uma coleção de recursos que você pode direcionar com implantações de um pipeline. Os ambientes fornecem histórico de implantação, rastreabilidade para itens de trabalho e confirmações e 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 pipeline

Hoje, se o pipeline do YAML não especificar uma trigger seção, ele será executado para quaisquer alterações enviadas por push para seu repositório. Isso pode criar confusão sobre por que um gasoduto funcionou 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.

 Screenshot of YAML CI trigger.

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.

Substituição desabilitada do status da política de cobertura de código para Falha quando a compilação está falhando

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 RPs, resultando em RPs sendo bloqueados.

Screenshot of PRs blocked.

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.

Screenshot of results after change.

Próximos passos

Nota

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.

Make a suggestion

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