En este documento se abordan las dudas y preguntas sobre la instalación del cliente de descubrimiento de Migration Center en centros de datos. Se destaca la importancia de la seguridad, el cumplimiento y el rendimiento a la hora de descubrir y recoger datos de los recursos de TI de los clientes en entornos muy regulados.
Cómo se realiza la recogida de datos
El cliente de descubrimiento usa varios métodos para recoger datos de las máquinas de destino. Los datos recogidos varían en función del método. A nivel de invitado, los datos se recogen mediante las secuencias de comandos de recogida. A nivel de hipervisor, los datos se recogen mediante las APIs de la plataforma subyacente.
Servicio y proceso de descubrimiento de clientes
El cliente de descubrimiento se ejecuta como un servicio llamado GoogleMCDC
en un proceso llamado mcdc_service.exe
.
Secuencias de comandos de colección
Todos los métodos de recogida a nivel de invitado que usa el cliente de descubrimiento ejecutan secuencias de comandos de recogida en las máquinas de destino. Puedes consultar las secuencias de comandos reales que se usan para la recogida en los siguientes enlaces:
- Linux
- Windows
Las secuencias de comandos de recogida almacenan los resultados en un archivo (zip o tar) que el cliente de descubrimiento recupera.
Mecanismos de recogida
El cliente de descubrimiento puede usar uno o varios de los mecanismos de recogida descritos en las siguientes secciones para recoger datos de las máquinas de destino.
SSH (Linux)
Durante la recogida de SSH, se lleva a cabo el siguiente proceso:
- Se inicia una sesión SSH entre el equipo de recolección y el servidor de destino.
- Se crea un directorio temporal en
~/.mcdc-temp/
. - La secuencia de comandos de recogida se copia en ese directorio.
- Se ejecuta la secuencia de comandos de recogida.
- El archivo de resultados se obtiene mediante SCP.
- Se limpia el directorio temporal.
WMI (Windows)
Durante la recogida de WMI en Windows, se produce el siguiente proceso:
- Se inicia una conexión WMI con la máquina de destino.
- Se crea una clave de registro temporal (volátil) en el equipo de destino en
HKLM:\SOFTWARE\Google\Collector\data
. - La secuencia de comandos de recogida se copia en la clave del Registro.
- Se crea un directorio temporal en
C:\temp
. - La secuencia de comandos de la colección se escribe en el directorio temporal.
- Se ejecuta la secuencia de comandos de recogida.
- El resultado de la colección se escribe en la clave de registro volátil.
- El resultado se copia en el equipo de recogida.
Herramientas de VMware Guest (Linux y Windows)
Durante la recogida de VMware para Linux y Windows, se sigue el siguiente proceso:
- Se crea un directorio temporal con las herramientas de invitado de VMware.
- La secuencia de comandos de recogida se copia en ese directorio.
- Se ejecuta la secuencia de comandos de recogida.
- El archivo de resultados se obtiene mediante las herramientas de invitado de VMware.
- Se limpia el directorio temporal.
Recogida de datos periódica
El cliente de descubrimiento recoge datos de todos los servidores configurados de forma periódica. Hay dos tipos de colecciones:
- Recogida completa: se ejecuta una vez al día en cada servidor. Esta colección ejecuta la secuencia de comandos completa de la colección, que recoge diversa información sobre la máquina virtual, como el hardware, el entorno, el software instalado, los procesos en ejecución y más.
- Recogida de datos de rendimiento: se ejecuta cada 10 minutos en cada servidor. Esta colección ejecuta la secuencia de comandos de recogida de rendimiento que recoge datos sobre el uso de la CPU, la memoria, la red y el disco.
Qué datos se recogen
Las secuencias de comandos de recogida recogen datos sobre las máquinas virtuales de destino para saber cómo están configuradas y qué recursos utilizan. Esto les ayuda a evaluar y planificar su migración a la nube.
En la siguiente lista se describen los datos que se recogen:
- Información del sistema: la información básica que es crucial para determinar el tamaño de la VM, los requisitos de rendimiento y las dependencias de hardware o controladores específicos. Incluye lo siguiente:
- Sistema operativo (versión y lanzamiento)
- Hardware (CPU, memoria, detalles de la BIOS)
- Configuración de red (interfaces de red, direcciones IP, tablas de enrutamiento)
- Almacenamiento (unidades de disco, particiones, puntos de montaje)
- Software y servicios instalados: las secuencias de comandos recogen una lista de los paquetes instalados y los servicios en ejecución para conocer la pila de software de la VM y su función. Incluye lo siguiente:
- Servidores web (Apache, Tomcat, JBoss)
- Bases de datos (se recogen pruebas de SQL Server en la secuencia de comandos de Windows)
- Otras aplicaciones que pueden requerir configuraciones específicas durante la migración.
- Configuraciones de aplicaciones: las secuencias de comandos también recogen archivos de configuración de servidores web (IIS, Apache, Tomcat, JBoss y WordPress). Esto ayuda a comprender los ajustes y las dependencias específicos de estas aplicaciones, lo que es fundamental para garantizar una transición fluida al entorno de la nube.
- Detección de entornos de VMWare y de nube: tanto las secuencias de comandos de Linux como las de Windows intentan detectar si la VM ya se está ejecutando en un entorno de nube (AWS o Google Cloud) o en un clúster de VCenter. Para ello, envían solicitudes a los servidores de metadatos de estos proveedores de servicios en la nube. Si la máquina virtual ya está en la nube, las secuencias de comandos recogen metadatos relevantes, como el ID de instancia, el tipo de instancia y otros detalles.
- Métricas de rendimiento: las secuencias de comandos de recogida de rendimiento miden la utilización de recursos. Esto incluye lo siguiente:
- CPU
- Memoria
- Operaciones de E/S
- Redes
- Conexiones de red: las secuencias de comandos recogen las conexiones abiertas para ayudar a crear una imagen de las diferentes dependencias de los recursos de red.
Impacto en el rendimiento de las máquinas de destino
Evaluación del uso de recursos
El uso de recursos de las secuencias de comandos de recogida en la máquina de destino depende de parámetros como el número de procesos en ejecución, el número de aplicaciones implementadas y el número de conexiones de red activas, entre otros.
En Windows, la secuencia de comandos de recogida se ejecuta con la prioridad más baja disponible a través de la API Threading.
En Linux, se usa un valor de nice
para minimizar las interferencias con las cargas de trabajo de producción y asegurarse de que tengan una prioridad más alta que la secuencia de comandos de recogida.
Una recogida típica puede tardar entre 5 y 20 segundos de uso elevado de la CPU de un solo núcleo en una máquina sin carga. Puede que tarde más si hay otras cargas de trabajo, ya que estas tienen una prioridad más alta.
Estrategias de mitigación
El cliente de descubrimiento proporciona un mecanismo para evitar la recogida de servidores específicos durante horas concretas. Esta función se puede usar para evitar que se recojan datos de servidores que ejecutan cargas de trabajo críticas durante las horas punta.
Cuestiones sobre seguridad
Autenticación y autorización
Comunicación con las máquinas de destino
- El cliente de descubrimiento usa canales seguros para autenticarse y comunicarse con las máquinas de destino. Esto incluye conexiones SSH, WMI, herramientas de VMware y VCenter. El cliente de descubrimiento usa las medidas de seguridad integradas como parte de estos protocolos.
- En SSH, el cliente de descubrimiento permite la autenticación basada en nombre de usuario y contraseña, así como en claves. Para ver una lista completa de los tipos de pares de claves admitidos, consulte los requisitos de los recursos de destino.
Comunicación con Google Cloud
- Los clientes de descubrimiento registrados se comunican con Migration Center de Google Cloud
durante su funcionamiento normal. La comunicación se produce a través de una cuenta de servicio con la vinculación de rol
roles/migrationcenter.discoveryClient
. La cuenta de servicio se crea automáticamente o la proporciona el usuario durante el proceso de registro. - La clave privada de la cuenta de servicio se cifra en el equipo del cliente de descubrimiento mediante el mecanismo de cifrado descrito en la sección siguiente.
- Todas las comunicaciones con Google Cloud se autentican mediante esta cuenta de servicio y se cifran con SSL/TLS.
Encriptado de datos
- En tránsito: todos los canales de comunicación del cliente de descubrimiento utilizan el cifrado para proteger los datos en tránsito. Esto incluye la comunicación con las máquinas de destino mediante los diferentes protocolos (SSH o WMI) y la comunicación con Google Cloud mediante HTTPS.
- En reposo: la información personal identificable, la información personal identificable sensible y los secretos del cliente de descubrimiento se cifran en reposo mediante el algoritmo
AES128_GCM
y la API DPAPI de Windows para almacenar de forma segura las claves de cifrado.
Detección y prevención de intrusiones
Como el cliente de descubrimiento se usa para conectar y ejecutar secuencias de comandos en muchas máquinas virtuales de tu organización, puede activar alertas de EDR o xDR. Esto depende en gran medida de la forma en que se configuren tus herramientas de seguridad y de las herramientas específicas que utilices. Tenlo en cuenta y considera la posibilidad de crear excepciones para las alertas y los dispositivos específicos.
Registro y asistencia
El cliente de descubrimiento recoge registros durante su funcionamiento para permitir la depuración y la asistencia. Los registros del cliente de descubrimiento se recogen mediante dos mecanismos:
- Registros locales: los registros se escriben en un archivo en
C:\ProgramData\Google\mcdc\logs
. Los archivos de registro se rotan y se comprimen. - Registros de Cloud: los clientes registrados también envían los registros a Google Cloud para que el equipo de asistencia de Google Cloud pueda usarlos cuando se informen problemas de los clientes.