Autentique y autorice una aplicación con Microsoft Entra ID para acceder a las entidades de Azure Service Bus

Azure Service Bus admite el uso de Microsoft Entra ID para autorizar solicitudes a entidades de Service Bus (colas, temas, suscripciones o filtros). Con Microsoft Entra ID, puede usar el control de acceso basado en roles de Azure (Azure RBAC) para otorgar permisos a un principal de seguridad. La entidad de seguridad puede ser un usuario, un grupo, una entidad de servicio de aplicación o una identidad administrada para los recursos de Azure.

Una ventaja clave de usar Microsoft Entra ID con Azure Service Bus es que ya no es necesario 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. Si la autenticación se realiza correctamente, Microsoft Entra ID devuelve un token de acceso a la aplicación. Después, la aplicación puede usar el token de acceso para autorizar las solicitudes a los recursos de Service Bus.

Puede deshabilitar la autenticación de clave de firma de acceso compartido (SAS) local o compartido para un espacio de nombres de Service Bus y permitir solo la autenticación de Microsoft Entra. Para instrucciones paso a paso, consulte Deshabilitación de la autenticación local.

Información general

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

  1. La identidad del principal de seguridad ha sido autenticada y se devuelve un token de OAuth 2.0. El nombre del recurso para solicitar un token es https://servicebus.azure.net.
  2. El token se pasa como parte de una solicitud al servicio Service Bus para autorizar el acceso al recurso especificado.

El paso de autenticación exige que una solicitud de aplicación contenga un token de acceso de OAuth 2.0 en tiempo de ejecución. Si una aplicación se ejecuta dentro de una entidad de Azure, como una máquina virtual de Azure, un conjunto de escalado de máquinas virtuales o una aplicación de funciones, puede usar una identidad administrada para acceder a los recursos. Para obtener información sobre cómo autenticar las solicitudes que realiza una identidad administrada en el servicio Service Bus, consulte Uso de identidades administradas con Azure Service Bus.

El paso de autorización requiere asignar uno o más roles de Azure al principio de seguridad. Service Bus proporciona roles de Azure que abarcan conjuntos de permisos para los recursos de Service Bus. Los roles asignados a un principal de seguridad determinan los permisos que el principal tiene en los recursos de Service Bus. Para más información sobre cómo asignar roles de Azure a Service Bus, consulte Roles integrados de Azure para Azure Service Bus.

Las aplicaciones nativas y las aplicaciones web que realizan solicitudes a Service Bus también pueden autorizar con Microsoft Entra ID. En este artículo se muestra cómo solicitar un token de acceso y usarlo para autorizar solicitudes de recursos de Service Bus.

Roles integrados de Azure para Azure Service Bus

Microsoft Entra concede derechos de acceso a recursos protegidos mediante Azure RBAC. Azure Service Bus define un conjunto de roles integrados de Azure que abarcan conjuntos comunes de permisos utilizados para acceder a las entidades de Service Bus. También puede definir roles personalizados para acceder a los datos.

Cuando se asigna un rol de Azure a una entidad de seguridad principal de Microsoft Entra, Azure concede acceso a esos recursos para esa entidad de seguridad principal. El acceso se puede limitar al nivel de suscripción, grupo de recursos, espacio de nombres de Service Bus o entidad (cola, tema o suscripción). Una entidad de seguridad de Microsoft Entra puede ser un usuario, un grupo, una entidad de servicio de aplicación o una identidad administrada para los recursos de Azure.

Para Azure Service Bus, el modelo RBAC de Azure ayuda a proteger la administración de espacios de nombres y todos los recursos relacionados a través de Azure Portal y la API de administración de recursos de Azure. Azure proporciona los siguientes roles integrados para autorizar el acceso a un espacio de nombres de Service Bus:

Á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 Service Bus, empezando por el ámbito más restringido:

  • Cola, tema o suscripción: la asignación de roles se aplica a la entidad específica de Service Bus. Actualmente, el portal de Azure no admite la asignación de usuarios, grupos o identidades administradas a roles de Azure para Service Bus en el nivel de suscripción de tema.

  • Espacio de nombres de Service Bus: la asignación de roles abarca toda la topología de Service Bus en el espacio de nombres y en la cola o suscripción a un tema asociada a este.

  • Grupo de recursos: la asignación de roles se aplica a todos los recursos de Service Bus del grupo de recursos.

  • Suscripción de Azure: la asignación de roles se aplica a todos los recursos de Service Bus de todos los grupos de recursos de la suscripción.

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 las definiciones de roles de Azure. 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 Service Bus 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 autentica la entidad de seguridad (un usuario, un grupo, una entidad de servicio o una identidad administrada para los recursos de Azure) que ejecuta la aplicación. Si la autenticación se realiza correctamente, Microsoft Entra ID devuelve el token de acceso a la aplicación. Después, la aplicación puede usar el token de acceso para autorizar las solicitudes a Service Bus.

En las secciones siguientes se muestra cómo configurar la aplicación nativa o la aplicación web para la autenticación con la plataforma de identidad de Microsoft 2.0. Para obtener más información sobre la plataforma, consulte ¿Qué es la plataforma de identidad de Microsoft?.

Para obtener información general sobre el flujo de concesión de código de OAuth 2.0, consulte Flujo de código de autorización de OAuth 2.0 y plataforma de identidad de Microsoft.

** Registrar la aplicación con un tenant de Microsoft Entra

El primer paso para usar Microsoft Entra ID con el fin de autorizar las entidades de Service Bus es registrar la aplicación cliente con un inquilino de Microsoft Entra desde Azure Portal. Al registrar la aplicación cliente, se proporciona información sobre la aplicación en Active Directory. A continuación, microsoft Entra ID proporciona un identificador de cliente (también denominado id. de aplicación) que puede usar para asociar la aplicación con el entorno de ejecución de Microsoft Entra. Para más información sobre el identificador de cliente, consulte Objetos de aplicación y de entidad de servicio de Microsoft Entra ID.

Para registrar la aplicación con el identificador de Microsoft Entra, siga los pasos descritos en Registrar una aplicación en microsoft Entra ID.

Nota:

Si registra la aplicación como una aplicación nativa, puede especificar cualquier URI válido para el URI de redirección. En el caso de las aplicaciones nativas, este valor no tiene que ser una dirección URL real. Para las aplicaciones web, el URI de redirección debe ser un URI válido, ya que especifica la dirección URL a la que se proporcionan los tokens.

Después de registrar la aplicación, el identificador de aplicación (cliente) y el identificador de directorio (inquilino) aparecen en Configuración. Anote estos valores. Los necesitará para ejecutar la aplicación.

Captura de pantalla que muestra un identificador de aplicación e id. de inquilino en el panel para el registro de aplicaciones.

Creación de un secreto de cliente

La aplicación necesita un secreto de cliente para demostrar su identidad al solicitar un token. Para agregar el secreto de cliente, siga estos pasos:

  1. En el portal de Azure, vaya al registro de aplicaciones si aún no está en la página.

  2. En el menú de la izquierda, seleccione Certificados y secretos.

  3. En Secretos de cliente, seleccione Nuevo secreto de cliente para crear un nuevo secreto.

    Captura de pantalla que muestra el botón para crear un secreto de cliente en el panel de certificados y secretos.

  4. Proporcione una descripción para el secreto, elija el intervalo de expiración y, a continuación, seleccione Agregar.

    Captura de pantalla que muestra el panel para agregar un secreto de cliente.

  5. Copie inmediatamente el valor del nuevo secreto en una ubicación segura. El valor completo solo aparece una vez.

    Captura de pantalla que muestra el área de secretos de cliente, junto con el botón para copiar un secreto.

Adición de permisos para la API de Service Bus

Si la aplicación es una aplicación de consola, debe registrar una aplicación nativa y agregar permisos de API para Microsoft.ServiceBus al conjunto de permisos necesarios.

Las aplicaciones nativas también necesitan un URI de redirección en el identificador de Microsoft Entra, que actúa como identificador. El URI no necesita ser un destino de red. Use https://servicebus.microsoft.com para este ejemplo, dado que el ejemplo de código ya utiliza ese URI.

Asignación de roles de Azure a través de Azure Portal

Asigne uno de los roles de Service Bus a la entidad de servicio de la aplicación en el ámbito deseado (entidad, espacio de nombres de Service Bus, grupo de recursos o suscripción de Azure). Para asignar roles, consulte Asignación de roles de Azure mediante Azure Portal.

Después de definir el rol y su ámbito, puede probar este comportamiento con el ejemplo en GitHub.

Autenticación del cliente de Service Bus

Después de registrar su aplicación y concederle permisos a la misma para enviar o recibir datos en Azure Service Bus, puede autenticar su cliente con la credencial del secreto de cliente. Esta autenticación le permite realizar solicitudes en Azure Service Bus.

Para obtener una lista de escenarios para los que se admite la adquisición de tokens, consulte la sección Escenarios del repositorio de GitHub biblioteca de autenticación de Microsoft (MSAL) para .NET .

Mediante la biblioteca Azure.Messaging.ServiceBus más reciente, puede autenticar ServiceBusClient con ClientSecretCredential, que se define en la biblioteca Azure.Identity .

TokenCredential credential = new ClientSecretCredential("<tenant_id>", "<client_id>", "<client_secret>");
var client = new ServiceBusClient("<fully_qualified_namespace>", credential);

Si usa los paquetes de .NET anteriores, consulte los ejemplos de RBAC de Azure para Service Bus en GitHub.