Autentique y autorice una aplicación con Microsoft Entra ID para acceder a las entidades de Azure Relay
Azure Relay admite el uso de Microsoft Entra ID para autorizar solicitudes a entidades de Azure Relay (conexiones híbridas, retransmisiones WCF). Con Microsoft Entra ID, puede usar el control de acceso basado en roles de Azure (Azure RBAC) para conceder permisos a una entidad de seguridad, que puede ser un usuario, un grupo o una entidad de servicio de aplicación. Para más información sobre los roles y las asignaciones de roles, consulte Descripción de los distintos roles.
Nota:
Esta característica está disponible con carácter general en todas las regiones, excepto 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.
- 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. - 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.
Autenticación desde una aplicación
Una ventaja clave del uso de Microsoft Entra ID con Azure Relay es que ya no necesita almacenar las credenciales en el código. En su lugar, puede solicitar un token de acceso de OAuth 2.0 desde la Plataforma de identidad de Microsoft. Microsoft Entra ID autentica la entidad de seguridad (un usuario, grupo o entidad de servicio) ejecutando la aplicación. Si la autenticación se realiza correctamente, Microsoft Entra ID devuelve el token de acceso a la aplicación y, a continuación, aplicación y la aplicación puede usar dicho token para autorizar las solicitudes de Azure Relay.
En las secciones siguientes, se muestra cómo configurar la aplicación de consola para la autenticación con la Plataforma de identidad de Microsoft 2.0. Para más información, consulte ¿Qué es la plataforma de identidad de Microsoft (v2.0)?
Para información general sobre el flujo de concesión de código OAuth 2.0, consulte Autorización del acceso a aplicaciones web de Microsoft Entra mediante el flujo de concesión de código OAuth 2.0.
Registro de la aplicación con un inquilino de Microsoft Entra
El primer paso para usar Microsoft Entra ID con el fin de autorizar las entidades de Azure Relay es registrar la aplicación cliente con un inquilino de Microsoft Entra desde Azure Portal. Al registrar la aplicación cliente, facilita información sobre la aplicación a AD. Microsoft Entra ID proporciona un id. de cliente (también denominado id. de aplicación) que se puede usar para asociar la aplicación con el runtime de Microsoft Entra.
Para obtener instrucciones paso a paso para registrar la aplicación con Microsoft Entra ID, consulte Inicio rápido: Registro de una aplicación con Microsoft Entra ID.
Importante
Anote el identificador de directorio (inquilino) y el identificador de aplicación (cliente). Necesitará estos valores para ejecutar la aplicación de ejemplo.
Creación de un secreto de cliente
La aplicación necesita un secreto de cliente para demostrar su identidad al solicitar un token. En el mismo artículo vinculado anteriormente, consulte la sección Agregar un secreto de cliente para crear un secreto de cliente.
Importante
Anote el secreto de cliente. Lo necesitará para ejecutar la aplicación de ejemplo.
Asignación de roles de Azure mediante Azure Portal
Asigne uno de los roles de Azure Relay a la entidad de servicio de la aplicación en el ámbito deseado (entidad de Relay, espacio de nombres, grupo de recursos, suscripción). Para asignar roles, consulte Asignación de roles de Azure mediante Azure Portal.
Ejecución del ejemplo
Descargue la aplicación de consola de ejemplo desde GitHub.
Ejecute la aplicación localmente en el equipo según las instrucciones del artículo LÉAME.
Nota:
Siga los mismos pasos para ejecutar la aplicación de consola de ejemplo 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.
Cree un objeto TokenProvider con el método
TokenProvider.CreateAzureActiveDirectoryTokenProvider
.Si aún no ha creado un registro de aplicación, consulte la sección Registro de la aplicación con un inquilino de Microsoft Entra ID para crearlo y, a continuación, cree un secreto de cliente como se menciona en la sección Creación de un secreto de cliente.
Si desea usar un registro de aplicación existente, siga estas instrucciones para obtener el identificador de aplicación (cliente) y el identificador de directorio (inquilino).
- Inicie sesión en Azure Portal.
- Busque y seleccione Microsoft Entra ID con la barra de búsqueda de la parte superior.
- En la página Microsoft Entra ID, seleccione Registros de aplicaciones en la sección Administrar del menú izquierdo.
- Seleccione el registro de la aplicación.
- En la página del registro de la aplicación, verá los valores del identificador de aplicación (cliente) y el identificador de directorio (inquilino).
Para obtener el secreto de cliente, siga estos pasos:
- En la página del registro de la aplicación, seleccione Certificados y secretos en el menú de la izquierda.
- Use el botón de copia de la columna Valor del secreto en la sección Secretos de cliente.
static TokenProvider GetAadTokenProvider(string clientId, string tenantId, string clientSecret) { return TokenProvider.CreateAzureActiveDirectoryTokenProvider( async (audience, authority, state) => { IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.Create(clientId) .WithAuthority(authority) .WithClientSecret(clientSecret) .Build(); var authResult = await app.AcquireTokenForClient(new [] { $"{audience}/.default" }).ExecuteAsync(); return authResult.AccessToken; }, $"https://login.microsoftonline.com/{tenantId}"); }
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
- Conexiones híbridas: .NET, Java, JavaScript
- WCF Relay: .NET
Pasos siguientes
- Para más información sobre Azure RBAC, consulte ¿Qué es el control de acceso basado en rol de Azure (Azure RBAC) de Azure?
- Para información sobre cómo asignar y administrar las asignaciones de roles de Azure con Azure PowerShell, la CLI de Azure o la API de REST, consulte estos artículos:
- Incorporación o eliminación de asignaciones de roles de Azure con Azure PowerShell
- Incorporación o eliminación de asignaciones de roles de Azure mediante la CLI de Azure
- Incorporación o eliminación de asignaciones de roles de Azure mediante la API REST
- Incorporación o eliminación de asignaciones de roles de Azure mediante plantillas de Azure Resource Manager
Para más información sobre Azure Relay, consulta los siguientes artículos.