Configuración de una aplicación para confiar en un proveedor de identidades externo
En este artículo se describe cómo administrar una credencial de identidad federada en una aplicación de Microsoft Entra ID. La credencial de identidad federada crea una relación de confianza entre una aplicación y un proveedor de identidades externo (IdP).
A continuación, puede configurar una carga de trabajo de software externo para intercambiar un token desde el IdP externo por un token de acceso desde Plataforma de identidad de Microsoft. La carga de trabajo externa puede acceder a los recursos protegidos de Microsoft Entra sin necesidad de administrar secretos (en escenarios admitidos). Para más información sobre el flujo de trabajo de intercambio de tokens, lea sobre la federación de identidades de carga de trabajo.
En este artículo, aprenderá a crear, enumerar y eliminar credenciales de identidad federada en una aplicación de Microsoft Entra ID.
Consideraciones y restricciones importantes
Para crear, actualizar o eliminar una credencial de identidad federada, la cuenta que realiza la acción debe tener el rol Administrador de aplicaciones, Desarrollador de aplicaciones, Administrador de aplicaciones en la nube o Propietario de la aplicación. El permiso microsoft.directory/applications/credentials/update es necesario para actualizar una credencial de identidad federada.
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
ysubject
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 notificacionesissuer
ysubject
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ónissuer
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 tiene un límite de 600 caracteres.
Los caracteres comodín no se admiten en ningún valor de propiedad de credencial de identidad federada.
Para más información sobre las regiones admitidas, tiempo para propagar actualizaciones de credenciales federadas, emisores admitidos y mucho más, lea Consideraciones y restricciones importantes para las credenciales de identidad federada.
Requisitos previos
Creación de un registro de aplicación en Microsoft Entra ID. Conceda a su aplicación acceso a los recursos de Azure destinados a la carga de trabajo de software externo.
Busque el id. de objeto de la aplicación (no el id. de aplicación (cliente)) que necesita en los pasos siguientes. Puede encontrar el identificador de objeto de la aplicación en el centro de administración de Microsoft Entra. Vaya a la lista de registros de aplicaciones y seleccione el registro de su aplicación. En Información general->Essentials, busque el id. de objeto.
Obtenga la información de subject e issuer para el IdP externo y la carga de trabajo de software, que necesitará en los pasos siguientes.
Configuración de una credencial de identidad federada en una aplicación
Acciones de GitHub
Para agregar una identidad federada para acciones de GitHub, siga estos pasos:
Encuentre el registro de su aplicación en la experiencia de registros de aplicaciones del centro de administración de Microsoft Entra. Seleccione Certificados y secretos en el panel de navegación izquierdo, seleccione la pestaña Credenciales federadas y, a continuación, Agregar credencial.
En el cuadro desplegable Escenario de credencial federada, seleccioneAcciones de GitHub que implementan recursos de Azure.
Especifique la organización y el repositorio para el flujo de trabajo de las acciones de GitHub.
En Tipo de entidad, seleccione Entorno, Rama, Solicitud de incorporación de cambios o Etiqueta y especifique el valor. Los valores deben coincidir exactamente con la configuración del flujo de trabajo de GitHub. No se admite la coincidencia de patrones para ramas y etiquetas. Especifique un entorno si el flujo de trabajo de inserción se ejecuta en varias ramas o etiquetas. Para más información, consulte los ejemplos.
Agregue un Nombre a la credencial federada.
Los campos de Emisor, Audiencias e Identificador de sujeto se rellenarán automáticamente en función de los valores especificados.
Seleccione Agregar para configurar la credencial federada.
Use los valores siguientes del registro de aplicación de Microsoft Entra para el flujo de trabajo de GitHub:
AZURE_CLIENT_ID
: el identificador de la aplicación (cliente)AZURE_TENANT_ID
: el identificador del directorio (inquilino)En la captura de pantalla siguiente se muestra cómo copiar el identificador de la aplicación y el del inquilino.
AZURE_SUBSCRIPTION_ID
: el identificador de la suscripción Para obtener el identificador de la suscripción, abra Suscripciones en Azure Portal y busque la suscripción. A continuación, copie el valor de Id. de suscripción.
Ejemplos de tipo de entidad
Ejemplo de rama
Para un flujo de trabajo desencadenado por un evento de envío de cambios o de solicitud de incorporación de cambios en la rama principal:
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
Especifique Rama en Tipo de entidad y "main" en Nombre de rama de GitHub.
Ejemplo de entorno
Para trabajos vinculados a un entorno llamado "production":
on:
push:
branches:
- main
jobs:
deployment:
runs-on: ubuntu-latest
environment: production
steps:
- name: deploy
# ...deployment-specific steps
Especifique Entorno en Tipo de entidad y "production" en Nombre del entorno de GitHub.
Ejemplo de etiqueta
Por ejemplo, para un flujo de trabajo desencadenado por un envío de cambios en la etiqueta llamada "v2":
on:
push:
# Sequence of patterns matched against refs/heads
branches:
- main
- 'mona/octocat'
- 'releases/**'
# Sequence of patterns matched against refs/tags
tags:
- v2
- v1.*
Especifique Etiqueta en Tipo de entidad y "v2" en Nombre de etiqueta de GitHub.
Ejemplo de solicitud de incorporación de cambios
En el caso de los flujos de trabajo desencadenados por un evento de solicitud de incorporación de cambios, especifique un tipo de entidad en Solicitud de incorporación de cambios.
Kubernetes
Encuentre el registro de su aplicación en la experiencia de registros de aplicaciones del centro de administración de Microsoft Entra. Seleccione Certificados y secretos en el panel de navegación izquierdo, seleccione la pestaña Credenciales federadas y, a continuación, Agregar credencial.
Seleccione el escenario Acceso de Kubernetes a recursos de Azure en el menú desplegable.
Rellene los campos Dirección URL del emisor del clúster, Espacio de nombres, Nombre de la cuenta de servicio y Nombre:
- El campo Dirección URL del emisor del clúster es la dirección URL del emisor de OIDC para el clúster administrado o la dirección URL del emisor de OIDC para un clúster autoadministrado.
- El campo Nombre de la cuenta de servicio es el nombre de la cuenta de servicio de Kubernetes, que proporciona una identidad para los procesos que se ejecutan en un pod.
- El campo Espacio de nombres es el espacio de nombres de la cuenta de servicio.
- El campo Nombre indica el nombre de la credencial federada, que no se puede cambiar más adelante.
Otros proveedores de identidades
Encuentre el registro de su aplicación en la experiencia de registros de aplicaciones del centro de administración de Microsoft Entra. Seleccione Certificados y secretos en el panel de navegación izquierdo, seleccione la pestaña Credenciales federadas y, a continuación, Agregar credencial.
Seleccione el escenario Otro emisor en el menú desplegable.
Especifique los campos siguientes (mediante una carga de trabajo de software que se ejecuta en Google Cloud como ejemplo):
- El campo Nombre indica el nombre de la credencial federada, que no se puede cambiar más adelante.
- Identificador de sujeto: debe coincidir con la notificación
sub
del token emitido por el proveedor de identidades externo. En este ejemplo con Google Cloud, subject es el identificador único de la cuenta de servicio que tiene pensado usar. - Emisor: debe coincidir con la notificación
iss
del token emitido por el proveedor de identidades externo. Dirección URL que cumple con la especificación de detección de OIDC. Microsoft Entra ID usa esta dirección URL del emisor para capturar las claves que son necesarias para validar el token. En el caso de Google Cloud, el valor de issuer es "https://accounts.google.com".
Enumeración de credenciales de identidad federada en una aplicación
Encuentre el registro de su aplicación en la experiencia de registros de aplicaciones del centro de administración de Microsoft Entra. Seleccione Certificados y secretos en el panel de navegación izquierdo y seleccione la pestaña Credenciales federadas. Se enumeran las credenciales federadas configuradas en la aplicación.
Eliminación de una credencial de identidad federada desde una aplicación
Encuentre el registro de su aplicación en la experiencia de registros de aplicaciones del centro de administración de Microsoft Entra. Seleccione Certificados y secretos en el panel de navegación izquierdo y seleccione la pestaña Credenciales federadas. Se enumeran las credenciales federadas configuradas en la aplicación.
Para eliminar una credencial de identidad federada, seleccione el icono de eliminación de la credencial.
Requisitos previos
- Si aún no tiene una, regístrese para obtener una cuenta gratuita de Azure antes de continuar.
Use el entorno de Bash en Azure Cloud Shell. Para más información, consulte Inicio rápido para Bash en Azure Cloud Shell.
Si prefiere ejecutar comandos de referencia de la CLI localmente, instale la CLI de Azure. Si utiliza Windows o macOS, considere la posibilidad de ejecutar la CLI de Azure en un contenedor Docker. Para más información, vea Ejecución de la CLI de Azure en un contenedor de Docker.
Si usa una instalación local, inicie sesión en la CLI de Azure mediante el comando az login. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para ver otras opciones de inicio de sesión, consulte Inicio de sesión con la CLI de Azure.
En caso de que se le solicite, instale las extensiones de la CLI de Azure la primera vez que la use. Para más información sobre las extensiones, consulte Uso de extensiones con la CLI de Azure.
Ejecute az version para buscar cuál es la versión y las bibliotecas dependientes que están instaladas. Para realizar la actualización a la versión más reciente, ejecute az upgrade.
- Creación de un registro de aplicación en Microsoft Entra ID. Conceda a su aplicación acceso a los recursos de Azure destinados a la carga de trabajo de software externo.
- Busque el identificador de objeto, el identificador de aplicación (cliente) o el identificador URI de la aplicación, que necesitará en los pasos siguientes. Puede encontrar estos valores en el centro de administración de Microsoft Entra. Vaya a la lista de aplicaciones registradas y seleccione el registro de la aplicación. En Información general:>Essentials, obtenga el identificador de objeto, el identificador de aplicación (cliente) o el valor de URI de Id. de aplicación, que necesitará en los pasos siguientes.
- Obtenga la información de subject e issuer para el IdP externo y la carga de trabajo de software, que necesitará en los pasos siguientes.
Configuración de una credencial de identidad federada en una aplicación
Ejecute el comando az ad app federated-credential create para crear una nueva credencial de identidad federada en la aplicación.
El parámetro id
especifica el identificador URI, el identificador de aplicación o el identificador de objeto de la aplicación. El parámetro parameters
especifica los parámetros, en formato JSON, para crear la credencial de identidad federada.
Ejemplo de Acciones de GitHub
El nombre especifica el nombre de su credencial de identidad federada.
El emisor identifica la ruta de acceso al proveedor OIDC de GitHub: https://token.actions.githubusercontent.com/
. La aplicación de Azure confiará en este emisor.
subject identifica la organización GitHub, el repositorio y el entorno del flujo de trabajo GitHub Actions. Cuando el flujo de trabajo de Acciones de GitHub solicita a la plataforma de identidad de Microsoft intercambiar un token de GitHub por un token de acceso, los valores de la credencial de identidad federada se comprueban con el token de GitHub proporcionado. Para que Azure conceda un token de acceso, la solicitud debe coincidir con las condiciones definidas aquí.
- Para trabajos vinculados a un entorno:
repo:< Organization/Repository >:environment:< Name >
- En el caso de los trabajos no vinculados a un entorno, incluya la ruta de acceso de referencia para una rama o etiqueta en función de la ruta de acceso de referencia usada para desencadenar el flujo de trabajo:
repo:< Organization/Repository >:ref:< ref path>
. Por ejemplo,repo:n-username/ node_express:ref:refs/heads/my-branch
orepo:n-username/ node_express:ref:refs/tags/my-tag
. - En el caso de los flujos de trabajo desencadenados por un evento de solicitud de incorporación de cambios:
repo:< Organization/Repository >:pull-request
.
az ad app federated-credential create --id 00001111-aaaa-2222-bbbb-3333cccc4444 --parameters credential.json
("credential.json" contains the following content)
{
"name": "Testing",
"issuer": "https://token.actions.githubusercontent.com",
"subject": "repo:octo-org/octo-repo:environment:Production",
"description": "Testing",
"audiences": [
"api://AzureADTokenExchange"
]
}
Ejemplo de Kubernetes
issuer es la dirección URL del emisor de la cuenta de servicio (la dirección URL del emisor de OIDC para el clúster administrado o la dirección URL del emisor de OIDC para un clúster autoadministrado).
subject es el nombre del firmante en los tokens emitidos para la cuenta de servicio. Kubernetes usa el formato siguiente para los nombres de firmante: system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>
.
El nombre indica el nombre de la credencial federada, que no se podrá cambiar posteriormente.
audiences enumera las audiencias que pueden aparecer en el token externo. Este campo es obligatorio. El valor recomendado es "api://AzureADTokenExchange".
az ad app federated-credential create --id 00001111-aaaa-2222-bbbb-3333cccc4444 --parameters credential.json
("credential.json" contains the following content)
{
"name": "Kubernetes-federated-credential",
"issuer": "https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/",
"subject": "system:serviceaccount:erp8asle:pod-identity-sa",
"description": "Kubernetes service account federated credential",
"audiences": [
"api://AzureADTokenExchange"
]
}
Otro ejemplo de proveedores de identidades
Es posible configurar una credencial de identidad federada en una aplicación y crear una relación de confianza con un proveedor de identidades externo. El ejemplo siguiente utiliza una carga de trabajo de software que se ejecuta en Google Cloud:
El nombre indica el nombre de la credencial federada, que no se podrá cambiar posteriormente.
El id es el identificador de objeto, id. de aplicación (cliente) o el identificador URI de la aplicación.
subject: debe coincidir con la notificación sub
del token emitido por el proveedor de identidades externo. En este ejemplo con Google Cloud, subject es el identificador único de la cuenta de servicio que tiene pensado usar.
issuer: debe coincidir con la notificación iss
del token emitido por el proveedor de identidades externo. Dirección URL que cumple con la especificación de detección de OIDC. Microsoft Entra ID usa esta dirección URL del emisor para capturar las claves que son necesarias para validar el token. En el caso de Google Cloud, el valor de issuer es "https://accounts.google.com".
Las audiencias muestran los valores que pueden aparecer en el token externo. Este campo es obligatorio. El valor recomendado es "api://AzureADTokenExchange".
az ad app federated-credential create --id 00001111-aaaa-2222-bbbb-3333cccc4444 --parameters credential.json
("credential.json" contains the following content)
{
"name": "GcpFederation",
"issuer": "https://accounts.google.com",
"subject": "112633961854638529490",
"description": "Test GCP federation",
"audiences": [
"api://AzureADTokenExchange"
]
}
Enumeración de credenciales de identidad federada en una aplicación
Ejecute el comando az ad app federated-credential list para mostrar las credenciales de identidad federada en la aplicación.
El parámetro id especifica el identificador URI, el identificador de aplicación o el identificador de objeto de la aplicación.
az ad app federated-credential list --id 00001111-aaaa-2222-bbbb-3333cccc4444
Obtención de una credencial de identidad federada en una aplicación
Ejecute el comando az ad app federated-credential show para obtener una credencial de identidad federada en la aplicación.
El parámetro id especifica el identificador URI, el identificador de aplicación o el identificador de objeto de la aplicación.
Federated-credential-id especifica el identificador o el nombre de la credencial de identidad federada.
az ad app federated-credential show --id 00001111-aaaa-2222-bbbb-3333cccc4444 --federated-credential-id c79f8feb-a9db-4090-85f9-90d820caa0eb
Eliminación de una credencial de identidad federada desde una aplicación
Ejecute el comando az ad app federated-credential delete para retirar una credencial de identidad federada de la aplicación.
El parámetro id especifica el identificador URI, el identificador de aplicación o el identificador de objeto de la aplicación.
Federated-credential-id especifica el identificador o el nombre de la credencial de identidad federada.
az ad app federated-credential delete --id 00001111-aaaa-2222-bbbb-3333cccc4444 --federated-credential-id c79f8feb-a9db-4090-85f9-90d820caa0eb
Requisitos previos
- Para ejecutar los scripts de ejemplo, tiene dos opciones:
- Use Azure Cloud Shell, que puede abrir mediante el botón Probar, ubicado en la esquina superior derecha de los bloques de código.
- Ejecute los scripts localmente con Azure PowerShell, tal como se describe en la sección siguiente.
- Creación de un registro de aplicación en Microsoft Entra ID. Conceda a su aplicación acceso a los recursos de Azure destinados a la carga de trabajo de software externo.
- Busque el id. de objeto de la aplicación (no el id. de aplicación (cliente)) que necesita en los pasos siguientes. Puede encontrar el identificador de objeto de la aplicación en el centro de administración de Microsoft Entra. Vaya a la lista de aplicaciones registradas y seleccione el registro de la aplicación. En Información general->Essentials, busque el id. de objeto.
- Obtenga la información de subject e issuer para el IdP externo y la carga de trabajo de software, que necesitará en los pasos siguientes.
Configuración de Azure PowerShell de forma local
Para usar Azure PowerShell localmente con este artículo en lugar de usar Cloud Shell:
Instale la versión más reciente de Azure PowerShell si aún no lo ha hecho.
Inicie sesión en Azure.
Connect-AzAccount
Instalar la versión más reciente de PowerShellGet.
Install-Module -Name PowerShellGet -AllowPrerelease
Es posible que necesite
Exit
fuera de la sesión de PowerShell actual después de ejecutar este comando para el siguiente paso.Instale la versión preliminar del módulo
Az.Resources
para llevar a cabo las operaciones de identidad asignadas por el usuario que se indican en este artículo.Install-Module -Name Az.Resources -AllowPrerelease
Configuración de una credencial de identidad federada en una aplicación
Ejecute el cmdlet New-AzADAppFederatedCredential para crear una nueva credencial de identidad federada en una aplicación.
Ejemplo de Acciones de GitHub
- ApplicationObjectId: El id. de objeto de la aplicación (no el id. de aplicación [cliente]) que registró anteriormente en Microsoft Entra ID.
- Issuer identifica a GitHub como el emisor del token externo.
- Subject identifica la organización GitHub, el repositorio y el entorno del flujo de trabajo de Acciones de GitHub. Cuando el flujo de trabajo de Acciones de GitHub solicita a la plataforma de identidad de Microsoft intercambiar un token de GitHub por un token de acceso, los valores de la credencial de identidad federada se comprueban con el token de GitHub proporcionado.
- Para trabajos vinculados a un entorno:
repo:< Organization/Repository >:environment:< Name >
- En el caso de los trabajos no vinculados a un entorno, incluya la ruta de acceso de referencia para una rama o etiqueta en función de la ruta de acceso de referencia usada para desencadenar el flujo de trabajo:
repo:< Organization/Repository >:ref:< ref path>
. Por ejemplo,repo:n-username/ node_express:ref:refs/heads/my-branch
orepo:n-username/ node_express:ref:refs/tags/my-tag
. - En el caso de los flujos de trabajo desencadenados por un evento de solicitud de incorporación de cambios:
repo:< Organization/Repository >:pull-request
.
- Para trabajos vinculados a un entorno:
- Name indica el nombre de la credencial federada, que no se puede cambiar posteriormente.
- Las audiencias muestran los valores que pueden aparecer en el token externo. Este campo es obligatorio. El valor recomendado es "api://AzureADTokenExchange".
New-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -Audience api://AzureADTokenExchange -Issuer 'https://token.actions.githubusercontent.com/' -Name 'GitHub-Actions-Test' -Subject 'repo:octo-org/octo-repo:environment:Production'
Ejemplo de Kubernetes
- ApplicationObjectId: El id. de objeto de la aplicación (no el id. de aplicación [cliente]) que registró anteriormente en Microsoft Entra ID.
- Issuer es su URL de emisor de la cuenta de servicio (la URL de emisor de OIDC para el clúster administrado o la URL de emisor de OIDC para un clúster autoadministrado).
- Subject indica el nombre del sujeto en los tokens emitidos para la cuenta de servicio. Kubernetes usa el formato siguiente para los nombres de firmante:
system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>
. - Name indica el nombre de la credencial federada, que no se puede cambiar posteriormente.
- Audience muestra los valores que pueden aparecer en la solicitud
aud
del token externo.
New-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -Audience api://AzureADTokenExchange -Issuer 'https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/' -Name 'Kubernetes-federated-credential' -Subject 'system:serviceaccount:erp8asle:pod-identity-sa'
Otro ejemplo de proveedores de identidades
Especifique los parámetros siguientes (mediante una carga de trabajo de software que se ejecuta en Google Cloud como ejemplo):
- ObjectId: El id. de objeto de la aplicación (no el id. de aplicación [cliente]) que registró anteriormente en Microsoft Entra ID.
- Name indica el nombre de la credencial federada, que no se puede cambiar posteriormente.
- Subject: debe coincidir con la notificación
sub
del token emitido por el proveedor de identidades externo. En este ejemplo con Google Cloud, subject es el identificador único de la cuenta de servicio que tiene pensado usar. - Emisor: debe coincidir con la notificación
iss
del token emitido por el proveedor de identidades externo. Dirección URL que cumple con la especificación de detección de OIDC. Microsoft Entra ID usa esta dirección URL del emisor para capturar las claves que son necesarias para validar el token. En el caso de Google Cloud, el valor de issuer es "https://accounts.google.com". - Audiences: debe coincidir con la notificación
aud
del token externo. Por motivos de seguridad, debe elegir un valor que sea único para los tokens diseñados para Microsoft Entra ID. El valor recomendado es "api://AzureADTokenExchange".
New-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -Audience api://AzureADTokenExchange -Issuer 'https://accounts.google.com' -Name 'GcpFederation' -Subject '112633961854638529490'
Enumeración de credenciales de identidad federada en una aplicación
Ejecute el cmdlet Get-AzADAppFederatedCredential para mostrar las credenciales de identidad federada de una aplicación.
Get-AzADApplication -ObjectId $app | Get-AzADAppFederatedCredential
Obtención de una credencial de identidad federada en una aplicación
Ejecute el cmdlet Get-AzADAppFederatedCredential para obtener la credencial de identidad federada por identificador desde una aplicación.
Get-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -FederatedCredentialId $credentialId
Eliminación de una credencial de identidad federada desde una aplicación
Ejecute el cmdlet Remove-AzADAppFederatedCredential para eliminar una credencial de identidad federada de una aplicación.
Remove-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -FederatedCredentialId $credentialId
Requisitos previos
Creación de un registro de aplicación en Microsoft Entra ID. Conceda a su aplicación acceso a los recursos de Azure destinados a la carga de trabajo de software externo.
Busque el id. de objeto de la aplicación (no el id. de aplicación (cliente)) que necesita en los pasos siguientes. Puede encontrar el identificador de objeto de la aplicación en el centro de administración de Microsoft Entra. Vaya a la lista de aplicaciones registradas y seleccione el registro de la aplicación. En Información general->Essentials, busque el id. de objeto.
Obtenga la información de subject e issuer para el IdP externo y la carga de trabajo de software, que necesitará en los pasos siguientes.
El punto de conexión beta de Microsoft Graph (https://graph.microsoft.com
) muestra las API REST para crear, actualizar y eliminar federatedIdentityCredentials en las aplicaciones. Inicie Azure Cloud Shell e inicie sesión en el inquilino para ejecutar comandos de Microsoft Graph desde la CLI de AZ.
Configuración de una credencial de identidad federada en una aplicación
Acciones de GitHub
Utilice el método siguiente para crear una nueva credencial de identidad federada en la aplicación (según el identificador de objeto de la aplicación). El issuer identifica a GitHub como el emisor del token externo. subject identifica la organización GitHub, el repositorio y el entorno del flujo de trabajo GitHub Actions. Cuando el flujo de trabajo de Acciones de GitHub solicita a la plataforma de identidad de Microsoft intercambiar un token de GitHub por un token de acceso, los valores de la credencial de identidad federada se comprueban con el token de GitHub proporcionado.
az rest --method POST --uri 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials' --body '{"name":"Testing","issuer":"https://token.actions.githubusercontent.com","subject":"repo:octo-org/octo-repo:environment:Production","description":"Testing","audiences":["api://AzureADTokenExchange"]}'
Y obtiene la respuesta:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"issuer": "https://token.actions.githubusercontent.com",
"name": "Testing",
"subject": "repo:octo-org/octo-repo:environment:Production"
}
name: el nombre de la aplicación de Azure.
issuer: ruta de acceso al proveedor OIDC de GitHub: https://token.actions.githubusercontent.com
. La aplicación de Azure confiará en este emisor.
subject: antes de que Azure conceda un token de acceso, la solicitud debe coincidir con las condiciones definidas aquí.
- Para trabajos vinculados a un entorno:
repo:< Organization/Repository >:environment:< Name >
- En el caso de los trabajos no vinculados a un entorno, incluya la ruta de acceso de referencia para una rama o etiqueta en función de la ruta de acceso de referencia usada para desencadenar el flujo de trabajo:
repo:< Organization/Repository >:ref:< ref path>
. Por ejemplo,repo:n-username/ node_express:ref:refs/heads/my-branch
orepo:n-username/ node_express:ref:refs/tags/my-tag
. - En el caso de los flujos de trabajo desencadenados por un evento de solicitud de incorporación de cambios:
repo:< Organization/Repository >:pull-request
.
audiences enumera las audiencias que pueden aparecer en el token externo. Este campo es obligatorio. El valor recomendado es "api://AzureADTokenExchange".
Ejemplo de Kubernetes
Utilice el método siguiente para configurar una credencial de identidad federada en una aplicación y crear una relación de confianza con una cuenta de servicio de Kubernetes. Especifique los parámetros siguientes:
- issuer es la dirección URL del emisor de la cuenta de servicio (la dirección URL del emisor de OIDC para el clúster administrado o la dirección URL del emisor de OIDC para un clúster autoadministrado).
- subject es el nombre del firmante en los tokens emitidos para la cuenta de servicio. Kubernetes usa el formato siguiente para los nombres de firmante:
system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>
. - El nombre indica el nombre de la credencial federada, que no se podrá cambiar posteriormente.
- audiences enumera las audiencias que pueden aparecer en el token externo. Este campo es obligatorio. El valor recomendado es "api://AzureADTokenExchange".
az rest --method POST --uri 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials' --body '{"name":"Kubernetes-federated-credential","issuer":"https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/","subject":"system:serviceaccount:erp8asle:pod-identity-sa","description":"Kubernetes service account federated credential","audiences":["api://AzureADTokenExchange"]}'
Y obtiene la respuesta:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Kubernetes service account federated credential",
"id": "51ecf9c3-35fc-4519-a28a-8c27c6178bca",
"issuer": "https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/",
"name": "Kubernetes-federated-credential",
"subject": "system:serviceaccount:erp8asle:pod-identity-sa"
}
Otro ejemplo de proveedores de identidades
Utilice el método siguiente para configurar una credencial de identidad federada en una aplicación y crear una relación de confianza con un proveedor de identidades externo. Especifique los parámetros siguientes (mediante una carga de trabajo de software que se ejecuta en Google Cloud como ejemplo):
- El nombre indica el nombre de la credencial federada, que no se podrá cambiar posteriormente.
- ObjectId: El id. de objeto de la aplicación (no el id. de aplicación [cliente]) que registró anteriormente en Microsoft Entra ID.
- subject: debe coincidir con la notificación
sub
del token emitido por el proveedor de identidades externo. En este ejemplo con Google Cloud, subject es el identificador único de la cuenta de servicio que tiene pensado usar. - issuer: debe coincidir con la notificación
iss
del token emitido por el proveedor de identidades externo. Dirección URL que cumple con la especificación de detección de OIDC. Microsoft Entra ID usa esta dirección URL del emisor para capturar las claves que son necesarias para validar el token. En el caso de Google Cloud, el valor de issuer es "https://accounts.google.com". - audiences enumera las audiencias que pueden aparecer en el token externo. Este campo es obligatorio. El valor recomendado es "api://AzureADTokenExchange".
az rest --method POST --uri 'https://graph.microsoft.com/applications/<ObjectID>/federatedIdentityCredentials' --body '{"name":"GcpFederation","issuer":"https://accounts.google.com","subject":"112633961854638529490","description":"Testing","audiences":["api://AzureADTokenExchange"]}'
Y obtiene la respuesta:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "51ecf9c3-35fc-4519-a28a-8c27c6178bca",
"issuer": "https://accounts.google.com"",
"name": "GcpFederation",
"subject": "112633961854638529490"
}
Enumeración de credenciales de identidad federada en una aplicación
Utilice el método siguiente para mostrar las credenciales de identidad federada de una aplicación (según el id. de objeto de la aplicación):
az rest -m GET -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials'
Y obtiene una respuesta similar a la siguiente:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials",
"value": [
{
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"issuer": "https://token.actions.githubusercontent.com/",
"name": "Testing",
"subject": "repo:octo-org/octo-repo:environment:Production"
}
]
}
Obtención de una credencial de identidad federada en una aplicación
Utilice el método siguiente para obtener una credencial de identidad federada para una aplicación (según el id. de objeto de la aplicación):
az rest -m GET -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444//federatedIdentityCredentials/00aa00aa-bb11-cc22-dd33-44ee44ee44ee'
Y obtiene una respuesta similar a la siguiente:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials",
"value": {
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"@odata.id": "https://graph.microsoft.com/v2/3d1e2be9-a10a-4a0c-8380-7ce190f98ed9/directoryObjects/$/Microsoft.DirectoryServices.Application('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials('00001111-aaaa-2222-bbbb-3333cccc4444')/00001111-aaaa-2222-bbbb-3333cccc4444",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"issuer": "https://token.actions.githubusercontent.com/",
"name": "Testing",
"subject": "repo:octo-org/octo-repo:environment:Production"
}
}
Eliminación de una credencial de identidad federada desde una aplicación
Utilice el siguiente comando para eliminar una credencial de identidad federada de una aplicación (según el id. de objeto de la aplicación):
az rest -m DELETE -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials/00aa00aa-bb11-cc22-dd33-44ee44ee44ee'
Pasos siguientes
- Para aprender a utilizar la federación de identidades de carga de trabajo para Kubernetes, consulte el proyecto de código abierto Identidad de la carga de trabajo de Microsoft Entra ID para Kubernetes.
- Para aprender a usar la federación de identidades de carga de trabajo para Acciones de GitHub, consulte Configuración de un flujo de trabajo de Acciones de GitHub para obtener un token de acceso.
- Lea la documentación de 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 de Azure.
- Para más información, lea sobre cómo Microsoft Entra ID utiliza la concesión de credenciales de cliente de OAuth 2.0 y una aserción de cliente emitida por otro IdP para obtener un token.
- Para obtener información sobre el formato necesario de los JWT creados por proveedores de identidades externos, consulte la información sobre el formato de aserción.