Considerações e restrições importantes para credenciais de identidade federada

Este artigo descreve considerações, restrições e limitações importantes para credenciais de identidade federada em aplicativos do Microsoft Entra e identidades gerenciadas atribuídas pelo usuário.

Para obter mais informações sobre os cenários habilitados pelas credenciais de identidade federada, consulte Visão geral da federação de identidades de carga de trabalho.

Considerações gerais sobre credenciais de identidade federada

Aplica-se a: aplicativos e identidades gerenciadas atribuídas pelo usuário

Qualquer pessoa com permissões para criar um registro de aplicativo e adicionar um segredo ou certificado pode adicionar uma credencial de identidade federada a um aplicativo. No entanto, se a opção Usuários podem registrar aplicativos estiver definida como Não na folha Configurações de Usuários> e Usuários no centro de administração do Microsoft Entra, você não poderá criar um registro de aplicativo ou configurar a credencial de identidade federada. Encontre um administrador para configurar a credencial de identidade federada em seu nome, alguém nas funções de Administrador de Aplicativo ou Proprietário de Aplicativo.

As credenciais de identidade federada não consomem a cota de objeto principal do serviço de locatário do Microsoft Entra.

Um máximo de 20 credenciais de identidade federada pode ser adicionado a um aplicativo ou identidade gerenciada atribuída pelo usuário.

Quando você configura uma credencial de identidade federada, há várias informações importantes a serem fornecidas:

  • Emissor e assunto são as principais informações necessárias para estabelecer a relação de confiança. A combinação de issuer e subject deve ser única no aplicativo. Quando a carga de trabalho de software externo solicita que a plataforma de identidade da Microsoft troque o token externo por um token de acesso, os valores do emissor e do assunto da credencial de identidade federada são verificados em relação às issuer declarações fornecidas subjectno token externo. Se essa verificação de validação for aprovada, a plataforma de identidade da Microsoft emitirá um token de acesso à carga de trabalho de software externo.

  • issuer é a URL do provedor de identidade externo e deve corresponder à issuer declaração do token externo que está sendo trocado. Obrigatório. Se a issuer declaração tiver espaço em branco à esquerda ou à direita no valor, a troca de token será bloqueada. Este campo tem um limite de caracteres de 600 caracteres.

  • subject é o identificador da carga de trabalho de software externo e deve corresponder à sub declaração (subject) do token externo que está sendo trocado. subject não tem formato fixo, pois cada IdP usa seu próprio - às vezes um GUID, às vezes um identificador delimitado por dois pontos, às vezes cadeias de caracteres arbitrárias. Este campo tem um limite de caracteres de 600 caracteres.

    Importante

    Os valores de configuração de assunto devem corresponder exatamente à configuração na configuração do fluxo de trabalho do GitHub. Caso contrário, a plataforma de identidade da Microsoft examinará o token externo de entrada e rejeitará a troca por um token de acesso. Você não receberá um erro, a troca falha sem erro.

    Importante

    Se você adicionar acidentalmente as informações incorretas da carga de trabalho externa na configuração do assunto, a credencial de identidade federada será criada com êxito sem erro. O erro não se torna aparente até que a troca de token falhe.

  • Audiências lista as audiências que podem aparecer no token externo. Obrigatório. Você deve adicionar um único valor de público, que tem um limite de 600 caracteres. O valor recomendado é "api://AzureADTokenExchange". Ele diz o que a aud plataforma de identidade da Microsoft deve aceitar na declaração no token de entrada.

  • name é o identificador exclusivo da credencial de identidade federada. Obrigatório. Este campo tem um limite de caracteres de 3 a 120 caracteres e deve ser amigável para URL. Há suporte para caracteres alfanuméricos, traços ou sublinhados, o primeiro caractere deve ser apenas alfanumérico.  É imutável uma vez criado.

  • description é a descrição fornecida pelo usuário da credencial de identidade federada. Opcional. A descrição não é validada ou verificada pela ID do Microsoft Entra. Este campo tem um limite de 600 caracteres.

Não há suporte para caracteres curinga em nenhum valor de propriedade de credencial de identidade federada.

Regiões sem suporte (identidades gerenciadas atribuídas pelo usuário)

Aplica-se a: identidades gerenciadas atribuídas pelo usuário

Atualmente, não há suporte para a criação de credenciais de identidade federada em identidades gerenciadas atribuídas pelo usuário criadas nas seguintes regiões:

  • Ásia Leste
  • Catar Central
  • Malásia Sul
  • Norte da Itália
  • Israel Central

O suporte para a criação de credenciais de identidade federada em identidades atribuídas ao usuário nessas regiões será implementado gradualmente. Os recursos nessa região que precisam usar credenciais de identidade federada podem fazer isso aproveitando uma identidade gerenciada atribuída ao usuário criada em uma região com suporte.

Algoritmos de assinatura e emissores suportados

Aplica-se a: aplicativos e identidades gerenciadas atribuídas pelo usuário

Somente emissores que fornecem tokens assinados usando o algoritmo RS256 são suportados para troca de tokens usando federação de identidade de carga de trabalho. A troca de tokens assinados com outros algoritmos pode funcionar, mas não foi testada.

Os emissores do Microsoft Entra não são suportados

Aplica-se a: aplicativos e identidades gerenciadas atribuídas pelo usuário

Não há suporte para a criação de uma federação entre duas identidades do Microsoft Entra a partir do mesmo locatário ou de locatários diferentes. Ao criar uma credencial de identidade federada, não há suporte para a configuração do emissor (a URL do provedor de identidade externo) com os seguintes valores:

  • *.login.microsoftonline.com
  • *.login.windows.net
  • *.login.microsoft.com
  • *.sts.windows.net

Embora seja possível criar uma credencial de identidade federada com um emissor do Microsoft Entra, as tentativas de usá-la para autorização falham com erro AADSTS700222: AAD-issued tokens may not be used for federated identity flows.

Tempo de propagação das alterações de credenciais federadas

Aplica-se a: aplicativos e identidades gerenciadas atribuídas pelo usuário

Leva tempo para que a credencial de identidade federada seja propagada por toda uma região depois de ser configurada inicialmente. Uma solicitação de token feita vários minutos após a configuração da credencial de identidade federada pode falhar porque o cache é preenchido no diretório com dados antigos. Durante essa janela de tempo, uma solicitação de autorização pode falhar com a mensagem de erro: AADSTS70021: No matching federated identity record found for presented assertion.

Para evitar esse problema, aguarde um curto período de tempo após adicionar a credencial de identidade federada antes de solicitar um token para garantir que a replicação seja concluída em todos os nós do serviço de autorização. Também recomendamos adicionar lógica de repetição para solicitações de token. Devem ser feitas novas tentativas para cada solicitação, mesmo depois que um token foi obtido com sucesso. Eventualmente, depois que os dados forem totalmente replicados, a porcentagem de falhas cairá.

Não há suporte para atualizações simultâneas (identidades gerenciadas atribuídas pelo usuário)

Aplica-se a: identidades gerenciadas atribuídas pelo usuário

A criação simultânea de várias credenciais de identidade federada sob a mesma identidade gerenciada atribuída pelo usuário aciona a lógica de deteção de simultaneidade, o que faz com que as solicitações falhem com o código de status HTTP de 409 conflitos.

O Terraform Provider for Azure (Resource Manager) versão 3.40.0 introduz uma atualização que cria várias credenciais de identidade federada sequencialmente em vez de simultaneamente. Versões anteriores à 3.40.0 podem causar falhas em pipelines quando identidades federadas multipedadas são criadas. Recomendamos que você use o Terraform Provider for Azure (Resource Manager) v3.40.0 ou posterior para que várias credenciais de identidade federada sejam criadas sequencialmente.

Quando você usa automação ou modelos do Azure Resource Manager (modelos ARM) para criar credenciais de identidade federada sob a mesma identidade pai, crie as credenciais federadas sequencialmente. As credenciais de identidade federada sob diferentes identidades gerenciadas podem ser criadas em paralelo sem quaisquer restrições.

Se as credenciais de identidade federada forem provisionadas em um loop, você poderá provisioná-las em série definindo "mode": "serial".

Você também pode provisionar várias novas credenciais de identidade federada sequencialmente usando a propriedade dependsOn . O seguinte exemplo de modelo do Azure Resource Manager (modelo ARM) cria três novas credenciais de identidade federada sequencialmente em uma identidade gerenciada atribuída pelo usuário usando a propriedade dependsOn :

{ 
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", 
    "contentVersion": "1.0.0.0", 
    "parameters": { 
        "userAssignedIdentities_parent_uami_name": { 
            "defaultValue": "parent_uami", 
            "type": "String" 
        } 
    }, 
    "variables": {}, 
    "resources": [ 
        { 
            "type": "Microsoft.ManagedIdentity/userAssignedIdentities", 
            "apiVersion": "2022-01-31-preview", 
            "name": "[parameters('userAssignedIdentities_parent_uami_name')]", 
            "location": "eastus" 
        }, 
        { 
            "type": "Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials", 
            "apiVersion": "2022-01-31-preview", 
            "name": "[concat(parameters('userAssignedIdentities_parent_uami_name'), '/fic01')]", 
            "dependsOn": [ 
                "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('userAssignedIdentities_parent_uami_name'))]" 
            ], 
            "properties": { 
                "issuer": "https://kubernetes-oauth.azure.com", 
                "subject": "fic01", 
                "audiences": [ 
                    "api://AzureADTokenExchange" 
                ] 
            } 
        }, 
        { 
            "type": "Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials", 
            "apiVersion": "2022-01-31-preview", 
            "name": "[concat(parameters('userAssignedIdentities_parent_uami_name'), '/fic02')]", 
            "dependsOn": [ 
                "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('userAssignedIdentities_parent_uami_name'))]", 
                "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials', parameters('userAssignedIdentities_parent_uami_name'), 'fic01')]" 
            ], 
            "properties": { 
                "issuer": "https://kubernetes-oauth.azure.com", 
                "subject": "fic02", 
                "audiences": [ 
                    "api://AzureADTokenExchange" 
                ] 
            } 
        }, 
        { 
            "type": "Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials", 
            "apiVersion": "2022-01-31-preview", 
            "name": "[concat(parameters('userAssignedIdentities_parent_uami_name'), '/fic03')]", 
            "dependsOn": [ 
                "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('userAssignedIdentities_parent_uami_name'))]", 
                "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials', parameters('userAssignedIdentities_parent_uami_name'), 'fic02')]" 
            ], 
            "properties": { 
                "issuer": "https://kubernetes-oauth.azure.com", 
                "subject": "fic03", 
                "audiences": [ 
                    "api://AzureADTokenExchange" 
                ] 
            } 
        } 
    ] 
} 

Azure policy

Aplica-se a: aplicativos e identidades gerenciadas atribuídas pelo usuário

É possível usar uma Política do Azure de negação como no exemplo de modelo ARM a seguir:

{ 
"policyRule": { 
            "if": { 
                "field": "type", 
                "equals": "Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials" 
            }, 
            "then": { 
                "effect": "deny" 
            } 
        } 
}

Limites de limitação

Aplica-se a: identidades gerenciadas atribuídas pelo usuário

A tabela a seguir descreve os limites das solicitações para as APIs REST de identidades gerenciadas atribuídas pelo usuário. Se você exceder um limite de limitação, receberá um erro HTTP 429.

Operação Solicitações por segundo por locatário do Microsoft Entra Pedidos por segundo por subscrição Solicitações por segundo por recurso
Criar ou atualizar solicitações 10 2 0.25
Obter pedidos 30 10 0.5
Lista por grupo de recursos ou Lista por solicitações de assinatura 15 5 0.25
Excluir solicitações 10 2 0.25

Erros

Aplica-se a: aplicativos e identidades gerenciadas atribuídas pelo usuário

Os códigos de erro a seguir podem ser retornados ao criar, atualizar, obter, listar ou excluir credenciais de identidade federada.

Código HTTP Mensagem de Erro Comentários
405 O formato da solicitação foi inesperado: o suporte para credenciais de identidade federada não está habilitado. As credenciais de identidade federada não estão habilitadas nesta região. Consulte "Regiões atualmente suportadas".
400 As credenciais de identidade federada devem ter exatamente um público. Atualmente, as credenciais de identidade federada oferecem suporte a um único público "api://AzureADTokenExchange".
400 A Credencial de Identidade Federada do corpo HTTP tem propriedades vazias Todas as propriedades de credenciais de identidade federada são obrigatórias.
400 O nome da credencial de identidade federada '{ficName}' é inválido. Alfanumérico, traço, sublinhado, não mais do que 3-120 símbolos. O primeiro símbolo é alfanumérico.
404 A identidade atribuída ao usuário pai não existe. Verifique o nome da identidade atribuída ao usuário no caminho do recurso de credenciais de identidade federada.
400 A combinação de emissor e assunto já existe para esta Identidade Gerenciada. Trata-se de um constrangimento. Liste todas as credenciais de identidade federada associadas à identidade atribuída pelo usuário para localizar a credencial de identidade federada existente.
409 Conflito A solicitação de gravação simultânea para recursos de credenciais de identidade federada sob a mesma identidade atribuída pelo usuário foi negada.