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:
Inicie sesión en Azure Portal.
Vaya al menú de Azure Portal. Seleccione Todos los recursos y, a continuación, seleccione la cuenta de Azure Maps.
En Configuración en el panel izquierdo, seleccione Autenticación.
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 deClient 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
ySecondary 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:
- Cree un almacén de claves de Azure Key Vault.
- 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.
- 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. - Asigne temporalmente acceso a los secretos con el permiso
set
para el desarrollador. - 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.
- Quite el permiso
set
de los secretos. - 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.
- 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:
Inicie sesión en Azure Portal.
Seleccione Microsoft Entra ID.
En Administrar en el menú de la izquierda, seleccione Registros de aplicaciones.
Seleccione la pestaña + Nuevo registro.
Escriba un Nombre y seleccione una opción en Supported account types (Tipos de cuenta admitidos).
Seleccione Registrar.
Asignación de permisos de API delegados
Para asignar permisos de API delegados a Azure Maps:
Si no lo ha hecho aún, inicie sesión en Azure Portal.
Seleccione Microsoft Entra ID.
En Administrar en el menú de la izquierda, seleccione Registros de aplicaciones.
Seleccione la aplicación.
En el panel izquierdo, en Administrar, seleccione Permisos de API.
Seleccione Agregar un permiso.
Seleccione la pestaña API usadas en mi organización.
En el cuadro de búsqueda, escriba Azure Maps.
Seleccione Azure Maps.
Seleccione la casilla Access Azure Maps (Acceder a Azure Maps).
Seleccione Agregar permisos.
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:
En el panel izquierdo, en Administrar, seleccione Certificados y secretos.
Seleccione Cargar certificado.
A la derecha del cuadro de texto, seleccione el icono de archivo.
Elija un archivo .crt, .cer o .pem y seleccione Agregar.
Creación de un secreto de cliente
Para crear un secreto de cliente:
En el panel izquierdo, en Administrar, seleccione Certificados y secretos.
Seleccione + Nuevo secreto de cliente.
Escriba una descripción del secreto de cliente.
Seleccione Agregar.
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.
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:
Si no lo ha hecho aún, inicie sesión en Azure Portal.
Seleccione Microsoft Entra ID.
En Administrar en el menú de la izquierda, seleccione Registros de aplicaciones.
Seleccione la aplicación.
Debe abrirse la página Información general. Copie el id. de la aplicación (cliente) y el id. del directorio (inquilino).
Este artículo usa la aplicación bruno para crear la solicitud de token, pero puede usar otro entorno de desarrollo de API.
Abra la aplicación bruno, seleccione NUEVA SOLICITUD para crear la solicitud.
En la ventana NUEVA SOLICITUD, establezca Tipo en HTTP. En Nombre, escriba un nombre para la solicitud, como POST Token Request.
Seleccione el método HTTP GET en la lista desplegable de URL y escriba la dirección URL siguiente:
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
Nota:
Sustituya:
{Tenant-ID}
con el id. de directorio (inquilino){Client-ID}
con el id. de aplicación (cliente){Client-Secret}
con el secreto de cliente.
Seleccione el botón Ejecutar
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: