Credenciales de identidad federada flexibles (versión preliminar)
Las credenciales de identidad federada flexibles son una característica avanzada del identificador de carga de trabajo de Microsoft Entra que mejora el modelo de credenciales de identidad federada existente. En este artículo se explica cómo funcionan estas credenciales, sus ventajas y limitaciones actuales.
Las credenciales de identidad federadas flexibles permiten el uso de un lenguaje de expresiones restringido para hacer coincidir las declaraciones entrantes de subject
y habilitar la inclusión de declaraciones personalizadas, ayudando a reducir la carga de gestión y a abordar los límites de escala en la federación de identidades de carga de trabajo. Si desea simplificar la autenticación para cargas de trabajo externas con Microsoft Entra, esta guía le proporciona la información necesaria y los pasos necesarios para usar esta característica eficaz.
¿Por qué usar credenciales de identidad federadas flexibles?
El comportamiento actual de las credenciales de identidad federada dentro de la federación de identidad para cargas de trabajo requiere coincidencia exacta al comparar los subject
, issuer
y audience
definidos en la credencial de identidad federada con los subject
, issuer
y audience
contenidos en el token enviado a Microsoft Entra. Cuando se combina con el límite actual de 20 credenciales de identidad federada para una aplicación determinada o una identidad administrada asignada por el usuario, los límites de escala se pueden alcanzar rápidamente.
Las credenciales de identidad federada flexibles amplían el modelo de credenciales de identidad federada existente al permitir el uso de un lenguaje de expresiones restringido para hacer coincidir las reclamaciones entrantes de subject
. También se puede utilizar para extender el modelo de autorización de credenciales de identidad federada más allá de las reclamaciones subject
, issuer
y audience
, permitiendo la inclusión de ciertas reclamaciones personalizadas permitidas dentro de sus credenciales de identidad federada.
Las credenciales de identidad federadas flexibles pueden ayudar a reducir la sobrecarga de administración al intentar autenticar cargas de trabajo externas con Microsoft Entra y abordar los límites de escala en las implementaciones de federación de identidades de carga de trabajo.
¿Cómo funcionan las credenciales de identidad federada flexibles?
Las credenciales de identidad federada flexibles no cambian la funcionalidad de línea base proporcionada por las credenciales de identidad federada. Estas relaciones de confianza se siguen usando para indicar qué token del IdP externo debe ser de confianza para la aplicación. En su lugar, amplían la capacidad de las credenciales de identidad federada habilitando escenarios que anteriormente requerían varias credenciales de identidad federada para administrarse en una única credencial de identidad federada flexible. Algunos ejemplos son:
- Repositorios de GitHub con varios flujos de trabajo, cada uno que se ejecuta en una rama diferente (o se usa entre ramas). Anteriormente, se requería una credencial de identidad federada única para cada una de las ramas en las que se podían ejecutar flujos de trabajo. Con credenciales de identidad federada flexibles, este escenario se puede administrar con una sola credencial de identidad federada.
- Planes
run_phases
de Terraform Cloud, cada uno de los cuales requiere una credencial de identidad federada única. Con credenciales de identidad federada flexibles, se puede administrar con una única credencial de identidad federada flexible. - Flujos de trabajo reutilizables de Acciones de GitHub, donde se pueden usar caracteres comodín en la declaración
job_workflow_ref
personalizada de GitHub.
Nota
Actualmente se proporciona compatibilidad con credenciales de identidad federada flexibles para buscar coincidencias con tokens emitidos en GitHub, GitLab y Terraform Cloud. Esta compatibilidad solo existe para las credenciales de identidad federada configuradas actualmente en objetos de aplicación. Solo puede crear y administrar credenciales de identidad federada flexibles a través de Microsoft Graph o Azure Portal.
Estructura flexible del lenguaje de credenciales de identidad federada
Una expresión flexible de credenciales de identidad federada se compone de tres partes: la búsqueda de reclamaciones, el operador y el comparando. Consulte la tabla siguiente para obtener un desglose de cada parte:
Nombre | Descripción | Ejemplo |
---|---|---|
Búsqueda de reclamaciones | La búsqueda de reclamaciones debe seguir el patrón de claims[‘<claimName>’] |
claims['sub'] |
Operador | La parte del operador debe ser solo el nombre del operador, separado de la búsqueda de reclamaciones y el comparando por un solo espacio | matches |
Comparando | El comparando contiene lo que deseas comparar con el reclamo especificado en la búsqueda: debe incluirse entre comillas simples. | 'repo:contoso/contoso-repo:ref:refs/heads/*' |
En conjunto, una expresión de credenciales de identidad federada flexible de ejemplo tendría un aspecto similar al siguiente objeto JSON:
"claims['sub'] matches 'repo:contoso/contoso-repo:ref:refs/heads/*'."
Configuración de credenciales de identidad federada a través de Microsoft Graph
Para dar cabida a la funcionalidad flexible de credenciales de identidad federada, el recurso de federatedIdentityCredentials
se está ampliando con una nueva propiedad claimsMatchingExpression
. Además de esto, la propiedad subject
ahora admite valores NULL. Las propiedades claimsMatchingExpression
y subject
son mutuamente excluyentes, por lo que no puede definir ambas dentro de una credencial de identidad federada.
audiences
: la audiencia que puede estar presente en el token externo. Este campo es obligatorio y debe establecerse enapi://AzureADTokenExchange
para el identificador de Entra de Microsoft. Indica qué plataforma de identidad de Microsoft debe aceptar en la notificaciónaud
en el token entrante. Este valor representa Microsoft Entra ID en el proveedor de identidades externo y no tiene ningún valor fijo entre los proveedores de identidades: es posible que tenga que crear un nuevo registro de aplicación en el IdP para que sirva como audiencia de este token.issuer
: la dirección URL del proveedor de identidades externo. Debe coincidir con la reclamación del emisor del token externo que está siendo intercambiado.subject
: identificador de la carga de trabajo de software externo dentro del proveedor de identidades externo. Al igual que el valor de audiencia, no tiene un formato fijo, ya que cada IdP usa su propio identificador: a veces un GUID, a veces un identificador delimitado por dos puntos, y a veces cadenas arbitrarias. El valor aquí debe coincidir con la notificaciónsub
dentro del token presentado a Microsoft Entra ID. Si se definesubject
,claimsMatchingExpression
debe establecerse en NULL.name
: una cadena única para identificar la credencial. Esta propiedad es una clave alternativa y el valor se puede usar para hacer referencia a la credencial de identidad federada a través de la GET y las operaciones de UPSERT.claimsMatchingExpression
: un nuevo tipo complejo que contiene dos propiedades,value
ylanguageVersion
. El valor se usa para definir la expresión ylanguageVersion
se usa para definir la versión del lenguaje de expresión de credenciales de identidad federada flexible (FFL) que se usa.languageVersion
siempre debe establecerse en 1. Si se defineclaimsMatchingExpression
,subject
debe establecerse en NULL.
Funcionalidad flexible del lenguaje de expresión de credenciales de identidad federada
Actualmente, las credenciales de identidad federada flexibles admiten el uso de ciertos operadores a través de los emisores habilitados. Las comillas simples se interpretan como caracteres de escape dentro del lenguaje de expresión de credenciales de identidad federada flexible.
Operador | Descripción | Ejemplo |
---|---|---|
matches |
Habilita el uso del comodín de caracteres individuales (indicados por ? ) y múltiples caracteres (indicados por * ) para la reclamación especificada |
• “claims[‘sub’] matches ‘repo:contoso/contoso-repo:ref:refs/heads/*’” • “claims[‘sub’] matches ‘repo:contoso/contoso-repo-*:ref:refs/heads/????’” |
eq |
Se usa para buscar coincidencias explícitas con una notificación especificada | • “claims[‘sub’] eq ‘repo:contoso/contoso-repo:ref:refs/heads/main’” |
and |
Operador booleano para combinar expresiones contra múltiples reivindicaciones | • “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’” |
Direcciones URL del emisor, reclamaciones admitidas y operadores de plataforma
En función de las plataformas que esté utilizando, debe implementar diferentes direcciones URL del emisor, reclamaciones y operadores. Use las pestañas siguientes para seleccionar la plataforma elegida.
Direcciones URL del emisor admitidas: https://token.actions.githubusercontent.com
Notificaciones y operadores admitidos por notificación:
- La notificación
sub
admite a los operadoreseq
ymatches
- La notificación
job_workflow_ref
admite a los operadoreseq
ymatches
CLI de Azure, Azure PowerShell y proveedores de Terraform
La compatibilidad explícita con credenciales de identidad federada flexible aún no existe en la CLI de Azure, Azure PowerShell o los proveedores de Terraform. Si intenta configurar una credencial de identidad federada flexible con cualquiera de estas herramientas, verá un error. Además, si configura una credencial de identidad federada flexible a través de Microsoft Graph o Azure Portal e intenta leer esa credencial de identidad federada flexible con cualquiera de estas herramientas, verá un error.
Puede usar el método az rest
de la CLI de Azure para realizar solicitudes de API REST para la creación y administración flexibles de credenciales de identidad federada.
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}}"
Contenido relacionado
- Implementación de una credencial de identidad federada flexible
- Configurar una identidad administrada asignada por el usuario para confiar en un proveedor de identidades externo
- Cómo crear, eliminar, obtener o actualizar credenciales de identidad federada en el registro de una aplicación.
- Lea la documentación Acciones de GitHub para obtener más información sobre cómo configurar el flujo de trabajo de Acciones de GitHub para obtener un token de acceso del proveedor de identidades de Microsoft y acceder a los recursos protegidos de Microsoft Entra.
- Obtenga información sobre el formato de aserción .