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
esubject
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 àsissuer
declarações fornecidassubject
no 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. Necessário. Se aissuer
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. Necessá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. Necessá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 Oriental
- Israel Central
- Itália Norte
- Malásia Sul
- México Central
- Catar Central
- Espanha 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 várias identidades federadas 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"
]
}
}
]
}
Política do Azure
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.
Funcionamento | 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 | Observações |
---|---|---|
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. |