Autenticación de una identidad administrada con Microsoft Entra ID para acceder a recursos de Azure Relay

Identidades administradas para recursos de Azure es una característica de Azure que permite crear una identidad segura asociada a la implementación en la que se ejecuta el código de la aplicación. A continuación, puede asociar esa identidad con los roles de control de acceso que conceden permisos personalizados para acceder a recursos específicos de Azure que la aplicación necesita.

Con las identidades administradas, la plataforma Azure administra esta identidad en tiempo de ejecución. No es necesario almacenar y proteger las claves de acceso en la configuración o el código de la aplicación, ya sea para la propia identidad o para los recursos a los que necesita acceder. Una aplicación cliente de Relay que se ejecuta dentro de una aplicación de Azure App Service o en una máquina virtual con entidades administradas habilitadas para admitir recursos de Azure no necesita controlar las reglas y las claves SAS ni cualquier otro token de acceso. La aplicación cliente solo necesita la dirección del punto de conexión del espacio de nombres de Relay. Cuando se conecta la aplicación, Relay enlaza el contexto de la entidad administrada con el cliente en una operación, como se muestra en un ejemplo más adelante en este artículo. Una vez asociado a una identidad administrada, el cliente de Relay puede realizar todas las operaciones autorizadas. La autorización se concede mediante la asociación de una entidad administrada con roles de Relay.

Nota:

Esta característica está disponible con carácter general en todas las regiones, incluido Microsoft Azure operado por 21Vianet.

Información general

Cuando una entidad de seguridad (usuario, grupo o aplicación) intenta acceder a una entidad de Relay, la solicitud debe estar autorizada. Con Microsoft Entra ID, el acceso a un recurso es un proceso de dos pasos.

  1. En primer lugar, se autentica la identidad de la entidad de seguridad y se devuelve un token de OAuth 2.0. El nombre del recurso para solicitar un token es https://relay.azure.net. Si una aplicación se está ejecutando dentro de una entidad de Azure, como puede ser una máquina virtual de Azure, un conjunto de escalado de máquinas virtuales o una aplicación de Azure Functions, puede usar una identidad administrada para acceder a los recursos.
  2. Después, el token se pasa como parte de una solicitud al servicio Relay para autorizar el acceso al recurso especificado (conexiones híbridas, retransmisiones WCF). Microsoft Entra autoriza los derechos de acceso a recursos protegidos mediante el control de acceso basado en roles de Azure (Azure RBAC). Azure Relay define un conjunto de roles integrados de Azure que abarcan conjuntos comunes de permisos utilizados para acceder a las entidades Relay. También puede definir roles personalizados para acceder a los datos. Para obtener una lista de los roles integrados admitidos por Azure Relay, consulte Roles integrados de Azure para Azure Relay. Las aplicaciones nativas y las aplicaciones web que realizan solicitudes a Relay también pueden autorizarse con Microsoft Entra ID.

Roles integrados de Azure para Azure Relay

En el caso de Azure Relay, la administración de los espacios de nombres y de todos los recursos relacionados mediante Azure Portal y la API de administración de recursos de Azure, ya se ha protegido mediante el modelo de Azure RBAC. Azure proporciona los siguientes roles integrados de Azure para autorizar el acceso a un espacio de nombres de Relay:

Role Descripción
Propietario de Azure Relay Este rol se usa para conceder acceso completo a los recursos de Azure Relay.
Cliente de escucha de Azure Relay Este rol se usa para conceder acceso de escucha y lectura de entidades a los recursos de Azure Relay.
Emisor de Azure Relay Este rol se usa para conceder acceso de envío y lectura de entidades a los recursos de Azure Relay.

Ámbito de recursos

Antes de asignar un rol de Azure a una entidad de seguridad, determine el ámbito de acceso que debería tener la entidad de seguridad. Los procedimientos recomendados dictan que siempre es mejor conceder únicamente el ámbito más restringido posible.

En la lista siguiente se describen los niveles en los que puede definir el ámbito de acceso a recursos de Azure Relay, empezando por el ámbito más restringido:

  • Entidades Relay: la asignación de roles se aplica a una entidad Relay específica, como una conexión híbrida o una retransmisión WCF.
  • Espacio de nombres Relay: la asignación de roles se aplica a todas las entidades Relay en el espacio de nombres.
  • Grupo de recursos: la asignación de roles se aplica a todos los recursos de Relay del grupo de recursos.
  • Suscripción: la asignación de roles se aplica a todos los recursos de Relay de todos los grupos de recursos de la suscripción.

Nota:

Tenga en cuenta que las asignaciones de roles de Azure pueden tardar hasta cinco minutos en propagarse. Para más información sobre cómo se definen los roles integrados, consulte Descripción de definiciones de roles. Para más información acerca de la creación de roles personalizados de Azure, consulte Roles personalizados de Azure.

Habilitación de una entidad administrada

En primer lugar, habilite la identidad administrada para el recurso de Azure que necesita acceder a entidades de Azure Relay (conexiones híbridas o retransmisiones WCF). Por ejemplo, si la aplicación cliente de Relay se ejecuta en una máquina virtual de Azure, habilite la identidad administrada de la máquina virtual según las instrucciones del artículo Configurar identidades administradas para recursos de Azure en una VM mediante Azure Portal. Una vez habilitada esta configuración, se crea una nueva identidad de servicio administrada en Microsoft Entra ID.

Para ver una lista de los servicios que admiten identidades administradas, consulte Servicios que admiten identidades administradas para recursos de Azure.

Asignación de un rol de Azure Relay a la identidad administrada

Después de habilitar la identidad administrada, asigne uno de los roles de Azure Relay (Propietario de Azure Relay, Cliente de escucha de Azure Relay o Remitente de Azure Relay) a la identidad en el ámbito adecuado. Cuando se asigna el rol de Azure a una identidad administrada, se le concede acceso a las entidades de Relay en el ámbito adecuado.

En la sección siguiente, se usa una aplicación sencilla que se ejecuta como una identidad administrada en una instancia de máquina virtual de Azure y accede a los recursos de Relay.

Aplicación de ejemplo de una máquina virtual que accede a entidades de Relay

  1. Descargue la aplicación de consola de ejemplo de Conexiones híbridas en el equipo desde GitHub.

  2. Cree una máquina virtual de Azure. Para este ejemplo, use una imagen de Windows 10.

  3. Habilite la identidad asignada por el sistema o una identidad asignada por el usuario para la máquina virtual de Azure. Para obtener instrucciones, consulte Configurar identidades administradas para recursos de Azure en una VM mediante Azure Portal.

  4. Asigne uno de los roles de Relay a la identidad de servicio administrada en el ámbito deseado (entidad de Relay, espacio de nombres de Relay, grupo de recursos, suscripción). Para acceder a los pasos detallados, vea Asignación de roles de Azure mediante Azure Portal.

  5. Compile la aplicación de consola localmente en el equipo local según las instrucciones del documento LÉAME.

  6. Copie el archivo ejecutable de la carpeta <ruta de acceso local>\RoleBasedAccessControl\bin\Debug en la máquina virtual. Puede usar RDP para conectarse a la máquina virtual de Azure. Para más información, consulte Conexión a una máquina virtual de Azure donde se ejecuta Windows e inicio de sesión en ella.

  7. Ejecute el archivo RoleBasedAccessControl.exe en la máquina virtual de Azure según las instrucciones del documento LÉAME.

    Nota:

    Sigue los mismos pasos a fin de ejecutar la aplicación de consola para WCF Relay.

Código resaltado del ejemplo

Este es el código del ejemplo que muestra cómo usar la autenticación de Microsoft Entra para conectarse al servicio Azure Relay.

  1. Cree un objeto TokenProvider con el método TokenProvider.CreateManagedIdentityTokenProvider.

    • Si usas una identidad administrada asignada por el sistema:
      TokenProvider.CreateManagedIdentityTokenProvider();
      
    • Si usas una identidad administrada asignada por el usuario, obtén el identificador de cliente de la identidad asignada por el usuario en la página Identidad administrada de Azure Portal. Para obtener instrucciones, consulte Enumerar identidades administradas asignadas por el usuario.
      var managedCredential = new ManagedIdentityCredential(clientId);
      tokenProvider = TokenProvider.CreateManagedIdentityTokenProvider(managedCredential);    
      
  2. Cree un objeto HybridConnectionListener o HybridConnectionClient mediante el paso del identificador URI de la conexión híbrida y el proveedor de tokens que creó en el paso anterior.

    Agente de escucha:

    var listener = new HybridConnectionListener(hybridConnectionUri, tokenProvider);    
    

    Remitente:

    var sender = new HybridConnectionClient(hybridConnectionUri, tokenProvider);    
    

Ejemplos

Pasos siguientes

Para más información sobre Azure Relay, consulta los siguientes artículos.