Introducción a la seguridad de servidores habilitados para Azure Arc

En este artículo se describen la configuración y consideraciones de seguridad que debe evaluar antes de implementar los servidores habilitados para Azure Arc en su empresa.

Control de identidades y acceso

El control de acceso basado en roles de Azure se utiliza para controlar qué cuentas pueden ver y administrar su servidor habilitado para Azure Arc. En la página Access Control (IAM) de Azure Portal, puede comprobar quién tiene acceso a su servidor habilitado para Azure Arc.

Azure Arc-enabled server access control

Los usuarios y aplicaciones a los que se ha concedido el acceso de rol Colaborador o Administrador en el recurso pueden realizar cambios en el recurso, incluida la implementación o eliminación de extensiones en la máquina. Las extensiones pueden incluir scripts arbitrarios que se ejecutan en un contexto con privilegios, por lo que se aconseja que todos los colaboradores en el recurso de Azure sean un administrador indirecto del servidor.

El rol Incorporación de Azure Connected Machine está disponible para la incorporación a escala y solo puede leer o crear nuevos servidores habilitados para Azure Arc en Azure. No se puede usar para eliminar servidores ya registrados, ni para administrar extensiones. Como procedimiento recomendado, se recomienda asignar este rol a la entidad de servicio de Microsoft Entra que se usa para incorporar máquinas a escala.

Cuando los usuarios son miembros del rol Administrador de recursos de Azure Connected Machine pueden leer, modificar, volver a incorporar y eliminar una máquina. Este rol está diseñado para admitir la administración de servidores habilitados para Azure Arc, pero no otros recursos del grupo de recursos o la suscripción.

Seguridad y permisos del agente

Para administrar el agente de Azure Connected Machine (azcmagent) en Windows, la cuenta de usuario debe pertenecer al grupo local de administradores. En el caso de Linux, debe tener permisos de acceso raíz.

El agente de Azure Connected Machine se compone de tres servicios que se ejecutan en su equipo.

  • El servicio Hybrid Instance Metadata Service (himds) es responsable de toda la funcionalidad básica de Arc. Esto incluye enviar heartbeats a Azure, exponer un servicio de metadatos de instancia local para que otras aplicaciones conozcan el ID de recurso Azure de la máquina y recuperar tokens Microsoft Entra para autenticarse en otros servicios Azure. Este servicio se ejecuta como una cuenta de servicio virtual sin privilegios (NT SERVICE\himds) en Windows, y como el usuario himds en Linux. La cuenta de servicio virtual requiere el derecho Iniciar sesión como servicio en Windows.

  • El servicio de configuración de invitados (GCService) se encarga de evaluar Azure Policy en el equipo.

  • El servicio de extensión de configuración de invitados (ExtensionService) se encarga de la instalación, actualización y eliminación de extensiones (agentes, scripts u otro software) en el equipo.

Los servicios de la extensión y configuración de invitados se ejecutan como sistema local en Windows y como raíz en Linux.

Controles de seguridad del agente local

A partir de la versión 1.16 del agente, tiene la opción de limitar las extensiones que se pueden instalar en el servidor y deshabilitar la Configuración de invitado. Estos controles pueden ser útiles cuando se conectan servidores a Azure con un único propósito, como recopilar registros de eventos, sin permitir que se utilicen otras capacidades de administración en el servidor.

Estos controles de seguridad solo se pueden configurar mediante la ejecución de un comando en el propio servidor y no se pueden modificar desde Azure. Este enfoque conserva la intención del administrador del servidor al habilitar escenarios de administración remota con Azure Arc, pero también significa que es más difícil cambiar la configuración si más adelante decide cambiarlos. Esta función está pensada para servidores confidenciales (por ejemplo, controladores de Dominio de Active Directory, servidores que manejan datos de pago y servidores sujetos a estrictas medidas de control de cambios). En la mayoría de los demás casos, no es necesario modificar estos ajustes.

Listas de permitidos y listas de bloqueados para extensiones

Para limitar qué extensiones se pueden instalar en el servidor, pueden configurarse listas de las extensiones que desee permitir y bloquear en el servidor. El administrador de extensiones evalúa todas las solicitudes de instalación, actualización o mejora de extensiones comparándolas con la lista de permitidos y la lista de bloqueados para determinar si la extensión puede instalarse en el servidor. Las solicitudes de eliminación se permiten siempre.

La opción más segura es permitir explícitamente las extensiones que espera se instalen. Toda extensión que no esté en la lista de permitidos se bloquea automáticamente. Para configurar el agente Azure Connected Machine de modo que solo permita el agente Azure Monitor para Linux, ejecute el siguiente comando en cada servidor:

azcmagent config set extensions.allowlist "Microsoft.Azure.Monitor/AzureMonitorLinuxAgent"

Para bloquear una o varias extensiones, puede agregarlas a la lista de bloqueados. Si una extensión está presente tanto en la lista de permitidos como en la de bloqueados, se bloquea. Para bloquear la extensión de script personalizado para Linux, ejecute el comando siguiente:

azcmagent config set extensions.blocklist "Microsoft.Azure.Extensions/CustomScript"

Especifique las extensiones con su editor y tipo, separados por una barra oblicua /. Consulte la lista de extensiones más comunes en los documentos o enumere las extensiones de VM ya instaladas en el servidor en el portal, Azure PowerShell o la CLI de Azure.

La tabla describe el comportamiento al realizar una operación de extensión contra un agente que tiene configurada la lista de permitidos o la lista de bloqueados.

Operación En la lista de permitidos En la lista de bloqueados Tanto en la lista de permitidos como en la lista de bloqueados En ninguna lista, pero hay configurada una lista de permitidos
Instalación de la extensión Permitida Bloqueado Bloqueado Bloqueado
Actualizar (reconfigurar) extensión Permitida Bloqueado Bloqueado Bloqueado
Actualizar extensión Permitida Bloqueado Bloqueado Bloqueado
Eliminar extensión Permitido Permitida Permitida Permitido

Importante

Si una extensión ya está instalada en su servidor antes de configurar una lista de permitidos o una lista de bloqueados, no se eliminará automáticamente. Es su responsabilidad eliminar la extensión de Azure para eliminarla completamente de la máquina. Las solicitudes de eliminación se aceptan siempre para permitir este escenario. Una vez eliminados, la lista de permitidos y la lista de bloqueados determinan si se permiten o no futuros intentos de instalación.

A partir de la versión 1.35 del agente, existe un valor especial lista de permitidos Allow/None, que indica al administrador de extensiones que se ejecute, pero que no permita la instalación de ninguna extensión. Esta es la configuración recomendada cuando se utiliza Azure Arc para entregar actualizaciones de seguridad ampliadas (ESU) de Windows Server 2012 sin intención de utilizar ninguna otra extensión.

azcmagent config set extensions.allowlist "Allow/None"

Habilitación o deshabilitación de la Configuración de invitado

La característica Configuración de invitado de Azure Policy le permite auditar y configurar los valores en el servidor desde Azure. Para deshabilitar la ejecución de Configuración de invitado en el servidor si no desea permitir esta funcionalidad, puede ejecutar el siguiente comando:

azcmagent config set guestconfiguration.enabled false

Cuando la Configuración de invitados está deshabilitada, cualquier directiva de Configuración de invitados asignada a la máquina en Azure se muestra como no conforme. Considere crear una exención para estas máquinas o cambiar el ámbito de sus asignaciones de directivas si no desea que estas máquinas se reporten como no conformes.

Habilitación o deshabilitación del administrador de extensiones

El administrador de extensiones es responsable de las extensiones de máquina virtual en el servidor, las instala, las actualiza y las quita. Puede deshabilitar el administrador de extensiones para evitar la administración de extensiones en el servidor, pero se recomienda usar las listas de permitidos y bloqueados en su lugar para un control más pormenorizado.

azcmagent config set extensions.enabled false

Deshabilitar el administrador de extensiones no eliminará ninguna extensión ya instalada en su servidor. Las extensiones que se alojan en sus propios servicios de Windows o Linux, como el Log Analytics Agent, pueden seguir ejecutándose aunque se deshabilite el administrador de extensiones. Otras extensiones alojadas por el propio administrador de extensiones, como Azure Monitor Agent, no se ejecutan si el administrador de extensiones está deshabilitado. Debe quitar las extensiones antes de deshabilitar el administrador de extensiones para asegurarse de que no se sigan ejecutando en el servidor.

Procedimientos recomendados para máquinas bloqueadas

Al configurar el agente Azure Connected Machine con un conjunto reducido de capacidades, es importante tener en cuenta los mecanismos que alguien podría utilizar para eliminar esas restricciones e implementar los controles adecuados. Cualquier persona capaz de ejecutar comandos como administrador o usuario raíz en el servidor puede cambiar la configuración del agente de Azure Connected Machine. Las extensiones y las directivas de configuración de invitados se ejecutan en contextos privilegiados en su servidor y, como tales, podrían ser capaces de cambiar la configuración del agente. Si aplica controles de seguridad locales del agente para bloquearlo, Microsoft recomienda las siguientes prácticas recomendadas para garantizar que solo los administradores locales del servidor puedan actualizar la configuración del agente:

  • Siempre que sea posible, use listas de permitidos para extensiones en lugar de listas de bloqueados.
  • No incluya la extensión de script personalizado en la lista de permitidos de extensiones para evitar la ejecución de scripts arbitrarios que puedan cambiar la configuración del agente.
  • Deshabilite la Configuración de invitado para evitar el uso de directivas de Configuración de invitado personalizadas que podrían cambiar la configuración del agente.

Ejemplo de configuración para escenarios de supervisión y seguridad

Es habitual usar Azure Arc para supervisar los servidores con Azure Monitor y Microsoft Sentinel, y protegerlos con Microsoft Defender for Cloud. Esta sección contiene ejemplos de cómo bloquear el agente para que solo admita escenarios de monitorización y seguridad.

Agente de Azure Monitor únicamente

En los servidores Windows, ejecute los siguientes comandos en una consola de comandos con privilegios elevados:

azcmagent config set extensions.allowlist "Microsoft.Azure.Monitor/AzureMonitorWindowsAgent"
azcmagent config set guestconfiguration.enabled false

En todos los servidores Linux, ejecute los comandos siguientes:

sudo azcmagent config set extensions.allowlist "Microsoft.Azure.Monitor/AzureMonitorLinuxAgent"
sudo azcmagent config set guestconfiguration.enabled false

Log Analytics y dependencia (Azure Monitor VM Insights) únicamente

Esta configuración corresponde a los agentes heredados de Log Analytics y al agente de dependencias.

En los servidores Windows, ejecute los siguientes comandos en una consola con privilegios elevados:

azcmagent config set extensions.allowlist "Microsoft.EnterpriseCloud.Monitoring/MicrosoftMonitoringAgent,Microsoft.Azure.Monitoring.DependencyAgent/DependencyAgentWindows"
azcmagent config set guestconfiguration.enabled false

En todos los servidores Linux, ejecute los comandos siguientes:

sudo azcmagent config set extensions.allowlist "Microsoft.EnterpriseCloud.Monitoring/OMSAgentForLinux,Microsoft.Azure.Monitoring.DependencyAgent/DependencyAgentLinux"
sudo azcmagent config set guestconfiguration.enabled false

Supervisión y seguridad

Microsoft Defender for Cloud despliega extensiones en su servidor para identificar software vulnerable en su servidor y habilitar Microsoft Defender para punto de conexión (si está configurado). Microsoft Defender for Cloud también usa la Configuración de invitado para su característica de cumplimiento normativo. Dado que se podría usar una asignación personalizada de Configuración de invitado para deshacer las limitaciones del agente, debe evaluar cuidadosamente si necesita o no la característica de cumplimiento normativo y, como consecuencia, si la Configuración de invitado debe habilitarse en el equipo.

En los servidores Windows, ejecute los siguientes comandos en una consola de comandos con privilegios elevados:

azcmagent config set extensions.allowlist "Microsoft.EnterpriseCloud.Monitoring/MicrosoftMonitoringAgent,Qualys/WindowsAgent.AzureSecurityCenter,Microsoft.Azure.AzureDefenderForServers/MDE.Windows,Microsoft.Azure.AzureDefenderForSQL/AdvancedThreatProtection.Windows"
azcmagent config set guestconfiguration.enabled true

En todos los servidores Linux, ejecute los comandos siguientes:

sudo azcmagent config set extensions.allowlist "Microsoft.EnterpriseCloud.Monitoring/OMSAgentForLinux,Qualys/LinuxAgent.AzureSecurityCenter,Microsoft.Azure.AzureDefenderForServers/MDE.Linux"
sudo azcmagent config set guestconfiguration.enabled true

Modos de agente

Una manera más sencilla de configurar controles de seguridad locales para escenarios de supervisión y seguridad es usar el modo de supervisión, disponible con la versión 1.18 del agente y versiones posteriores. Los modos son configuraciones predefinidas de la lista de permitidos de extensión y el agente de configuración de invitado mantenidos por Microsoft. A medida que las nuevas extensiones estén disponibles para habilitar escenarios de supervisión, Microsoft actualizará la configuración de la lista de permitidos y el agente para incluir o excluir la nueva funcionalidad, según corresponda.

Hay dos modos para elegir:

  1. completo - el modo default. Esto permite toda la funcionalidad del agente.
  2. monitor : un modo restringido que deshabilita el agente de directiva de configuración de invitado y solo permite el uso de extensiones relacionadas con la supervisión y la seguridad.

Para ejecutar el modo comando para habilitar la supervisión:

azcmagent config set config.mode monitor

Puede comprobar el modo actual del agente y las extensiones permitidas con el siguiente comando:

azcmagent config list

Mientras está en modo de supervisión, no se puede modificar la lista de permitidos o la lista de bloqueos de la extensión. Si necesita cambiar cualquiera de las listas, vuelva a cambiar el agente al modo completo y especifique su propia lista de permitidos y listas de bloqueados.

Para volver al modo completo, ejecute el siguiente comando:

azcmagent config set config.mode full

Uso de una identidad administrada con servidores habilitados para Azure Arc

De forma predeterminada, la identidad asignada al sistema Microsoft Entra utilizada por Arc solo puede utilizarse para actualizar el estado del servidor habilitado para Azure Arc en Azure. Por ejemplo, el último estado de latido. Como alternativa, puede asignar otros roles a la identidad si una aplicación del servidor usa la identidad asignada por el sistema para acceder a otros servicios de Azure. Para más información sobre cómo configurar una identidad administrada asignada por el sistema para acceder a los recursos de Azure, consulte Autenticación en recursos de Azure con servidores habilitados para Azure Arc.

Mientras que el Hybrid Instance Metadata Service puede ser accedido por cualquier aplicación que se ejecute en la máquina, solo las aplicaciones autorizadas pueden solicitar un token de Microsoft Entra para la identidad asignada al sistema. En el primer intento de acceder al token URI, el servicio genera un blob criptográfico generado aleatoriamente en una ubicación del sistema de archivos que solo las personas de confianza pueden leer. La persona que llama debe entonces leer el archivo (probando que tiene el permiso apropiado) y reintentar la petición con el contenido del archivo en el encabezado de autorización para recuperar con éxito un token de Microsoft Entra.

  • En Windows, el autor de la llamada debe ser miembro del grupo local Administradores o del grupo Aplicaciones de la extensión de agente híbrido para leer el blob.

  • En Linux, el autor de la llamada debe ser miembro del grupo himds para leer el blob.

Para más información sobre cómo usar una identidad administrada con servidores habilitados para Arc con fines de autenticación y acceso a los recursos de Azure, consulte el vídeo siguiente.

Uso del cifrado de disco

El agente de Azure Connected Machine usa la autenticación de clave pública para comunicarse con el servicio de Azure. Después de incorporar un servidor a Azure Arc, se guarda una clave privada en el disco y se usa siempre que el agente se comunica con Azure. Si se descarta, la clave privada se puede usar en otro servidor para comunicarse con el servicio y actuar como si fuera el servidor original. Esto incluye acceder a la identidad asignada por el sistema y a todos los recursos a los que tiene acceso la identidad. El archivo de clave privada está protegido para permitir que solo la cuenta himds acceda para leerlo. Para evitar los ataques sin conexión, recomendamos el uso del cifrado de disco completo (por ejemplo, BitLocker, dm-crypt, etc.) en el volumen del sistema operativo del servidor.

Pasos siguientes

  • Antes de evaluar o habilitar los servidores habilitados para Azure Arc en varias máquinas híbridas, consulte la introducción al agente de Connected Machine para conocer los requisitos y detalles técnicos del agente y los métodos de implementación.

  • Examine la guía de planeamiento e implementación para planear la implementación de servidores habilitados para Azure Arc a cualquier escala e implementar la administración y supervisión centralizadas.