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 | Y |
AzureIoTEdge@2 | 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 | Y |
AzureRmWebAppDeployment@4 | Y |
AzureSpringCloud@0 | Y |
AzureVmssDeployment@0 | Y |
AzureWebApp@1 | Y |
AzureWebAppContainer@1 | Y |
ContainerBuild@0 | Y |
ContainerStructureTest@0 | Y |
Docker@0 | Y |
Docker@1 | Conexão de serviço do Azure: Y Conexão do serviço de Registro do Docker: N |
Docker@2 | Y |
DockerCompose@0 | Y |
DockerCompose@1 | Y |
DotNetCoreCLI@2 | Y |
HelmDeploy@0 | Conexão de serviço do Azure: Y |
HelmDeploy@1 | Conexão de serviço do Azure: Y |
InvokeRESTAPI@1 | Y |
JavaToolInstaller@0 | Y |
JenkinsDownloadArtifacts@1 | Y |
Kubernetes@0 | Utilizar Kubernetes@1 |
Kubernetes@1 | Y |
KubernetesManifest@0 | Utilizar KubernetesManifest@1 |
KubernetesManifest@1 | Y |
Maven@4 | Y |
Notation@0 | Y |
PackerBuild@0 | Use PackerBuild@1 |
PackerBuild@1 | Y |
PublishToAzureServiceBus@1 | Usar PublishToAzureServiceBus@2 com conexão de serviço do Azure |
PublishToAzureServiceBus@2 | Y |
ServiceFabricComposeDeploy@0 | N |
ServiceFabricDeploy@1 | N |
SqlAzureDacpacDeployment@1 | Y |
VSTest@3 | 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:
- Solução 1: Configurar manualmente a identidade da carga de trabalho usando a autenticação de identidade gerenciada
- Solução 2: Configurar manualmente a identidade da carga de trabalho usando a autenticação de registro de aplicativo
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, pode ter sido removida da conexão de serviço ou está configurada incorretamente. Se você configurar a conexão de serviço manualmente com uma identidade pré-criada, verifique se a appID /clientId está configurada corretamente. |
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 . |
Nenhuma credencial federada foi criada ou a URL do emissor não está correta. 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 | Nenhuma credencial federada foi criada ou a URL do emissor não está correta. |
AADSTS700213: Nenhum registro de identidade federada correspondente encontrado para o assunto da asserção apresentada | Nenhuma credencial federada foi criada ou o assunto não está correto. |
AADSTS700223 | A federação de identidades de carga de trabalho é restrita ou desabilitada no locatário do Microsoft Entra. Nesse cenário, talvez seja possível usar uma identidade gerenciada para a federação. Para obter mais informações, consulte Identidade da carga de trabalho com identidade gerida. |
AADSTS70025: O aplicativo cliente não tem credenciais de identidade federada configuradas | Verifique se as credenciais federadas estão configuradas no registro do aplicativo ou na Identidade gerenciada. |
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. |
AADSTS900382: Cliente confidencial não é suportado no Cross Cloud | Algumas nuvens soberanas bloqueiam a federação de identidades de carga de trabalho. |
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. |
O erro AADSTS que você vê não está listado acima? Verifique os códigos de erro de autenticação e autorização do Microsoft Entra.