Partilhar via


Solucionar problemas de uma conexão de serviço de identidade de carga de trabalho do Azure Resource Manager

Obtenha ajuda para depurar problemas comuns com conexões de serviço de identidade de carga de trabalho. Você também aprenderá como criar manualmente uma conexão de serviço, se necessário.

Lista de verificação de resolução de problemas

Use a lista de verificação a seguir para solucionar problemas com conexões de serviço de identidade de carga de trabalho:

  • Revise as tarefas de pipeline para garantir que elas suportem a identidade da carga de trabalho.
  • Verifique se a federação de identidades de carga de trabalho está ativa para o locatário.
  • Verifique a exatidão do URL do emissor e do assunto da federação.

As seções a seguir descrevem os problemas e como resolvê-los.

Revisar tarefas de pipeline

Nem todas as tarefas de pipeline suportam a identidade da carga de trabalho. Especificamente, apenas as propriedades de conexão de serviço do Azure Resource Manager em tarefas usam a federação de identidade de carga de trabalho. A tabela abaixo lista o suporte à federação de identidades de carga de trabalho para tarefas incluídas no Azure DevOps. Para tarefas instaladas a partir do Marketplace, entre em contacto com o editor da extensão para obter suporte.

Task Suporte à federação de identidades de carga de trabalho
AutomatedAnalysis@0 Y
AzureAppServiceManage@0 Y
AzureAppServiceSettings@1 Y
AzureCLI@1 Y
AzureCLI@2 Y
AzureCloudPowerShellDeployment@1 Utilizar AzureCloudPowerShellDeployment@2
AzureCloudPowerShellDeployment@2 Y
AzureContainerApps@0 Y
AzureContainerApps@1 Y
AzureFileCopy@1 Use AzureFileCopy@6
AzureFileCopy@2 Use AzureFileCopy@6
AzureFileCopy@3 Use AzureFileCopy@6
AzureFileCopy@4 Use AzureFileCopy@6
AzureFileCopy@5 Use AzureFileCopy@6
AzureFileCopy@6 Y
AzureFunctionApp@1 Y
AzureFunctionApp@2 Y
AzureFunctionAppContainer@1 Y
AzureFunctionOnKubernetes@0 Utilizar AzureFunctionOnKubernetes@1
AzureFunctionOnKubernetes@1 Conexão de serviço do Azure: Y
Conexão do serviço de Registro do Docker: Y
AzureIoTEdge@2 Conexão de serviço do Azure: Y
Conexão do serviço de Registro do Docker: Y
AzureKeyVault@1 Y
AzureKeyVault@2 Y
AzureMonitor@0 Utilizar AzureMonitor@1
AzureMonitor@1 Y
AzureMysqlDeployment@1 Y
AzureNLBManagement@1 N
AzurePolicyCheckGate@0 Y
AzurePowerShell@2 Y
AzurePowerShell@3 Y
AzurePowerShell@4 Y
AzurePowerShell@5 Y
AzureResourceGroupDeployment@2 Y
AzureResourceManagerTemplateDeployment@3 Y
AzureRmWebAppDeployment@3 Conexão de serviço do Azure: Y
Conexão do serviço de Registro do Docker: Y
AzureRmWebAppDeployment@4 Y
AzureSpringCloud@0 Y
AzureVmssDeployment@0 Y
AzureWebApp@1 Y
AzureWebAppContainer@1 Y
ContainerBuild@0 N
ContainerStructureTest@0 N
Docker@0 Conexão de serviço do Azure: Y
Conexão do serviço de Registro do Docker: Y
Docker@1 Conexão de serviço do Azure: Y
Conexão do serviço de Registro do Docker: N
Docker@2 Y
Docker@0 Conexão de serviço do Azure: Y
Conexão do serviço de Registro do Docker: Y
DockerCompose@0 Conexão de serviço do Azure: Y
Conexão do serviço de Registro do Docker: Y
HelmDeploy@0 Conexão de serviço do Azure: Y
InvokeRESTAPI@1 Y
JavaToolInstaller@0 Y
JenkinsDownloadArtifacts@1 Y
Kubernetes@0 Utilizar Kubernetes@1
Kubernetes@1 Conexão de serviço do Azure: Y
Conexão do serviço de Registro do Docker: Y
KubernetesManifest@0 Utilizar KubernetesManifest@1
KubernetesManifest@1 Conexão de serviço do Azure: Y
Conexão do serviço de Registro do Docker: Y
Notation@0 2024
PackerBuild@0 2024
PackerBuild@1 2024
PublishToAzureServiceBus@1 PublishToAzureServiceBus@2 dará suporte à federação de identidades de carga de trabalho
PublishToAzureServiceBus@2 2º trimestre de 2024
ServiceFabricComposeDeploy@0 N
ServiceFabricDeploy@1 N
SqlAzureDacpacDeployment@1 Y

Verifique se a federação de identidades da carga de trabalho está ativa

Se você vir mensagens de erro AADSTS700223 ou AADSTS700238, a federação de identidade da carga de trabalho foi desabilitada no locatário do Microsoft Entra.

Verifique se não há políticas do Microsoft Entra em vigor que bloqueiem credenciais federadas.

Verifique a exatidão do URL do emissor

Se você vir uma mensagem que indica que nenhum registro de identidade federada correspondente foi encontrado, a URL do emissor ou o assunto da federação não correspondem. O URL do emissor correto começa com https://vstoken.dev.azure.com.

Pode corrigir o URL do emissor ao editar e guardar a ligação de serviço para atualizar a URL do emissor. Se o Azure DevOps não tiver criado a identidade, o URL do emissor terá de ser atualizado manualmente. Para as identidades do Azure, o URL do emissor é atualizado automaticamente.

Problemas comuns

As próximas seções identificam problemas comuns e descrevem causas e resoluções.

Não tenho permissões para criar uma entidade de serviço no inquilino do Microsoft Entra

Não pode usar a ferramenta de configuração de ligação de serviço do Azure DevOps se não tiver as permissões corretas. O seu nível de permissões é insuficiente para usar a ferramenta se não tiver permissões para criar entidades de serviço ou se estiver a usar um inquilino do Microsoft Entra diferente daquele do seu utilizador do Azure DevOps.

Tem de ter permissões no Microsoft Entra ID para criar registos de aplicações ou ter uma função apropriada (por exemplo, Programador de Aplicações).

Tem duas opções para resolver o problema:

Utilizo um recurso de contentor que especifica uma instância do Azure Container Registry

Os recursos de contêiner extraídos do Registro de Contêiner do Azure ainda não oferecem suporte a uma federação de identidade de carga de trabalho.

Mensagens de erro

A tabela a seguir identifica mensagens de erro comuns e problemas que podem gerá-las:

Mensagem Possível problema
não é possível solicitar token: Obter ?audience=api://AzureADTokenExchange: unsupported protocol scheme A tarefa não oferece suporte à federação de identidades de carga de trabalho.
Identidade não encontrada A tarefa não oferece suporte à federação de identidades de carga de trabalho.
Não foi possível buscar o token de acesso para o Azure A tarefa não oferece suporte à federação de identidades de carga de trabalho.
AADSTS700016: Aplicação com identificador '****' não foi encontrada A identidade usada para a conexão de serviço não existe mais ou pode ter sido removida da conexão de serviço. Nesse cenário, crie uma nova conexão de serviço.
AADSTS7000215: Segredo de cliente inválido fornecido. Você está usando uma conexão de serviço que tem um segredo expirado. Converta a conexão de serviço em federação de identidade de carga de trabalho e substitua o segredo expirado por credenciais federadas.
AADSTS700024: A asserção do cliente não está dentro do seu intervalo de tempo válido Se o erro ocorrer após aproximadamente 1 hora, use uma conexão de serviço com a federação de identidades de carga de trabalho e uma identidade gerenciada . Os tokens de identidade gerenciada têm uma vida útil de cerca de 24 horas.
Se o erro acontecer antes de 1 hora, mas após 10 minutos, mova os comandos que (implicitamente) solicitam um token de acesso para, por exemplo, acessar o armazenamento do Azure para o início do seu script. O token de acesso será armazenado em cache para comandos subsequentes.
AADSTS70021: Nenhum registro de identidade federada correspondente encontrado para a asserção apresentada. Emissor da asserção: https://app.vstoken.visualstudio.com. O URL do emissor não está correto. O URL do emissor correto tem o formato https://vstoken.dev.azure.com/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX. Você pode corrigir a URL do emissor editando e salvando uma conexão de serviço. Se o Azure DevOps não criou sua identidade, você deve atualizar manualmente o emissor. Você pode encontrar o emissor correto na caixa de diálogo de edição da conexão de serviço ou na resposta (em parâmetros de autorização) se usar a API REST.
AADSTS70021: Nenhum registro de identidade federada correspondente encontrado para a asserção apresentada. Emissor da asserção: https://vstoken.dev.azure.com/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX. Assunto da asserção: sc://<org>/<project>/<service-connection>. O URL do emissor ou o assunto da federação não correspondem. A organização ou projeto do Azure DevOps foi renomeado ou uma conexão de serviço criada manualmente foi renomeada sem atualizar o assunto da federação na identidade.
AADSTS700211: Nenhum registro de identidade federada correspondente encontrado para o emissor de asserção apresentado A URL do emissor, o assunto da federação ou ambos são rejeitados por uma política do Microsoft Entra.
AADSTS700223 A federação de identidades de carga de trabalho é restrita ou desabilitada no locatário do Microsoft Entra. Neste cenário, muitas vezes é possível usar uma identidade gerida para a federação. Para obter mais informações, consulte Identidade da carga de trabalho com identidade gerida.
O Microsoft Entra rejeitou o token emitido pelo Azure DevOps com o código de erro AADSTS700238 A federação de identidades de carga de trabalho foi restringida no locatário do Microsoft Entra. O emissor da sua organização (https://vstoken.dev.azure.com/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX) não tem permissão para usar a federação de identidades de carga de trabalho. Peça ao seu administrador de locatário ou equipe de administração do Microsoft Entra para permitir a federação de identidade de carga de trabalho para sua organização do Azure DevOps.
Falha ao obter o JSON Web Token (JWT) usando a ID do cliente principal de serviço Suas credenciais de identidade de federação estão configuradas incorretamente ou o locatário do Microsoft Entra bloqueia o OpenID Connect (OIDC).
Script falhou com erro: UnrecognizedArgumentError: argumentos não reconhecidos: --federated-token Você está usando uma tarefa AzureCLI em um agente que tem uma versão anterior da CLI do Azure instalada. A federação de identidade de carga de trabalho requer a CLI do Azure 2.30 ou posterior.
Falha ao criar um aplicativo no Microsoft Entra ID. Erro: Privilégios insuficientes para concluir a operação no Microsoft Graph. Verifique se o usuário tem permissões para criar um Aplicativo Microsoft Entra. A capacidade de criar registros de aplicativos foi desabilitada no locatário do Microsoft Entra. Atribua ao usuário que está criando a conexão de serviço a função Application Developer Microsoft Entra. Como alternativa, crie a conexão de serviço manualmente usando uma identidade gerenciada. Para obter mais informações, consulte Identidade da carga de trabalho com identidade gerida.