Compartilhar via


Credenciais de identidade federadas flexíveis (versão prévia)

Credenciais de identidade federada flexíveis são um recurso avançado do Microsoft Entra Workload ID, que aprimora o modelo de credenciais de identidade federada existente. Este artigo explica como essas credenciais funcionam, seus benefícios e limitações atuais.

As credenciais de identidade federadas flexíveis permitem usar uma linguagem de expressão restrita para combinar declarações de entrada subject e permitir a inclusão de declarações personalizadas, ajudando a reduzir a sobrecarga de gerenciamento e resolver os limites de escala na federação de identidade de carga de trabalho. Se você estiver procurando simplificar a autenticação para cargas de trabalho externas com o Microsoft Entra, este guia fornecerá os insights e as etapas necessários para usar esse recurso poderoso.

Por que usar credenciais de identidade federadas flexíveis?

O comportamento atual das credenciais de identidade federadas dentro da federação de identidade para cargas de trabalho exige correspondência exata ao comparar os subject, issuere audience definidos na credencial de identidade federada com os subject, issuere audience contidos no token enviado ao Microsoft Entra. Quando combinado com o limite atual de 20 credenciais de identidade federadas para um determinado aplicativo ou identidade gerenciada atribuída pelo usuário, os limites de escala podem ser atingidos rapidamente.

As credenciais de identidade federadas flexíveis estendem o modelo de credencial de identidade federada existente, permitindo o uso de uma linguagem de expressões restrita ao comparar com declarações subject de entrada. Ele também pode ser usado para estender o modelo de autorização de credencial de identidade federada para além das declarações de subject, issuere audience habilitando a inclusão de determinadas declarações personalizadas permitidas em suas credenciais de identidade federadas.

As credenciais de identidade federadas flexíveis podem ajudar a reduzir a sobrecarga de gerenciamento ao tentar autenticar cargas de trabalho externas com o Microsoft Entra e resolver os limites de escala nas implementações de federação de identidade de carga de trabalho.

Como funcionam as credenciais de identidade federadas flexíveis?

As credenciais de identidade federadas flexíveis não alteram a funcionalidade de linha de base fornecida pelas credenciais de identidade federadas. Essas relações de confiança ainda são usadas para indicar qual token do IdP externo deve ser confiável pelo seu aplicativo. Em vez disso, eles estendem a capacidade de credenciais de identidade federadas habilitando cenários que anteriormente exigiam várias credenciais de identidade federadas para, em vez disso, serem gerenciados sob uma única credencial de identidade federada flexível. Alguns exemplos incluem:

  • Repositórios do GitHub com vários fluxos de trabalho, cada um em execução em um branch diferente (ou sendo usado entre branches). Anteriormente, era necessária uma credencial de identidade federada exclusiva para cada uma das ramificações em que os fluxos de trabalho podiam ser executados. Com credenciais de identidade federadas flexíveis, esse cenário pode ser gerenciado em uma única credencial de identidade federada.
  • Planos de nuvem run_phases do Terraform, dos quais cada um exige uma credencial de identidade federada exclusiva. Com credenciais de identidade federadas flexíveis, isso pode ser gerenciado em uma única credencial de identidade federada flexível.
  • Fluxos de trabalho reutilizáveis do GitHub Actions, em que curingas podem ser usados na declaração job_workflow_ref personalizada do GitHub.

Nota

Atualmente, o suporte a credenciais de identidade federadas flexíveis é fornecido para correspondência com tokens emitidos pelo GitHub, GitLab e Terraform Cloud. Esse suporte existe apenas para credenciais de identidade federadas configuradas em objetos de aplicativo no momento. Você só pode criar e gerenciar credenciais de identidade federadas flexíveis por meio do Microsoft Graph ou do portal do Azure.

Estrutura de linguagem de credencial de identidade federada flexível

Uma expressão de credenciais de identidade federada flexível é composta por três partes, a pesquisa de declaração, o operador e o comparando. Consulte a tabela a seguir para obter um detalhamento de cada parte:

Nome Descrição Exemplo
Pesquisa de declaração A pesquisa de declaração deve seguir o padrão de claims['<claimName>'] claims['sub']
Operador A parte do operador deve ser apenas o nome do operador, separado da pesquisa e comparação de declaração por um só espaço matches
Comparando O comparando contém aquilo com que você pretende comparar a declaração especificada na pesquisa; deve estar entre aspas simples 'repo:contoso/contoso-repo:ref:refs/heads/*'

Juntas, uma expressão de credenciais de identidade federadas flexíveis de exemplo se pareceria com o seguinte objeto JSON:

"claims['sub'] matches 'repo:contoso/contoso-repo:ref:refs/heads/*'."

Configurar credenciais de identidade federadas por meio do Microsoft Graph

Para acomodar a funcionalidade de credencial de identidade federada flexível, o recurso federatedIdentityCredentials está sendo estendido com uma nova propriedade claimsMatchingExpression. Além disso, a propriedade subject agora é anulável. As propriedades claimsMatchingExpression e subject são mutuamente exclusivas, portanto, você não pode definir ambas dentro de uma credencial de identidade federada.

  • audiences: o público-alvo que pode aparecer no token externo. Esse campo é obrigatório e deve ser definido como api://AzureADTokenExchange para a ID do Microsoft Entra. Especifica o que a plataforma de identidade da Microsoft deve aceitar na declaração aud no token de entrada. Esse valor representa a ID do Microsoft Entra em seu provedor de identidade externo e não tem nenhum valor fixo entre provedores de identidade – talvez seja necessário criar um novo registro de aplicativo no IdP para servir como o público-alvo desse token.
  • issuer: a URL do provedor de identidade externo. Deve corresponder à declaração do emissor do token externo que está sendo trocado.
  • subject: o identificador da carga de trabalho de software externo dentro do provedor de identidade externo. Assim como o valor de público-alvo, ele não tem formato fixo, pois cada IdP usa o seu próprio, às vezes um GUID, às vezes um identificador delimitado por dois-pontos, às vezes cadeias de caracteres arbitrárias. O valor aqui deve corresponder à declaração sub dentro do token apresentado ao Microsoft Entra ID. Se subject for definido, claimsMatchingExpression deverá ser definido como nulo.
  • name: uma cadeia de caracteres exclusiva para identificar a credencial. Essa propriedade é uma chave alternativa e o valor pode ser usado para referenciar a credencial de identidade federada por meio das operações GET e UPSERT.
  • claimsMatchingExpression: um novo tipo complexo que contém duas propriedades, value e languageVersion. O valor é usado para definir a expressão e languageVersion é usado para definir a versão da FFL (linguagem de expressão de identidade federada) flexível que está sendo usada. languageVersion sempre deve ser definido como 1. Se claimsMatchingExpression for definido, subject deverá ser definido como nulo.

Funcionalidade de linguagem flexível para expressão de credenciais de identidade federada

Atualmente, as credenciais de identidade federadas flexíveis dão suporte ao uso de alguns operadores entre os emissores habilitados. Aspas simples são interpretadas como caracteres de escape na linguagem flexível de expressão de credenciais de identidade federada.

Operador Descrição Exemplo
matches Habilita o uso de correspondência curinga de caractere único (indicado por ?) e de caracteres múltiplos (indicados por *) para a declaração especificada "claims['sub'] matches 'repo:contoso/contoso-repo:ref:refs/heads/*'"
"claims['sub'] matches 'repo:contoso/contoso-repo-*:ref:refs/heads/????'"
eq Usado para combinação explícita com uma declaração especificada "claims['sub'] eq 'repo:contoso/contoso-repo:ref:refs/heads/main'"
and Operador booliano para combinar expressões com várias declarações "claims['sub'] eq 'repo:contoso/contoso-repo:ref:refs/heads/main' and claims['job_workflow_ref'] matches 'foo-org/bar-repo /.github/workflows/*@refs/heads/main'"

URLs do emissor, declarações com suporte e operadores por plataforma

Você precisa implementar diferentes URLs, declarações de emissor e operadores, dependendo da plataforma que está usando. Use as abas a seguir para selecionar a plataforma desejada.

URLs de emissores compatíveis: https://token.actions.githubusercontent.com

Declarações e operadores com suporte para cada declaração:

  • A declaração sub dá suporte aos operadores eq e matches
  • A declaração job_workflow_ref dá suporte aos operadores eq e matches

Provedores da CLI do Azure, do Azure PowerShell e do Terraform

O suporte explícito à credencial de identidade federada flexível ainda não existe na CLI do Azure, no Azure PowerShell ou nos provedores terraform. Se você tentar configurar uma credencial de identidade federada flexível com qualquer uma dessas ferramentas, verá um erro. Além disso, se você configurar uma credencial de identidade federada flexível por meio do Microsoft Graph ou do portal do Azure e tentar ler essa credencial de identidade federada flexível com qualquer uma dessas ferramentas, verá um erro.

Você pode usar o método az rest da CLI do Azure para fazer solicitações de API REST para criação e gerenciamento de credenciais de identidade federadas flexíveis.

az rest --method post \
    --url https://graph.microsoft.com/beta/applications/{objectId}/federatedIdentityCredentials
    --body "{'name': 'FlexFic1', 'issuer': 'https://token.actions.githubusercontent.com', 'audiences': ['api://AzureADTokenExchange'], 'claimsMatchingExpression': {'value': 'claims[\'sub\'] matches \'repo:contoso/contoso-org:ref:refs/heads/*\'', 'languageVersion': 1}}"