Compartir a través de


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 en 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).

Después, puede configurar una carga de trabajo de software externo para intercambiar un token desde el IdP externo para un token de acceso desde la 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 de , desarrollador de aplicaciones, Administrador de aplicaciones en la nubeo Propietario de la aplicación. El permiso microsoft.directory/applications/credentials/update se requiere para actualizar una credencial de identidad federada.

Se pueden 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, hay varios fragmentos importantes de información que proporcionar:

  • emisor y 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 a la plataforma de identidad de Microsoft que intercambie el token externo por un token de acceso, los valores de emisor y de sujeto de la credencial de identidad federada se verifican frente a las reclamaciones issuer y subject proporcionadas en el token externo. Si se supera esa comprobación de validación, la plataforma de identidad de Microsoft emite un token de acceso a la carga de trabajo de software externo.

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

  • sujeto 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. El asunto no tiene un formato fijo, ya que cada IdP usa su propio formato: a veces un GUID, a veces un identificador delimitado por dos puntos, a veces cadenas arbitrarias. Este campo tiene un límite de caracteres 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 de 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 sujeto, la credencial de identidad federada se crea correctamente sin errores. El error no se vuelve evidente hasta que se produce un error en el intercambio de tokens.

  • audiences enumera las audiencias que pueden aparecer en el token externo. Obligatorio. 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.

  • nombre es el identificador único de la credencial de identidad federada. Obligatorio. Este campo tiene un límite de 3 a 120 caracteres y debe ser compatible con URL. Se admiten caracteres alfanuméricos, guiones o caracteres de subrayado; el primer carácter solo debe ser alfanumérico. Es inmutable una vez creado.

  • descripción es la descripción proporcionada por el usuario de 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 las actualizaciones de credenciales federadas, emisores admitidos y mucho más, lea Consideraciones y restricciones importantes para las credenciales de identidad federada.

Prerrequisitos

  • Creación de un registro de aplicaciones o una identidad administrada en Microsoft Entra ID. Permita que su aplicación acceda a los recursos de Azure destinados al trabajo de software externo.
  • Busque el identificador de objeto de la aplicación (no el identificador 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 la aplicación. En Información general, puede encontrar 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 las acciones de GitHub, siga estos pasos:

  1. Busque el registro de la aplicación en la sección 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 seleccione Agregar credencial.

  2. En el cuadro desplegable Escenario de credencial federada, seleccioneAcciones de GitHub que implementan recursos de Azure.

  3. Especifique la organización y el repositorio para su flujo de trabajo de Acciones de GitHub.

  4. 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 obtener más información, lea los ejemplos de .

  5. Agregue un Nombre a la credencial federada.

  6. Los campos de Emisor, Audiencias e Identificador de sujeto se rellenarán automáticamente en función de los valores especificados.

  7. Seleccione Agregar para configurar la credencial federada.

    Captura de pantalla de la ventana Agregar una credencial, en la que se muestran los valores de ejemplo.

Use los siguientes valores del registro de la aplicación 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 aplicación y el identificador de inquilino.

    Captura de pantalla que muestra cómo copiar el identificador de aplicación y el identificador de inquilino desde el Centro de administración de Microsoft Entra.

  • 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 ID de suscripción .

Ejemplos de tipos 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 denominado "producción":

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 una inserción en la etiqueta denominada "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

Busque el registro de la aplicación en la sección de registros de aplicaciones del Centro de administración de Microsoft Entra. Seleccione Certificados & secretos en el panel de navegación izquierdo, seleccione la pestaña Credenciales federadas y seleccione Agregar credencial.

Seleccione el escenario Kubernetes de acceso 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.
  • Nombre de 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.
  • Nombre es el nombre de la credencial federada, que no se puede cambiar más adelante.

Otros proveedores de identidades

Busque el registro de la aplicación en la sección 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 seleccione Agregar credencial.

Seleccione el escenario Otro emisor en el menú desplegable.

Especifique los siguientes campos (mediante una carga de trabajo de software que se ejecuta en Google Cloud como ejemplo):

  • Nombre es 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, asunto es el identificador único de la cuenta de servicio que planea 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 necesarias para validar el token. Para Google Cloud, el emisor es https://accounts.google.com.

Enumeración de credenciales de identidad federada en una aplicación

Busque el registro de la aplicación en la sección de registros de aplicaciones del Centro de administración de Microsoft Entra. Seleccione certificados & secretos en el panel de navegación izquierdo y seleccione la pestaña credenciales federadas . Se muestran las credenciales federadas configuradas en la aplicación.

Eliminación de una credencial de identidad federada de una aplicación

Busque el registro de la aplicación en la sección de registros de aplicaciones del Centro de administración de Microsoft Entra. Seleccione certificados & secretos en el panel de navegación izquierdo y seleccione la pestaña credenciales federadas . Se muestran las credenciales federadas configuradas en la aplicación.

Para eliminar una credencial de identidad federada, seleccione el icono eliminar para la credencial.

Configuración de una credencial de identidad federada flexible (versión preliminar)

  1. Vaya a Microsoft Entra ID y seleccione la aplicación donde desea configurar la credencial de identidad federada.
  2. En el panel de navegación izquierdo, seleccione Certificados y secretos.
  3. En la pestaña credenciales federadas, seleccione + Agregar credencial.
  4. En la ventana Agregar una credencial que aparece, en el menú desplegable al lado de Escenario de credenciales federadas, seleccione Otro emisor.
  5. En Valor introduzca la expresión de coincidencia de notificaciones que desea usar.

Prerrequisitos

  • Usa el entorno de Bash en Azure Cloud Shell. Para obtener más información, consulte la Guía de inicio rápido de para Bash en Azure Cloud Shell.

  • Si prefiere ejecutar comandos de referencia de la CLI localmente, instale Azure CLI. Si se ejecuta en Windows o macOS, considere la posibilidad de ejecutar la CLI de Azure en un contenedor de Docker. Para más información, consulte 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. Para finalizar el proceso de autenticación, siga los pasos que se muestran en el terminal. Para ver otras opciones de inicio de sesión, consulte iniciar sesión con la CLI de Azure.

    • Cuando se le solicite, instale la extensión de la CLI de Azure en el primer uso. 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.

  • Crear un registro de aplicación en Microsoft Entra ID. Autorice a su aplicación el acceso a los recursos de Azure asociados con la carga de trabajo de su software externo.
  • Busque el identificador de objeto, el identificador de aplicación (cliente) o el identificador URI de la aplicación, que necesita 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/. Este emisor se vuelve confiable para tu aplicación de Azure.

El sujeto 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 que intercambie un token de GitHub para un token de acceso, los valores de la credencial de identidad federada se comprueban con el token de GitHub proporcionado. 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 o repo:n-username/ node_express:ref:refs/tags/my-tag.
  • Para los flujos de trabajo activados por un evento de pull request: 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

La URL del emisor de tu cuenta de servicio es el emisor (la URL del emisor de OIDC para el clúster administrado o la URL del emisor de OIDC para un clúster autoadministrado).

El sujeto indica el nombre del sujeto en los tokens emitidos para la cuenta de servicio. Kubernetes usa el siguiente formato para los nombres de sujeto: system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>.

El nombre es el nombre de la credencial federada, que no se puede cambiar más adelante.

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": "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"
    ]
}

Ejemplo de otros proveedores de identidades

Puede configurar una credencial de identidad federada en una aplicación y crear una relación de confianza con otros proveedores de identidades externos. En el ejemplo siguiente se usa una carga de trabajo de software que se ejecuta en Google Cloud como ejemplo:

  • name es el nombre de la credencial federada, que no se puede cambiar más adelante.
  • id: el identificador de objeto, el identificador de aplicación (cliente) o el identificador URI de la aplicación.
  • subject: debe coincidir con la reclamación sub en el token emitido por el proveedor de identidades externo. En este ejemplo con Google Cloud, asunto es el identificador único de la cuenta de servicio que planea usar.
  • issuer: debe coincidir con la reclamación iss en el 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 necesarias para validar el token. Para Google Cloud, el emisor es https://accounts.google.com.
  • audiences: enumera las audiencias que pueden estar presentes 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.

El 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 de 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.

El 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

Prerrequisitos

  • 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 scripts localmente con Azure PowerShell, como se describe en la sección siguiente.
  • Crear 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 de la aplicación (no el identificador 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 el apartado Introducción->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 local de Azure PowerShell

Para usar Azure PowerShell localmente para este artículo en lugar de usar Cloud Shell:

  1. Instale la versión más reciente de Azure PowerShell si aún no lo ha hecho.

  2. Inicie sesión en Azure.

    Connect-AzAccount
    
  3. Instale 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.

  4. Instale la versión preliminar del módulo Az.Resources para realizar las operaciones de credenciales de identidad federada 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 del objeto de la app (no el ID de la aplicación (cliente)) que registraste previamente en Microsoft Entra ID.
  • Emisor identifica a GitHub como el emisor de tokens externos.
  • Subject identifica la organización, el repositorio y el entorno de GitHub para el flujo de trabajo de GitHub Actions. Cuando el flujo de trabajo de Acciones de GitHub solicita a la plataforma de identidad de Microsoft que intercambie un token de GitHub para 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 o repo:n-username/ node_express:ref:refs/tags/my-tag.
    • Para los flujos de trabajo desencadenados por un evento de pull request: repo:< Organization/Repository >:pull-request.
  • Nombre es el nombre de la credencial federada, que no se puede cambiar más adelante.
  • 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 identificador de objeto de la aplicación (que no es el ID de aplicación (cliente)) que registró anteriormente en Microsoft Entra ID.
  • Emisor 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).
  • Sujeto indica el nombre del sujeto en los tokens emitidos para la cuenta de servicio. Kubernetes usa el siguiente formato para los nombres de sujeto: system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>.
  • Nombre es el nombre de la credencial federada, que no se puede cambiar más adelante.
  • 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'

Ejemplo de otros 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 la aplicación (cliente)) que registraste anteriormente en Microsoft Entra ID.
  • Nombre es el nombre de la credencial federada, que no se puede cambiar más adelante.
  • Sujeto: debe coincidir con la notificación sub del token emitido por el proveedor de identidades externo. En este ejemplo con Google Cloud, asunto es el identificador único de la cuenta de servicio que planea 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 necesarias para validar el token. Para Google Cloud, el emisor es https://accounts.google.com.
  • Audiences: debe coincidir con la notificación aud del token externo. Por motivos de seguridad, debe elegir un valor único para los tokens diseñados para el identificador de Microsoft Entra. 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 enumerar 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 de 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

Prerrequisitos

Crear un registro de aplicaciones 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 de la aplicación (no el identificador 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 tu 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

Ejecute el método siguiente para crear una nueva credencial de identidad federada en la aplicación (especificado por el identificador de objeto de la aplicación). El issuer identifica GitHub como emisor de tokens externos. subject identifica la organización, el repositorio y el entorno de GitHub para el flujo de trabajo de Acciones de GitHub. Cuando el flujo de trabajo de Acciones de GitHub solicita a la plataforma de identidad de Microsoft que intercambie un token de GitHub para 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 recibe 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"
}

En el fragmento de código, los parámetros son los siguientes:

  • name: el nombre de la aplicación de Azure.
  • issuer: ruta de acceso al proveedor OIDC de GitHub: https://token.actions.githubusercontent.com. Este emisor se convierte en confiable para tu aplicación de Azure.
  • 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 o repo:n-username/ node_express:ref:refs/tags/my-tag.
    • Para los flujos de trabajo desencadenados por un evento de pull request: repo:< Organization/Repository >:pull-request.
  • audiences enumera las audiencias que pueden estar presentes en el token externo. Este campo es obligatorio. El valor recomendado es "api://AzureADTokenExchange".

Ejemplo de Kubernetes

Ejecute el siguiente método 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 URL del emisor de la cuenta de servicio (la URL del emisor de OIDC para el clúster administrado o la URL del 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 siguiente formato para los nombres de sujetos: system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>.
  • name es el nombre de la credencial federada, que no se puede cambiar más adelante.
  • audiences enumera las audiencias que pueden estar presentes 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 recibe 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"
}

Ejemplo de otros proveedores de identidades

Ejecute 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):

  • nombre es el nombre de la credencial federada, que no se puede cambiar más adelante.
  • ObjectID: el ID del objeto de la aplicación (que no es el ID de la aplicación (cliente)) que registraste anteriormente en Microsoft Entra ID.
  • sujeto: debe coincidir con la notificación sub del token emitido por el proveedor de identidades externo. En este ejemplo con Google Cloud, asunto es el identificador único de la cuenta de servicio que planea 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 necesarias para validar el token. En el caso de Google Cloud, el valor de emisor 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 recibe 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

Ejecute el método siguiente para obtener una credencial de identidad federada para una aplicación (especificada por el identificador 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 de una aplicación

Ejecute el método siguiente para eliminar una credencial de identidad federada de una aplicación (especificada por el identificador 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'

Consulte también