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.

Importante

Con el fin de asegurarse de que las nuevas características se documentan a más tardar en su versión, esta página puede incluir documentación para las características que aún no están disponibles públicamente.

Control de identidades y acceso

Cada servidor habilitado para Azure Arc tiene una identidad administrada como parte de un grupo de recursos dentro de una suscripción de Azure. Esa identidad representa el servidor que se ejecuta localmente o en otro entorno en la nube. El acceso a este recurso se controla mediante el control de acceso basado en roles de Azure estándar. 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 Azure Active Directory (Azure AD) 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 el envío de latidos a Azure, la exposición del servicio de metadatos de la instancia local para que otras aplicaciones obtengan información sobre el identificador de recurso de Azure de la máquina, y la recuperación de tokens de Azure AD para autenticarse en otros servicios de 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 al conectar servidores a Azure que deben supervisarse o protegerse mediante Azure, pero no deben permitir funcionalidades de administración arbitrarias, como ejecutar scripts con la extensión de script personalizado o configurar opciones en el servidor con Configuración de invitado.

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 característica está pensada para servidores especialmente confidenciales (por ejemplo, controladores de Dominio de Active Directory, servidores que controlan 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 esta configuración.

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 evaluará todas las solicitudes para instalar o actualizar extensiones con respecto a la lista de permitidos y la lista de bloqueados para decidir si la extensión se puede instalar 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 de Azure Connected Machine para permitir solo el agente de Log Analytics para Linux y Dependency Agent para Linux, ejecute el siguiente comando en cada servidor:

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

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

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

Las extensiones se especifican por su editor y tipo, separadas por una barra diagonal. 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.

En la tabla siguiente se describe el comportamiento al realizar una operación con extensiones en 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 Permitida Permitida Permitida Permitida

Importante

Si hay una extensión ya instalada en el servidor antes de configurar una lista de permitidos o una lista de bloqueados, no se quitará automáticamente. Es su responsabilidad eliminar la extensión de Azure para quitarla por completo de la máquina. Las solicitudes de eliminación se aceptan siempre para permitir este escenario. Una vez eliminada, la lista de permitidos y la lista de bloqueados determinarán si se permitirán o no los futuros intentos de instalación.

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 invitado está deshabilitada, las directivas de Configuración de invitado asignadas a la máquina en Azure se mostrarán como no compatibles. Considere la posibilidad de crear una exención para estas máquinas o cambiar el ámbito de las asignaciones de directivas si no desea que estas máquinas se notifiquen como no compatibles.

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

Al deshabilitar el administrador de extensiones no se quitarán las extensiones ya instaladas en el servidor. Las extensiones hospedadas en sus propios servicios de Windows o Linux, como el agente de Log Analytics, pueden seguir ejecutándose aunque el administrador de extensiones esté deshabilitado. Otras extensiones hospedadas por el propio administrador de extensiones, como el agente de Azure Monitor, no se ejecutarán con el administrador de extensiones 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 de Azure Connected Machine con un conjunto reducido de funcionalidades, es importante tener en cuenta los mecanismos que alguien podría usar para quitar esas restricciones e implementar 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 directivas de Configuración de invitado se ejecutan en contextos con privilegios en el servidor y, como tal, pueden cambiar la configuración del agente. Si aplica estos controles de seguridad para bloquear el agente, Microsoft sugiere los siguientes procedimientos recomendados para asegurarse de que solo los administradores del servidor locales 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. Los siguientes ejemplos de configuración pueden ayudarle a configurar el agente de Azure Arc para permitir solo estos escenarios.

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 permite extensiones adicionales en el servidor para identificar software vulnerable en el 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

Uso de una identidad administrada con servidores habilitados para Azure Arc

De manera predeterminada, la identidad asignada por el sistema de Azure Active Directory que usa Arc solo se puede emplear 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 todas las aplicaciones que se ejecutan en el equipo pueden acceder a Hybrid Instance Metadata Service, solo las aplicaciones autorizadas pueden solicitar un token de Azure AD para la identidad asignada por el sistema. En el primer intento de acceder al URI del token, el servicio generará un blob criptográfico generado de forma aleatoria en una ubicación del sistema de archivos que solo puedan leer los autores de llamada de confianza. A continuación, el autor de la llamada debe leer el archivo (al demostrar que tiene el permiso adecuado) y reintentar la solicitud con el contenido del archivo en el encabezado de autorización para recuperar correctamente un token de Azure AD.

  • 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.