Autenticación y autorización con Microsoft Entra ID

En este artículo se explica cómo autenticar clientes de publicación de Azure Event Grid mediante Microsoft Entra ID.

Información general

La Plataforma de identidad de Microsoft proporciona administración integrada de la autenticación y el control de acceso para recursos y aplicaciones que usan Microsoft Entra ID como proveedor de identidades. Use la Plataforma de identidad de Microsoft para proporcionar compatibilidad de autenticación y autorización en las aplicaciones. Se basa en estándares abiertos como OAuth 2.0 y OpenID Connect y ofrece herramientas y bibliotecas de código abierto que admiten muchos escenarios de autenticación. Proporciona características avanzadas como acceso condicional, que permite establecer directivas que exigen autenticación multifactor o permiten el acceso desde ubicaciones concretas, por ejemplo.

Una ventaja que mejora la postura de seguridad al usar Microsoft Entra ID es que no es necesario almacenar credenciales, como claves de autenticación, en el código ni en repositorios, sino que se basa en la adquisición de tokens de acceso de OAuth 2.0 desde la Plataforma de identidad de Microsoft que presenta la aplicación al autenticarse en un recurso protegido. Puede registrar la aplicación de publicación de eventos en Microsoft Entra ID y obtener una entidad de servicio asociada a la aplicación que administra y usa. En su lugar, puede usar identidades administradas, ya sea asignadas por el sistema o por el usuario, para un modelo de administración de identidades aún más sencillo, ya que algunos aspectos del ciclo de vida de identidad se administran automáticamente.

El control de acceso basado en rol (RBAC) permite configurar la autorización de forma que determinadas entidades de seguridad (identidades para usuarios, grupos o aplicaciones) tengan permisos específicos para ejecutar operaciones en recursos de Azure. De este modo, la entidad de seguridad usada por una aplicación cliente que envía eventos a Event Grid debe tener asociado el rol RBAC Emisor de datos de EventGrid.

Entidades de seguridad

Hay dos categorías generales de entidades de seguridad que son aplicables al analizar la autenticación de un cliente de publicación de Event Grid:

  • Identidades administradas. Una identidad administrada puede ser asignada por el sistema (se habilita en un recurso de Azure y solo se asocia a ese recurso), o asignada por el usuario (se crea y recibe un nombre de forma explícita). Las identidades administradas asignadas por el usuario se pueden asociar a más de un recurso.
  • Entidad de seguridad de aplicación. Es un tipo de entidad de seguridad que representa a una aplicación, que accede a recursos protegidos mediante Microsoft Entra ID.

Independientemente de la entidad de seguridad usada, una identidad administrada o una entidad de seguridad de aplicación, el cliente emplea esa identidad para autenticarse ante Microsoft Entra ID y obtener un token de acceso de OAuth 2.0 que se envía con solicitudes al enviar eventos a Event Grid. Ese token se firma criptográficamente y, una vez que Event Grid lo recibe, se valida. Por ejemplo, se confirma que la audiencia (el destinatario previsto del token) es Event Grid (https://eventgrid.azure.net), entre otras cosas. El token contiene información sobre la identidad del cliente. Event Grid toma esa identidad y valida que el cliente tenga asignado el rol Emisor de datos de EventGrid. Más concretamente, Event Grid valida que la identidad tenga el permiso Microsoft.EventGrid/events/send/action en un rol RBAC asociado a la identidad para permitir que se complete la solicitud de publicación del evento.

Si usa el SDK de Event Grid, no tiene que preocuparse por los detalles sobre cómo implementar la adquisición de tokens de acceso y cómo incluirlo con cada solicitud a Event Grid, porque los SDK del plano de datos de Event Grid lo hacen por usted.

Pasos de configuración de cliente para usar la autenticación de Microsoft Entra

Para configurar el cliente para el uso de la autenticación de Microsoft Entra al enviar eventos a un espacio de nombres de tema, dominio o asociado, realice estos pasos.

  1. Cree o use una entidad de seguridad que quiera emplear para autenticarse. Puede usar una identidad administrada o una entidad de seguridad de aplicación.
  2. Conceda permiso a una entidad de seguridad para publicar eventos mediante la asignación del rol Emisor de datos de EventGrid a la entidad de seguridad.
  3. Use el SDK de Event Grid para publicar eventos en una instancia de Event Grid.

Autenticación mediante una identidad administrada

Las identidades administradas son identidades asociadas a recursos de Azure. Las identidades administradas proporcionan una identidad que las aplicaciones usan con recursos de Azure que admiten la autenticación de Microsoft Entra. Las aplicaciones pueden usar la identidad administrada del recurso de hospedaje como una máquina virtual o un servicio Aplicación de Azure para obtener tokens de Microsoft Entra que se presentan con la solicitud al publicar eventos en Event Grid. Cuando la aplicación se conecta, Event Grid enlaza el contexto de la entidad administrada al cliente. Una vez asociado con una identidad administrada, el cliente de publicación de Event Grid puede realizar todas las operaciones autorizadas. La autorización se concede al asociar una entidad administrada a un rol RBAC de Event Grid.

La identidad administrada proporciona a los servicios de Azure una identidad administrada automáticamente en Microsoft Entra ID. A diferencia de otros métodos de autenticación, no es necesario almacenar ni proteger claves de acceso ni firmas de acceso compartido (SAS) en el código de la aplicación o la configuración, ya sea para la propia identidad o para los recursos a los que hay que acceder.

Para autenticar el cliente de publicación de eventos mediante identidades administradas, decida primero el servicio de Azure de hospedaje de la aplicación cliente y luego habilite las identidades administradas asignadas por el sistema o por el usuario en esa instancia de servicio de Azure. Por ejemplo, puede habilitar identidades administradas en una máquina virtual, Azure App Service o Azure Functions.

Una vez que tenga una identidad administrada configurada en un servicio de hospedaje, asigne el permiso para publicar eventos a esa identidad.

Autenticación mediante una entidad de seguridad de una aplicación cliente

Además de las identidades administradas, otra opción de identidad es crear una entidad de seguridad para la aplicación cliente. Para ello, tiene que registrar la aplicación con Microsoft Entra ID. El registro de la aplicación es un gesto por el que se delega el control de la administración de identidades y acceso a Microsoft Entra ID. Siga los pasos de la sección Registro de una aplicación y de la sección Incorporación de un secreto de cliente. Asegúrese de revisar los requisitos previos antes de empezar.

Una vez que tenga una entidad de seguridad de aplicación y haya seguido los pasos anteriores, asigne el permiso para publicar eventos a esa identidad.

Nota

Al registrar una aplicación en el portal, se crean automáticamente un objeto de aplicación y una entidad de servicio en el inquilino principal. También puede usar Microsot Graph para registrar la aplicación. Pero si registra o crea una aplicación mediante las API de Microsoft Graph, la creación del objeto de entidad de servicio constituye un paso independiente.

Asignación de permiso a una entidad de seguridad para publicar eventos

La identidad usada para publicar eventos en Event Grid debe tener el permiso Microsoft.EventGrid/events/send/action, que le permite enviar eventos a Event Grid. Ese permiso está incluido en el rol RBAC integrado Emisor de datos de Event Grid. Este rol se puede asignar a una entidad de seguridad de un ámbito determinado, que puede ser un grupo de administración, una suscripción de Azure, un grupo de recursos o un espacio de nombres de tema, dominio o asociado específico de Event Grid. Siga los pasos de Asignación de roles de Azure para asignar a una entidad de seguridad el rol Emisor de datos de EventGrid y, de ese modo, conceder a una aplicación que usa esa entidad de seguridad acceso al envío de eventos. También puede definir un rol personalizado que incluya el permiso Microsoft.EventGrid/events/send/action y asignar ese rol personalizado a la entidad de seguridad.

Con los privilegios RBAC resueltos, ya puede compilar la aplicación cliente para enviar eventos a Event Grid.

Nota

Event Grid admite más roles RBAC para fines que van más allá del envío de eventos. Para obtener más información, vea Roles integrados de Event Grid.

Publicación de eventos mediante SDK cliente de Event Grid

Use el SDK del plano de datos de Event Grid para publicar eventos en Event Grid. El SDK de Event Grid admite todos los métodos de autenticación, incluida la autenticación de Microsoft Entra.

Este es el código de ejemplo que publica eventos en Event Grid mediante el SDK de .NET. Puede obtener el punto de conexión del tema en la página Información general del tema de Event Grid en Azure Portal. Está en el formato https://<TOPIC-NAME>.<REGION>-1.eventgrid.azure.net/api/events.

ManagedIdentityCredential managedIdentityCredential = new ManagedIdentityCredential();
EventGridPublisherClient client = new EventGridPublisherClient( new Uri("<TOPIC ENDPOINT>"), managedIdentityCredential);


EventGridEvent egEvent = new EventGridEvent(
        "ExampleEventSubject",
        "Example.EventType",
        "1.0",
        "This is the event data");

// Send the event
await client.SendEventAsync(egEvent);

Requisitos previos

Estos son los requisitos previos para autenticarse en Event Grid.

Publicación de eventos mediante la autenticación de Microsoft Entra

Para enviar eventos a un espacio de nombres de tema, dominio o asociado, puede compilar el cliente de la siguiente manera. La versión de la API que primero proporcionó compatibilidad con la autenticación de Microsoft Entra es 2018-01-01. Use esa versión de la API o una más reciente en la aplicación.

Sample:

Este fragmento de código C# crea un cliente de publicador de Event Grid mediante una aplicación (entidad de servicio) con un secreto de cliente; para habilitar el método DefaultAzureCredential, tiene que agregar la biblioteca Azure.Identity. Si usa el SDK oficial, el SDK controla la versión en su lugar.

Environment.SetEnvironmentVariable("AZURE_CLIENT_ID", "");
Environment.SetEnvironmentVariable("AZURE_TENANT_ID", "");
Environment.SetEnvironmentVariable("AZURE_CLIENT_SECRET", "");

EventGridPublisherClient client = new EventGridPublisherClient(new Uri("your-event-grid-topic-domain-or-partner-namespace-endpoint"), new DefaultAzureCredential());

Para más información, consulte los siguientes artículos.

Deshabilitación de la autenticación con clave de acceso y firma de acceso compartido

La autenticación de Microsoft Entra proporciona una compatibilidad de autenticación superior a la que ofrece la autenticación con claves de acceso o tokens de firma de acceso compartido (SAS). Con la autenticación de Microsoft Entra, la identidad se valida con el proveedor de identidades de Microsoft Entra. Si usa la autenticación de Microsoft Entra, como desarrollador, no tiene que controlar las claves del código. También se beneficia de todas las características de seguridad integradas en la plataforma de identidad de Microsoft, como el acceso condicional, que puede ayudarle a mejorar la postura de seguridad de la aplicación.

Una vez que decida usar la autenticación de Microsoft Entra, puede deshabilitar la autenticación basada en claves de acceso o tokens de SAS.

Nota:

La autenticación con claves de acceso o tokens de SAS es una forma de autenticación local. A veces va a oír hablar de "autenticación local" al referirse a esta categoría de mecanismos de autenticación que no se basan en Microsoft Entra ID. El parámetro de la API que se usa para deshabilitar la autenticación local se denomina, muy acertadamente, disableLocalAuth.

Azure Portal

Al crear un tema, puede deshabilitar la autenticación local en la pestaña Avanzado de la página Crear tema.

Screenshot showing the Advanced tab of Create Topic page when you can disable local authentication.

Para un tema existente, siga estos pasos para deshabilitar la autenticación local:

  1. Vaya a la página Tema de Event Grid del tema y seleccione Habilitada en Autenticación local.

    Screenshot showing the Overview page of an existing topic.

  2. En la ventana emergente Autenticación local, seleccione Deshabilitada y seleccione Aceptar.

    Screenshot showing the Local Authentication window.

CLI de Azure

El siguiente comando de la CLI muestra la manera de crear un tema personalizado con la autenticación local deshabilitada. La característica de deshabilitación de la autenticación local está disponible actualmente como versión preliminar y se debe usar la versión de la API 2021-06-01-preview.

az resource create --subscription <subscriptionId> --resource-group <resourceGroup> --resource-type Microsoft.EventGrid/topics --api-version 2021-06-01-preview --name <topicName> --location <location> --properties "{ \"disableLocalAuth\": true}"

Como referencia, los siguientes son los valores de tipo de recurso que puede usar según el tema que vaya a crear o actualizar.

Tipo de tema Tipo de recurso
Dominios Microsoft.EventGrid/domains
Espacio de nombres de asociado Microsoft.EventGrid/partnerNamespaces
Tema personalizado Microsoft.EventGrid/topics

Azure PowerShell

Si usa PowerShell, emplee los siguientes cmdlets para crear un tema personalizado con la autenticación local deshabilitada.


Set-AzContext -SubscriptionId <SubscriptionId>

New-AzResource -ResourceGroupName <ResourceGroupName> -ResourceType Microsoft.EventGrid/topics -ApiVersion 2021-06-01-preview -ResourceName <TopicName> -Location <Location> -Properties @{disableLocalAuth=$true}

Nota

Recursos