Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las identidades administradas de los recursos de Azure proporcionan a los servicios de Azure una identidad administrada automáticamente en Microsoft Entra ID. Puede usar esta identidad para autenticarse en Azure Service Bus sin almacenar credenciales en el código.
En este artículo se explica cómo habilitar una identidad administrada, asignar el rol de Service Bus adecuado y conectarse a Service Bus desde el código de la aplicación.
Nota
Si no está familiarizado con las identidades administradas, consulte Identidades administradas para recursos de Azure.
Prerrequisitos
Para usar identidades administradas con Azure Service Bus, necesita lo siguiente:
- Una suscripción a Azure. Si no tienes una, crea una cuenta gratuita antes de empezar.
- Un espacio de nombres de Azure Service Bus. Para crear uno, consulte Creación de un espacio de nombres de Service Bus.
- Una identidad administrada habilitada en los recursos de cómputo de Azure. Consulte:
Importante
Puede deshabilitar la autenticación de clave SAS o local 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.
Asigna un rol de Service Bus a la identidad administrada
Microsoft Entra autoriza el acceso a recursos protegidos mediante el control de acceso basado en roles de Azure (RBAC). Azure Service Bus proporciona roles integrados de Azure que abarcan conjuntos comunes de permisos usados para acceder a las entidades de Service Bus. También puede definir roles personalizados.
En la tabla siguiente se enumeran los roles integrados de Azure para autorizar el acceso a un espacio de nombres de Service Bus:
| Función | Descripción |
|---|---|
| Propietario de los datos de Azure Service Bus | Acceso total al namespace de Service Bus y sus entidades (colas, temas, suscripciones y filtros) |
| Remitente de Datos de Azure Service Bus | Enviar mensajes a colas y temas de Service Bus |
| Receptor de datos de Azure Service Bus | Recepción de mensajes de las colas y suscripciones de Service Bus |
Asignación de un rol en Azure Portal
Para asignar un rol a una identidad administrada en Azure Portal:
- Vaya a su espacio de nombres, cola o tema de Service Bus.
- Seleccione Control de acceso (IAM) en el menú izquierdo.
- Seleccione Agregar>Agregar asignación de rol.
- En la pestaña Rol , seleccione el rol de datos de Service Bus adecuado.
- En la pestaña Miembros , seleccione Identidad administrada y, a continuación, seleccione Seleccionar miembros.
- Seleccione la identidad administrada para el recurso de Azure.
- Seleccione Revisar y asignar.
Para más información, consulte Asignación de roles de Azure mediante Azure Portal.
Elección del ámbito del recurso
Antes de asignar un rol de Azure, determine el ámbito de acceso que necesita la identidad administrada. Conceda solo el ámbito más estrecho 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 de Service Bus específica.
Espacio de nombres de Service Bus: la asignación de roles abarca toda la topología de Service Bus en el espacio de nombres.
Grupo de recursos: la asignación de roles se aplica a todos los recursos de Service Bus del grupo de recursos.
Suscripción: la asignación de roles se aplica a todos los recursos de Service Bus de todos los grupos de recursos de la suscripción.
Nota
Las asignaciones de roles de Azure pueden tardar hasta cinco minutos en propagarse.
Asignación de un rol mediante la CLI de Azure
Azure Portal no admite la asignación de identidades administradas a roles de Service Bus en el nivel de suscripción del tema. Use el comando az role assignment create de la CLI de Azure para asignar un rol en cualquier ámbito:
az role assignment create \
--role $service_bus_role \
--assignee $assignee_id \
--scope /subscriptions/$subscription_id/resourceGroups/$resource_group/providers/Microsoft.ServiceBus/namespaces/$service_bus_namespace/topics/$service_bus_topic/subscriptions/$service_bus_subscription
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.
Nota
Si el servicio de origen o la aplicación no se reinicia después de quitar su identidad administrada del rol RBAC de Service Bus, es posible que la aplicación de origen siga enviando o recibiendo mensajes a o desde la entidad de Service Bus hasta que expire el token (la validez del token predeterminada es de 24 horas). Este comportamiento es por diseño.
Después de quitar la identidad administrada del origen del rol RBAC, reinicie la aplicación de origen o el servicio para que el token expire inmediatamente y evitar que envíe o reciba mensajes de la entidad de Service Bus.
Conexión a Service Bus mediante la identidad administrada en los SDK de Azure
Los SDK de Azure para .NET, Java, JavaScript y Python admiten la autenticación de identidad administrada con Service Bus. En el ejemplo siguiente se muestra cómo conectarse mediante el SDK de .NET.
En .NET, el objeto ServiceBusClient se inicializa mediante un constructor que toma un espacio de nombres completamente calificado y un TokenCredential.
DefaultAzureCredential deriva de TokenCredential, que usa automáticamente la identidad administrada configurada para la aplicación. La credencial de token controla automáticamente el flujo del contexto de la identidad administrada a Service Bus y el protocolo de enlace de autorización. Es un modelo más sencillo que si se usa SAS.
var client = new ServiceBusClient("contoso.servicebus.windows.net", new DefaultAzureCredential());
Puede enviar y recibir mensajes como de costumbre mediante ServiceBusSender y ServiceBusReceiver, o bien ServiceBusProcessor.
Para obtener instrucciones paso a paso para enviar y recibir mensajes mediante una identidad administrada, consulte los siguientes inicios rápidos. Estos inicios rápidos tienen el código para usar entidades de servicio para enviar y recibir mensajes, pero el código es el mismo para usar identidades administradas.
Nota
Las identidades administradas solo funcionan dentro del entorno de Azure, en App Service, máquinas virtuales de Azure y conjuntos de escalado. Para las aplicaciones .NET, la biblioteca Microsoft.Azure.Services.AppAuthentication, que usa el paquete NuGet de Service Bus, proporciona una abstracción sobre este protocolo y admite una experiencia de desarrollo local. Esta biblioteca también le permite probar el código localmente en la máquina de desarrollo, mediante la cuenta de usuario de Visual Studio, la CLI de Azure o la autenticación integrada de Microsoft Entra. Para más información acerca de las opciones de desarrollo local con esta biblioteca, consulte Autenticación entre servicios en Azure Key Vault mediante .NET.