Consideraciones y restricciones importantes para las credenciales de identidad federada

En este artículo se describen consideraciones, restricciones y limitaciones importantes para las credenciales de identidad federada en aplicaciones de Microsoft Entra y las identidades administradas asignadas por el usuario.

Para obtener más información sobre los escenarios habilitados por las credenciales de identidad federada, consulte la introducción a la federación de identidades de carga de trabajo.

Consideraciones generales sobre las credenciales de identidad federada

Se aplica a: aplicaciones e identidades administradas asignadas por el usuario

Cualquier persona con permisos para crear un registro de aplicación y agregar un secreto o certificado puede agregar una credencial de identidad federada a una aplicación. Si el interruptor Los usuarios pueden registrar aplicaciones está establecido en No en la hoja Usuarios->Configuración de usuario del Centro de administración de Microsoft Entra, sin embargo, no podrá crear un registro de aplicación ni configurar la credencial de identidad federada. Busque un administrador con el rol de Administrador de aplicaciones o Propietario de la aplicación que configure en su nombre la credencial de identidad federada.

Las credenciales de identidad federada no consumen la cuota de objetos de entidad de servicio del inquilino de Microsoft Entra ID.

Es posible agregar un máximo de 20 credenciales de identidad federada a una aplicación o a una identidad administrada asignada por el usuario.

Al configurar una credencial de identidad federada se debe proporcionar cierta información importante:

  • issuer y el sujeto son los elementos clave de información necesarios para configurar la relación de confianza. La combinación de issuer y subject debe ser única en la aplicación. Cuando la carga de trabajo de software externo solicita una plataforma de identidad de Microsoft para intercambiar el token externo por un token de acceso, los valores de emisor y sujeto de la credencial de identidad federada se comprueban con las notificaciones issuer y subject proporcionadas en el token externo. Si se supera la comprobación de validación, la plataforma de identidad de Microsoft emite un token de acceso a la carga de trabajo de software externo.

  • issuer es la dirección URL del proveedor de identidades externo y debe coincidir con la notificación issuer del token externo que se intercambia. Necesario. Si la notificación issuer incluye espacios en blanco iniciales o finales en el valor, el intercambio de tokens se bloquea. Este campo tiene un límite de 600 caracteres.

  • subject es el identificador de la carga de trabajo de software externo y debe coincidir con la notificación sub (subject) del token externo que se intercambia. subject no tiene ningún formato fijo, ya que cada IdP usa uno propio: a veces un GUID, a veces un identificador delimitado por dos puntos y, a veces, cadenas arbitrarias. Este campo tiene un límite de 600 caracteres.

    Importante

    Los valores de configuración del asunto deben coincidir exactamente con la configuración del flujo de trabajo de GitHub. De lo contrario, la plataforma de identidad de Microsoft examinará el token externo entrante y rechazará el intercambio por un token de acceso. No se producirá un error, se producirá un error en el intercambio sin errores.

    Importante

    Si agrega accidentalmente la información de carga de trabajo externa incorrecta en la configuración del subject, la credencial de identidad federada se crea correctamente sin errores. El error no se hace evidente hasta que se produce un error en el intercambio de tokens.

  • audiences enumera las audiencias que pueden aparecer en el token externo. Necesario. Debe agregar un único valor de audiencia, que tiene un límite de 600 caracteres. El valor recomendado es "api://AzureADTokenExchange". Indica qué plataforma de identidad de Microsoft debe aceptar en la notificación aud en el token entrante.

  • name es el identificador único para la credencial de identidad federada. Necesario. Este campo tiene un límite de 3-120 caracteres y debe ser apto para direcciones URL. Se admiten caracteres alfanuméricos, guiones o caracteres de subrayado; el primer carácter solo debe ser alfanumérico.  Una vez creado, es inmutable.

  • description es la descripción facilitada por el usuario para la credencial de identidad federada. Opcional. Microsoft Entra ID no valida ni comprueba la descripción. Este campo está limitado a 600 caracteres.

Los caracteres comodín no se admiten en ningún valor de propiedad de credencial de identidad federada.

Regiones no admitidas (identidades administradas asignadas por el usuario)

Se aplica a: identidades administradas asignadas por el usuario

La creación de credenciales de identidad federada actualmente no es compatible en identidades administradas por el usuario creadas en las siguientes regiones:

  • Este de Asia
  • Centro de Israel
  • Norte de Italia
  • Sur de Malasia
  • Centro de México
  • Centro de Catar
  • Centro de España

La compatibilidad con la creación de credenciales de identidad federada sobre identidades administradas por el usuario en estas regiones se implementará gradualmente. Los recursos de esta región que necesiten usar credenciales de identidad federada pueden hacerlo aprovechando una identidad administrada por el usuario creada en una región compatible.

Algoritmos de firma y emisores admitidos

Se aplica a: aplicaciones e identidades administradas asignadas por el usuario

Para el intercambio de tokens mediante la federación de identidades de carga de trabajo, solo se admiten emisores que proporcionen tokens firmados mediante el algoritmo RS256. El intercambio de tokens firmados con otros algoritmos podría funcionar, pero no se ha probado.

No se admiten los emisores de Microsoft Entra

Se aplica a: aplicaciones e identidades administradas asignadas por el usuario

No se admite la creación de una federación entre dos identidades de Microsoft Entra de inquilinos iguales o diferentes. Al crear una credencial de identidad federada, no se admite la configuración del emisor (la dirección URL del proveedor de identidades externo) con los valores siguientes:

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

Aunque es posible crear una credencial de identidad federada con un emisor de Microsoft Entra, intentar usarla para la autorización producirá un error AADSTS700222: AAD-issued tokens may not be used for federated identity flows.

Tiempo que tardan en propagarse los cambios en las credenciales federadas

Se aplica a: aplicaciones e identidades administradas asignadas por el usuario

La credencial de identidad federada tarda en propagarse por una región después de su configuración inicial. Una solicitud de token realizada varios minutos después de configurar la credencial de identidad federada podría producir un error porque la memoria caché está llena en el directorio con datos antiguos. Durante este período de tiempo, es posible que se produzca un error en una solicitud de autorización con este mensaje de error: AADSTS70021: No matching federated identity record found for presented assertion.

Para evitar este problema, espere un tiempo después de agregar la credencial de identidad federada antes de solicitar un token para asegurarse de que la replicación se completa en todos los nodos del servicio de autorización. También se recomienda agregar lógica de reintento para las solicitudes de tokens. Deben realizarse reintentos para cada solicitud incluso después de que se haya obtenido correctamente un token. Finalmente, una vez que los datos se han replicado por completo, el porcentaje de errores se reduce.

No se admiten las actualizaciones simultáneas (identidades administradas asignadas por el usuario)

Se aplica a: identidades administradas asignadas por el usuario

La creación simultánea de varias credenciales de identidad federada en la misma identidad administrada asignada por el usuario desencadena la lógica de detección de simultaneidad, lo que hace que las solicitudes produzcan un error con el código de estado HTTP "409 Conflicto".

El proveedor de Terraform para Azure (Resource Manager) versión 3.40.0 presenta una actualización que crea varias credenciales de identidad federada secuencialmente en lugar de simultáneamente. Las versiones anteriores a la 3.40.0 pueden provocar errores en las canalizaciones cuando se crean varias identidades federadas. Se recomienda usar el proveedor de Terraform para Azure (Resource Manager) v3.40.0 o posterior para que se creen secuencialmente varias credenciales de identidad federada.

Cuando use la automatización o las plantillas de Azure Resource Manager (plantillas de ARM) para crear credenciales de identidad federada en la misma identidad primaria, cree las credenciales federadas de forma secuencial. Las credenciales de identidad federada en distintas identidades administradas se pueden crear en paralelo sin restricciones.

Si las credenciales de identidad federada se aprovisionan en un bucle, puede aprovisionarlas en serie estableciendo "mode": "serial".

También puede aprovisionar varias credenciales de identidad federada nuevas secuencialmente mediante la propiedad dependsOn. En el siguiente ejemplo de plantilla de Azure Resource Manager (plantilla de ARM) se crean tres credenciales de identidad federada secuencialmente en una identidad administrada asignada por el usuario mediante la propiedad 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

Se aplica a: aplicaciones e identidades administradas asignadas por el usuario

Es posible usar una directiva de denegación de Azure Policy como en el ejemplo siguiente de plantilla de ARM:

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

Limitaciones

Se aplica a: identidades administradas asignadas por el usuario

En la tabla siguiente se describen los límites de las solicitudes a las API REST de identidades administradas asignadas por el usuario. Si supera un límite, recibirá un error HTTP 429.

Operación Solicitudes por segundo por inquilino de Microsoft Entra Solicitudes por segundo por suscripción Solicitudes por segundo por recurso
Solicitudes de creación o actualización 10 2 0,25
Solicitudes Get 30 10 0,5
Solicitudes de enumeración por grupo de recursos o de enumeración por suscripción 15 5 0,25
Solicitudes de eliminación 10 2 0,25

Errores

Se aplica a: aplicaciones e identidades administradas asignadas por el usuario

Podrían devolverse los siguientes códigos de error al crear, actualizar, obtener, enumerar o eliminar credenciales de identidad federada.

Código HTTP Mensaje de error Comentarios
405 El formato de solicitud no era el esperado: la compatibilidad con credenciales de identidad federada no está habilitada. Las credenciales de identidad federada no están habilitadas en esta región. Consulte "Regiones admitidas actualmente".
400 Las credenciales de identidad federada deben tener exactamente una audiencia. Actualmente, las credenciales de identidad federada admiten una sola audiencia "api://AzureADTokenExchange".
400 La credencial de identidad federada del cuerpo HTTP tiene propiedades vacías Todas las propiedades de credencial de identidad federada son obligatorias.
400 El nombre de credencial de identidad federada "{ficName}" no es válido. Alfanumérico, guión, subrayado, no más de 3-120 símbolos. El primer símbolo es alfanumérico.
404 La identidad asignada por el usuario primario no existe. Compruebe el nombre de la identidad asignada por el usuario en la ruta de acceso del recurso de credenciales de identidad federada.
400 La combinación de emisor y firmante ya existe para esta identidad administrada. Esto es una restricción. Enumere todas las credenciales de identidad federada asociadas a la identidad asignada por el usuario para buscar la credencial de identidad federada existente.
409 Conflicto Se ha denegado la solicitud de escritura simultánea en los recursos de credenciales de identidad federada en la misma identidad asignada por el usuario.