Protección de una aplicación demonio

En este artículo, se explica cómo hospedar aplicaciones de demonio en un entorno seguro y de confianza en Microsoft Azure Maps.

Estos son algunos ejemplos de aplicaciones de demonio:

  • Instancia de Azure WebJobs
  • Aplicación de función de Azure
  • Servicio de Windows
  • Un servicio confiable ejecutándose en segundo plano

Visualización de los detalles de autenticación de Azure Maps

Para ver los detalles de autenticación de la cuenta de Azure Maps en Azure Portal:

  1. Inicie sesión en Azure Portal.

  2. Vaya al menú de Azure Portal. Seleccione Todos los recursos y, a continuación, seleccione la cuenta de Azure Maps.

  3. En Configuración en el panel izquierdo, seleccione Autenticación.

    Screenshot showing your Azure Maps authentication options in the Azure portal.

Se crean tres valores cuando se crea la cuenta de Azure Maps. Se usan para admitir dos tipos de autenticación en Azure Maps:

  • Autenticación de Microsoft Entra: Client ID representa la cuenta que se va a usar para las solicitudes de API REST. El valor de Client ID debe almacenarse en la configuración de la aplicación y recuperarse antes de realizar solicitudes HTTP de Azure Maps que usan la autenticación de Microsoft Entra.
  • Autenticación de clave compartida: Primary Key y Secondary Key se usan como clave de suscripción para la autenticación de clave compartida. La autenticación de clave compartida se basa en pasar la clave generada por la cuenta de Azure Maps con cada solicitud a Azure Maps. Se recomienda volver a generar periódicamente las claves. Para mantener las conexiones actuales durante la regeneración, se proporcionan dos claves. Se puede usar una clave mientras se regenera la otra. Cuando regenere las claves, debe actualizar todas las aplicaciones que acceden a esta cuenta para usar las nuevas claves. Para obtener más información, consulte Autenticación con Azure Maps.

Importante

En el caso de las aplicaciones de producción, se recomienda implementar Microsoft Entra ID y el control de acceso basado en rol de Azure (RBAC de Azure). Para obtener información general sobre los conceptos de Microsoft Entra, consulte Autenticación con Azure Maps.

Escenario: Autenticación mediante claves compartidas con Azure Key Vault

Las aplicaciones que usan la autenticación mediante claves compartidas deben almacenar las claves en un almacén seguro. En este escenario, se explica cómo almacenar de forma segura la clave de una aplicación como un secreto en Azure Key Vault. En lugar de almacenar la clave compartida en la configuración de la aplicación, es la aplicación quien debe recuperar la clave compartida como un secreto de Azure Key Vault. Para simplificar la regeneración de claves, se recomienda que las aplicaciones usen una clave cada vez. Después, las aplicaciones pueden volver a generar la clave no utilizada e implementar la clave regenerada en Azure Key Vault, todo ello mientras se mantienen las conexiones actuales con una clave. Para saber cómo configurar un almacén de Azure Key Vault, consulte Guía del desarrollador de Azure Key Vault.

Importante

En este escenario, se accede indirectamente a Microsoft Entra ID a través de Azure Key Vault. Sin embargo, se recomienda usar la autenticación de Microsoft Entra directamente. El uso de Microsoft Entra ID evita la complejidad adicional y los requisitos operativos de usar la autenticación mediante claves compartidas y la configuración de un almacén de claves.

En los pasos siguientes se describe este proceso:

  1. Cree un almacén de claves de Azure Key Vault.
  2. Cree una entidad de servicio de Microsoft Entra mediante la creación de un registro de aplicación o una identidad administrada. La entidad de servicio creada es responsable de acceder al almacén de claves de Azure Key Vault.
  3. Asigne a la entidad de servicio acceso a los secretos de Azure Key Vault con el permiso get. Para obtener más información sobre cómo establecer los permisos, consulte Asignación de una directiva de acceso de Key Vault mediante Azure Portal.
  4. Asigne temporalmente acceso a los secretos con el permiso set para el desarrollador.
  5. Establezca la clave compartida en los secretos del almacén de claves y haga referencia al identificador del secreto en la configuración de la aplicación de demonio.
  6. Quite el permiso set de los secretos.
  7. Para recuperar el secreto de la clave compartida de Azure Key Vault, implemente la autenticación de Microsoft Entra en la aplicación de demonio.
  8. Cree una solicitud de la API REST de Azure Maps con la clave compartida. Ahora, la aplicación de demonio puede recuperar la clave compartida del almacén de claves.

Sugerencia

Si la aplicación está hospedada en el entorno de Azure, se recomienda usar una identidad administrada para reducir el costo y la complejidad de administrar un secreto para la autenticación. Para obtener información sobre cómo configurar una identidad administrada, consulte Tutorial: Uso de una identidad administrada para conectar Key Vault a una aplicación web de Azure en .NET.

Escenario: control de acceso basado en roles en Microsoft Entra

Cuando se crea una cuenta de Azure Maps, se muestra el valor Client ID de Azure Maps en la página Detalles de autenticación de Azure Portal. Este valor representa la cuenta que debe usarse para las solicitudes de la API REST. Este valor debe almacenarse en la configuración de la aplicación y debe recuperarse antes de realizar las solicitudes HTTP. El objetivo del escenario es permitir que la aplicación de demonio se autentique en Microsoft Entra ID y llame a las API REST de Azure Maps.

Sugerencia

Para habilitar las ventajas de los componentes de identidades administradas, se recomienda el hospedaje en Azure Virtual Machines, Virtual Machine Scale Sets o App Services.

Hospedaje de un demonio en recursos de Azure

Cuando ejecute aplicaciones en recursos de Azure, puede configurar identidades administradas por Azure para lograr un esfuerzo de administración de credenciales mínimo y de bajo costo.

Para habilitar el acceso de las aplicaciones a una identidad administrada, consulte ¿Qué son las identidades administradas de recursos de Azure?.

Las siguientes son algunas de las ventajas de las identidades administradas:

  • Autenticación mediante criptografía de claves públicas con certificados X509 administrada por el sistema de Azure.
  • Seguridad de Microsoft Entra con certificados X509 en lugar de secretos de cliente.
  • Azure administra y renueva todos los certificados asociados al recurso de la identidad administrada.
  • Simplificación de la administración operativa de credenciales, ya que la identidad administrada elimina la necesidad de un servicio de almacén de secretos protegido, como Azure Key Vault.

Hospedaje de un demonio en recursos que no son de Azure

Las identidades administradas solo están disponibles cuando se ejecutan en un entorno de Azure. Por tanto, debe configurar una entidad de servicio mediante un registro de aplicación de Microsoft Entra para la aplicación de demonio.

Creación de un nuevo registro de aplicación

Si ya ha creado el registro de aplicación, vaya a Asignación de permisos de API delegados.

Para crear un nuevo registro de aplicación:

  1. Inicie sesión en Azure Portal.

  2. Seleccione Microsoft Entra ID.

  3. En Administrar en el menú de la izquierda, seleccione Registros de aplicaciones.

  4. Seleccione la pestaña + Nuevo registro.

    A screenshot showing application registration in Microsoft Entra ID.

  5. Escriba un Nombre y seleccione una opción en Supported account types (Tipos de cuenta admitidos).

    Create app registration.

  6. Seleccione Registrar.

Asignación de permisos de API delegados

Para asignar permisos de API delegados a Azure Maps:

  1. Si no lo ha hecho aún, inicie sesión en Azure Portal.

  2. Seleccione Microsoft Entra ID.

  3. En Administrar en el menú de la izquierda, seleccione Registros de aplicaciones.

  4. Seleccione la aplicación.

    Select app registrations.

  5. En el panel izquierdo, en Administrar, seleccione Permisos de API.

  6. Seleccione Agregar un permiso.

    Add app permission.

  7. Seleccione la pestaña API usadas en mi organización.

  8. En el cuadro de búsqueda, escriba Azure Maps.

  9. Seleccione Azure Maps.

    Request app permission.

  10. Seleccione la casilla Access Azure Maps (Acceder a Azure Maps).

  11. Seleccione Agregar permisos.

    Select app API permissions.

Creación de un secreto de cliente o configuración de un certificado

Para implementar la autenticación basada en el servidor o en la aplicación, puede elegir una de estas dos opciones:

  • Cargar un certificado de clave pública.
  • Crear un secreto de cliente.
Carga de un certificado de clave pública

Para cargar un certificado de clave pública:

  1. En el panel izquierdo, en Administrar, seleccione Certificados y secretos.

  2. Seleccione Cargar certificado. Upload certificate.

  3. A la derecha del cuadro de texto, seleccione el icono de archivo.

  4. Elija un archivo .crt, .cer o .pem y seleccione Agregar.

    Upload certificate file.

Creación de un secreto de cliente

Para crear un secreto de cliente:

  1. En el panel izquierdo, en Administrar, seleccione Certificados y secretos.

  2. Seleccione + Nuevo secreto de cliente.

    New client secret.

  3. Escriba una descripción del secreto de cliente.

  4. Seleccione Agregar.

    Add new client secret.

  5. Copie el secreto y almacénelo de forma segura en un servicio como Azure Key Vault. También use el secreto en la sección Solicitud de un token con una identidad administrada de este artículo.

    Copy client secret.

    Importante

    Consulte la Guía del desarrollador de Azure Key Vault para almacenar de forma segura el certificado o el secreto. Usará este secreto para obtener tokens de Microsoft Entra ID.

Concesión de acceso basado en roles para usuarios de Azure Maps

Para conceder el control de acceso basado en rol de Azure (Azure RBAC ), se asignan un grupo o una entidad de seguridad de Microsoft Entra a una o varias definiciones de roles de Azure Maps.

Para ver las definiciones de roles de Azure disponibles para Azure Maps, consulte Visualización de definiciones de roles integrados de Azure Maps.

Para obtener pasos detallados sobre cómo asignar un rol de Azure Maps disponible a la identidad administrada o a la entidad de servicio creadas, consulte Asignación de roles de Azure mediante Azure Portal.

Para administrar de forma eficaz la aplicación de Azure Maps y el acceso a los recursos por parte de una gran cantidad de usuarios, consulte Grupos de Microsoft Entra.

Importante

Para que los usuarios puedan autenticarse en la aplicación, primero deben crearse en Microsoft Entra ID. Para más información, consulte Incorporación o eliminación de usuarios mediante Microsoft Entra ID.

Para obtener información sobre cómo administrar eficazmente un directorio grande para los usuarios, consulte Microsoft Entra ID.

Advertencia

Las definiciones de roles de Azure Maps integradas proporcionan un acceso de autorización muy amplio a muchas API REST de Azure Maps. Para restringir al mínimo el acceso a las API, consulte cómo crear una definición de roles personalizada y asignar la identidad asignada por el sistema a la definición de roles personalizada. Esto proporciona el privilegio mínimo necesario para que la aplicación acceda a Azure Maps.

Solicitud de un token con una identidad administrada

Una vez configurada una identidad administrada para el recurso de hospedaje, puede usar el SDK o la API REST de Azure para adquirir un token para Azure Maps. Para obtener información sobre cómo adquirir un token de acceso, consulte Cómo usar identidades administradas de recursos de Azure en una máquina virtual de Azure para adquirir un token de acceso.

Solicitud de un token con un registro de aplicación

Después de registrar la aplicación y asociarla a Azure Maps, debe solicitar un token de acceso.

Para adquirir el token de acceso:

  1. Si no lo ha hecho aún, inicie sesión en Azure Portal.

  2. Seleccione Microsoft Entra ID.

  3. En Administrar en el menú de la izquierda, seleccione Registros de aplicaciones.

  4. Seleccione la aplicación.

  5. Debe abrirse la página Información general. Copie el id. de la aplicación (cliente) y el id. del directorio (inquilino).

    Copy token parameters.

Este artículo usa la aplicación Postman para crear la solicitud de token, pero puede usar otro entorno de desarrollo de API.

  1. En la aplicación Postman, seleccioneNew (Nuevo).

  2. En la ventana Create New (Crear nuevo), seleccione HTTP Request (Solicitud HTTP).

  3. En Request name (Nombre de solicitud), escriba un nombre para la solicitud, como POST Token Request.

  4. Seleccione el método HTTP POST.

  5. Escriba la siguiente dirección URL en la barra de direcciones (reemplace {Tenant-ID} por el identificador del directorio (inquilino), {Client-ID} por el identificador de la aplicación (cliente) y {Client-Secret} por el secreto del cliente):

    https://login.microsoftonline.com/{Tenant-ID}/oauth2/v2.0/token?response_type=token&grant_type=client_credentials&client_id={Client-ID}&client_secret={Client-Secret}&scope=https://atlas.microsoft.com/.default
    
  6. Seleccione Enviar.

  7. Debe mostrarse la siguiente respuesta de JSON:

{
    "token_type": "Bearer",
    "expires_in": 86399,
    "ext_expires_in": 86399,
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Im5PbzNaRHJPRFhFSzFq..."
}

Para obtener más información sobre el flujo de autenticación, consulte La Plataforma de identidad de Microsoft y el flujo de credenciales de cliente de OAuth 2.0.

Pasos siguientes

Para obtener ejemplos más detallados, vea:

Descubra las métricas de uso de API de la cuenta de Azure Maps:

Explore ejemplos que muestran cómo integrar Microsoft Entra ID con Azure Maps: