Share via


Migración de una aplicación para usar conexiones sin contraseña con Azure Event Hubs

Las solicitudes de aplicación a servicios de Azure se deben autenticar mediante configuraciones como claves de acceso de cuenta o conexiones sin contraseña. Sin embargo, debe priorizar las conexiones sin contraseña en las aplicaciones siempre que sea posible. Los métodos de autenticación tradicionales que usan contraseñas o claves secretas crean riesgos y complicaciones de seguridad. Visite el centro de Conexiones sin contraseña para servicios de Azure para obtener más información sobre las ventajas de pasar a conexiones sin contraseña.

El siguiente tutorial explica cómo migrar una aplicación existente para conectarse mediante conexiones sin contraseña. Estos mismos pasos de migración deben aplicarse si usa claves de acceso, cadenas de conexión u otro enfoque basado en secretos.

Configuración del entorno de desarrollo local

Las conexiones sin contraseña se pueden configurar para que funcionen en entornos locales y hospedados en Azure. En esta sección, aplicará configuraciones para permitir que los usuarios individuales se autentiquen en Azure Event Hubs para el desarrollo local.

Asignar roles de usuario

Al desarrollar localmente, asegúrese de que la cuenta de usuario que accede a Azure Event Hubs tenga los permisos correctos. Necesitará los roles Receptor de datos de Azure Event Hubs y Remitente de datos de Azure Event Hubs para leer y escribir datos de mensajes. Para asignarse este rol a sí mismo, necesitará que se le asigne el rol Administrador de acceso de usuario u otro rol que incluya la acción Microsoft.Authorization/roleAssignments/write. Puede asignar roles RBAC de Azure a un usuario mediante Azure Portal, la CLI de Azure o Azure PowerShell. Puede obtener más información sobre los ámbitos disponibles para las asignaciones de roles en la página de información general del ámbito.

En el ejemplo siguiente, se asignan los roles Remitente de datos de Azure Event Hubs y Receptor de datos de Azure Event Hubs a la cuenta de usuario. Estos roles conceden acceso de lectura y escritura a los mensajes del centro de eventos.

  1. En Azure Portal, busque el centro de eventos mediante la barra de búsqueda principal o el panel de navegación izquierdo.

  2. En la página de información general del centro de eventos, seleccione Control de acceso (IAM).

  3. En la página Control de acceso (IAM), seleccione la pestaña Asignación de roles.

  4. Seleccione + Agregar en el menú superior y, a continuación, Agregar asignación de roles en el menú desplegable resultante.

    Una captura de pantalla que muestra cómo asignar un rol.

  5. Puede usar el cuadro de búsqueda para filtrar los resultados por el rol deseado. En este ejemplo, busque Remitente de datos de Azure Event Hubs y seleccione el resultado coincidente. Elija Siguiente.

  6. En la pestaña Asignar acceso a, seleccione Usuario, grupo o entidad de servicio y, a continuación, elija + Seleccionar miembros.

  7. En el cuadro de diálogo, busque el nombre de usuario de Microsoft Entra (normalmente su dirección de correo electrónico de user@domain) y, a continuación, elija Seleccionar en la parte inferior del cuadro de diálogo.

  8. Seleccione Revisar y asignar para ir a la página final y, a continuación, de nuevo Revisar y asignar para completar el proceso.

  9. Repita estos pasos para el rol Receptor de datos de Azure Event Hubs para permitir que la cuenta envíe y reciba mensajes.

Importante

En la mayoría de los casos, la asignación de roles tardará un minuto o dos en propagarse en Azure, pero en casos excepcionales puede tardar hasta ocho minutos. Si recibe errores de autenticación al ejecutar por primera vez el código, espere unos instantes e inténtelo de nuevo.

Inicio de sesión en Azure localmente

Para el desarrollo local, asegúrese de que está autenticado con la misma cuenta de Microsoft Entra a la que asignó el rol. Puede autenticarse a través de herramientas de desarrollo populares, como la CLI de Azure o Azure PowerShell. Las herramientas de desarrollo con las que puede autenticarse varían en todos los idiomas.

Inicie sesión en Azure a través de la CLI de Azure mediante el siguiente comando:

az login

Actualización del código de la aplicación para usar conexiones sin contraseña

La biblioteca cliente de identidad de Azure, para cada uno de los siguientes ecosistemas, proporcione una clase DefaultAzureCredential que controla la autenticación sin contraseña en Azure:

DefaultAzureCredential admite múltiples métodos de autenticación. El método que se va a usar se determina en tiempo de ejecución. Este enfoque permite que la aplicación use diferentes métodos de autenticación en distintos entornos (local frente a producción) sin implementar código específico del entorno. Consulte los vínculos anteriores para el orden y las ubicaciones en las que DefaultAzureCredential busca las credenciales.

  1. Para usar DefaultAzureCredential en una aplicación .NET, instale el paquete Azure.Identity:

    dotnet add package Azure.Identity
    
  2. En la parte superior del archivo, agregue el código siguiente:

    using Azure.Identity;
    
  3. Identifique las ubicaciones del código que crean un objeto EventHubProducerClient o EventProcessorClient para conectarse a Azure Event Hubs. Actualice su código para que coincida con el ejemplo siguiente:

    DefaultAzureCredential credential = new();
    var eventHubNamespace = $"https://{namespace}.servicebus.windows.net";
    
    // Event Hubs producer
    EventHubProducerClient producerClient = new(
        eventHubNamespace,
        eventHubName,
        credential);
    
    // Event Hubs processor
    EventProcessorClient processorClient = new(
        storageClient,
        EventHubConsumerClient.DefaultConsumerGroupName,
        eventHubNamespace,
        eventHubName,
        credential);
    
  1. Asegúrese de actualizar el espacio de nombres de los centros de eventos en el identificador URI de los objetos EventHubProducerClient o EventProcessorClient. Puede encontrar el nombre del espacio de nombres en la página de información general de Azure Portal.

    Captura de pantalla que muestra cómo encontrar el nombre del espacio de nombres.

Ejecución de la aplicación de forma local

Después de realizar estos cambios de código, ejecute la aplicación localmente. La nueva configuración debe recoger las credenciales locales, como la CLI de Azure, Visual Studio o IntelliJ. Los roles que asigne al usuario en Azure permitirán a la aplicación conectarse al servicio de Azure localmente.

Configuración del entorno de hospedaje de Azure

Una vez que la aplicación se ha configurado para usar conexiones sin contraseña y se ejecuta localmente, el mismo código se puede autenticar en los servicios de Azure después de implementarla en Azure. En las secciones siguientes, se explica cómo configurar una aplicación implementada para conectarse a Azure Event Hubs mediante una identidad administrada. Las identidades administradas proporcionan una identidad administrada automáticamente en Microsoft Entra ID para que las aplicaciones la utilicen al conectarse a los recursos que admiten la autenticación de Microsoft Entra. Más información sobre las identidades administradas:

Creación de la identidad administrada

Puede crear una identidad administrada asignada por el usuario mediante el Azure Portal o la CLI de Azure. La aplicación usa la identidad para autenticarse en otros servicios.

  1. En la parte superior del Azure Portal, busque Identidades administradas. Seleccione el resultado de Identidades administradas.
  2. Seleccione + Crear en la parte superior de la página de información general de Identidades administradas.
  3. En la pestaña Datos básicos, escriba los valores siguientes:
    • Suscripción: Seleccione la opción de suscripción que desee.
    • Grupo de recursos: Seleccione el grupo de recursos deseado.
    • Región: seleccione una región cercana a su ubicación.
    • Nombre: Escriba un nombre reconocible para la identidad, como MigrationIdentity.
  4. En la parte inferior de la página, seleccione Revisar y crear.
  5. Cuando finalicen las comprobaciones de validación, seleccione Crear. Azure crea una nueva identidad asignada por el usuario.

Una vez creado el recurso, seleccione Ir al recurso para ver los detalles de la identidad administrada.

Captura de pantalla que muestra cómo crear una identidad administrada asignada por el usuario.

Asociación de la identidad administrada a la aplicación web

Debe configurar la aplicación web para usar la identidad administrada que ha creado. Asigne la identidad a la aplicación mediante el Azure Portal o la CLI de Azure.

Complete los pasos siguientes en el Azure Portal para asociar una identidad a la aplicación. Estos mismos pasos se aplican a los siguientes servicios de Azure:

  • Azure Spring Apps
  • Azure Container Apps
  • Máquinas virtuales de Azure
  • Azure Kubernetes Service
  1. Vaya a la página de información general de la aplicación web.

  2. En el menú de navegación de la izquierda, seleccione Identidad.

  3. En la página Identidad, cambie a la pestaña Asignado por el usuario.

  4. Seleccione + Agregar para abrir el control flotante Agregar identidad administrada asignada por el usuario.

  5. Seleccione la suscripción que usó anteriormente para crear la identidad.

  6. Busque MigrationIdentity por nombre y selecciónelo en los resultados de la búsqueda.

  7. Seleccione Agregar para asociar la identidad a la aplicación.

    Captura de pantalla que muestra cómo crear una identidad asignada por el usuario.

Asignación de roles a la identidad administrada

A continuación, debe conceder permisos a la identidad administrada que ha creado para acceder al centro de eventos. Conceda permisos mediante la asignación de un rol a la identidad administrada, tal como hizo con el usuario de desarrollo local.

  1. Vaya a la página de información general del centro de eventos y seleccione Control de acceso (IAM) en el panel de navegación izquierdo.

  2. Elija Agregar asignación de roles

    Captura de pantalla que muestra cómo agregar un rol a una identidad administrada.

  3. En el cuadro de búsqueda Rol, busque Remitente de datos de Azure Event Hubs, que es un rol común que se usa para administrar las operaciones de datos para colas. Puede asignar cualquier rol que sea adecuado para el caso de uso. Seleccione el remitente de datos de Azure Event Hubs en la lista y elija Siguiente.

  4. En la pantalla Agregar asignación de roles, en la opción Asignar acceso a, seleccione Identidad administrada. A continuación, elija +Seleccionar miembros.

  5. En el control flotante, busque la identidad administrada que creó por nombre y selecciónela en los resultados. Elija Seleccionar para cerrar el menú del control flotante.

    Captura de pantalla que muestra cómo seleccionar la identidad administrada asignada.

  6. Seleccione Siguiente un par de veces hasta que pueda seleccionar Revisar y asignar para finalizar la asignación de roles.

  7. Repita estos pasos para el rol Receptor de datos de Azure Event Hubs.

Actualización del código de la aplicación

Debe configurar el código de la aplicación para buscar la identidad administrada específica que creó cuando se implemente en Azure. En algunos escenarios, establecer explícitamente la identidad administrada para la aplicación también impide que otras identidades del entorno se detecten y usen automáticamente.

  1. En la página de información general de la identidad administrada, copie el valor del id. de cliente en el Portapapeles.

  2. Aplique los siguientes cambios específicos de idioma:

    Cree un objeto DefaultAzureCredentialOptions y páselo a DefaultAzureCredential. Establezca la propiedad ManagedIdentityClientId en el identificador de cliente.

    DefaultAzureCredential credential = new(
        new DefaultAzureCredentialOptions
        {
            ManagedIdentityClientId = managedIdentityClientId
        });
    
  3. Vuelva a implementar el código en Azure después de realizar este cambio para que se apliquen las actualizaciones de configuración.

Prueba de la aplicación

Después de implementar el código actualizado, vaya a la aplicación hospedada en el explorador. La aplicación debe poder conectarse al centro de eventos correctamente. Tenga en cuenta que las asignaciones de roles pueden tardar varios minutos en propagarse a través del entorno de Azure. Ahora la aplicación está configurada para ejecutarse localmente y en un entorno de producción sin que los desarrolladores tengan que administrar los secretos en la propia aplicación.

Pasos siguientes

En este tutorial, ha aprendido a migrar una aplicación a conexiones sin contraseña.

Puede leer los siguientes recursos para explorar los conceptos que se describen en este artículo con más detalle: