Semion Vasilevitzky y Jonathan Elkabas

Nota del editor: Bienvenido al cuarto y último tutorial práctico de «Comprender y prevenir los ataques a la identidad del agente Entra ID: una guía completa». Esta guía técnica, dividida en varias partes, te ayuda a comprender el enfoque de Microsoft respecto a las identidades de los agentes y cómo puedes protegerlas frente a los autores de amenazas. Para repasar los capítulos anteriores y las lecciones prácticas, empieza aquí.

En el capítulo 5 de nuestra guía, has aprendido a utilizar el Registro de agentes de Microsoft y has realizado ejercicios prácticos al respecto, además de seguir paso a paso las operaciones de tres flujos de autenticación de identidad de agentes en Entra ID.

En este «Practice Checkpoint», verificaremos los tres flujos que hemos comentado, siguiendo cada uno de ellos de principio a fin a través de Microsoft Graph y mostrando las reclamaciones reales del token en cada paso para atar todos los cabos.

En aras de la coherencia y la claridad, seguiremos utilizando la misma identidad de agente que creamos en los pasos anteriores y analizaremos los tokens resultantes generados en cada flujo.

A continuación te ofrecemos un breve resumen de la información que necesitas:

  • ID del plano = 3534ec06-21ea-4080-abd4-95116e260203
  • ID del plano SP = 17a48807-f813-421b-85b9-8c7e794bc4b9
  • Identidad del agente: ID = b85d92be-fa90-486b-94ed-b5ad91d35ceb
  • ID del agente de usuario = 2954440b-1617-46b1-9156-dad15f1f824f
  • Permisos delegados heredables = Group.Read.All
  • Permisos directos exclusivos de la aplicación a nivel de identidad del agente = User.Read.All

Flujo autónomo

En este flujo, la propia identidad del agente necesita acceder a un recurso.

Para empezar, tenemos que obtener el token T1. El proceso es similar al de obtener un token de acceso para un modelo de identidad de agente, pero con dos diferencias clave:

  • ámbito = api://AzureADTokenExchange/.default
  • incluye fmi_path = <agent-identity-id>
Figura 1. Obtención del token T1

Podemos descodificar el token T1, en el que:

  • El mapa «oid» se asigna al identificador SP del plano.
  • «azp» se corresponde con el ID del modelo de identidad del agente.
  • aud pertenece a la aplicación «AAD Token Exchange Endpoint», que es api://AzureADTokenExchange.
Figura 2: Decodificación del token T1

Con el token T1, ya podemos obtener el token de acceso de identidad del agente.

Figura 3: Obtención del token de acceso de identidad del agente

Al analizar el token Graph, podemos observar que:

  • La afirmación de aud es Microsoft Graph.
  • El «appid», al igual que el campo «oid», corresponde al identificador del agente.
  • En funciones La reclamación incluye el User.Read.All permiso, que habíamos asignado anteriormente y que se asignó directamente a la identidad del agente como un permiso exclusivo de la aplicación.

En este punto, la identidad del agente puede llamar a Graph en el inquilino de acuerdo con sus permisos exclusivos para la aplicación.

Figura 4: Descifrado del token de acceso de identidad del agente Graph

Flujo «en nombre de»

En este flujo, la identidad del agente realiza acciones delegadas en nombre de un usuario y muestra los ámbitos de delegación heredables.

Para empezar, tendremos que obtener un token de cliente (TC). Para ello, primero debemos configurar los ámbitos de permiso de OAuth2 en el blueprint y dar mi consentimiento como usuario.

Figura 5: Configuración de los ámbitos de permiso de OAuth2 en el blueprint

Como siguiente paso, crearemos una aplicación SAP a través de la interfaz de usuario.

Figura 6: Registro de nuestra aplicación SAP

Añadiremos los permisos de Blueprint que acabamos de crear a nuestra aplicación DemoSAP:

Figura 7: Añadir permisos de blueprint a nuestra aplicación SAP de demostración

Para esta demostración, también permitiremos el flujo de clientes públicos:

Figura 8: Activación de los flujos de cliente públicos en nuestra demostración de autenticación

Ahora podemos obtener un token TC. El ClientID es el ID de la aplicación que acabamos de crear:

Figura 9. Obtención de un token TC mediante el ID de aplicación recién creado

A continuación, tenemos que pasar por los mensajes habituales de solicitud de consentimiento.

Figura 10. Concesión de permisos para nuestra aplicación de demostración

Esto devolverá el token TC, que me pertenece a mí como usuario. Podemos ver que la reclamación «aud» es el ID del Blueprint:

Figura 11. Al descodificar el token TC se observa que la afirmación «aud» corresponde al ID del modelo de identidad del agente.

Ahora podemos obtener el token T1 utilizando el mismo método que ya hemos utilizado.

Figura 12. Cómo volver a obtener el token T1

Antes de continuar, tendríamos que dar nuestro consentimiento para que la identidad del agente pueda actuar en nombre de nuestro usuario mediante una llamada estándar a OAuth2PermissionGrants con el ámbito que hemos asignado como permisos heredables.

Si ya has dado tu consentimiento a «AllPrincipals» en la sección «Configuración de permisos heredables», puedes saltarte este paso.

Figura 13. Permitir que la identidad del agente actúe en nombre del usuario

Por último, utilizando los tokens TC y T1, podemos obtener el token de acceso (TR).

Figura 14. Obtención del token de acceso TR

El token de acceso descodificado muestra lo siguiente:

  • Reclamación SCP con los permisos «Group.Read.All» heredables que hemos añadido anteriormente a nivel de blueprint.
  • el nombre de visualización de la aplicación y la reclamación «appid», que identifican la identidad del agente que actúa en nombre del usuario.
  • Las reclamaciones «idtyp», «name» y «oid» pertenecen todas al usuario (ya que se trata de un token delegado).
Figura 15. Descifrado del token de acceso TR

Flujo de usuario del agente

Este flujo es relevante para un usuario agente que necesite realizar acciones con un contexto de usuario.

Al igual que en el flujo autónomo de identidad del agente, necesitamos obtener un token T1.

Figura 16. Obtención del token T1 para el flujo de autenticación de usuario de nuestro agente

A continuación, tendríamos que dar nuestro consentimiento para que la identidad del agente pueda actuar en nombre del usuario del agente, tal y como hicimos en el flujo OBO.

En esta ocasión, especificaremos el ID de usuario del agente como ID del principal. Si ya has dado tu consentimiento para «AllPrincipals» en la sección «Configuración de permisos heredables», puedes saltarte este paso.

Figura 17. Permitir que la identidad del agente actúe en nombre del usuario del agente

Ahora, utilizando el token T1, podemos obtener el token T2.

Figura 18. Obtención del token T2 para el flujo de autenticación de usuarios de nuestro agente

El token T2 descodificado revela las reclamaciones «azp», «oid» y «sub», todas ellas establecidas con el ID de identidad del agente.

Figura 19. Revelación del identificador de identidad del agente en las reclamaciones de los tokens T2 descodificados

Utilizando los tokens T1 y T2, podemos obtener el token de acceso TR.

Figura 20. Obtención del token de acceso TR para el flujo de autenticación de nuestro usuario agente

Como podemos ver, este token de acceso se ha emitido para Microsoft Graph. En él se indica:

  • La reclamación «idtyp» corresponde a un usuario
  • La reclamación «oid» se corresponde con el ID de usuario del agente
  • El parámetro «appid» se establece en el ID de identidad del agente, que es el padre del usuario del agente.
  • scp contiene el Group.Read.All, los visores que habíamos añadido antes.
Figura 21. Descifrado del token de acceso del flujo de autenticación de usuario del agente que se ha emitido para Microsoft Graph

Ahora ya tienes una identidad de agente operativa. ¿Cómo la proteges?

El desarrollo de tu identidad como agente a través de estas sesiones prácticas debería haberte proporcionado una comprensión práctica de cómo trabajarán los agentes en tu cuenta de inquilino de Entra ID.

Ahora, lee el último capítulo de nuestra guía para tener una visión general de lo que puede salir mal y de cómo proteger estas nuevas identidades.

Descubre cómo evitar un desastre en el capítulo 6.


Explora la guía