Seguridad y recopilación de datos del cliente de descubrimiento

En este documento, se abordan las inquietudes y preguntas sobre la instalación del cliente de descubrimiento de Migration Center en los centros de datos. Enfatiza la importancia de la seguridad, el cumplimiento y el rendimiento cuando se descubren y recopilan datos de los activos de TI de los clientes en entornos muy regulados.

Cómo se realiza la recopilación de datos

El cliente de descubrimiento usa varios métodos para recopilar datos de las máquinas de destino. Los datos recopilados varían según el método. A nivel del invitado, los datos se recopilan con las secuencias de comandos de recopilación. A nivel del hipervisor, los datos se recopilan con las APIs subyacentes de la plataforma.

Servicio y proceso del cliente de descubrimiento

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 recopilación a nivel de invitado que usa el cliente de descubrimiento ejecutan secuencias de comandos de recopilación en las máquinas de destino. Puedes revisar las secuencias de comandos reales que se usan para la recopilación en los siguientes vínculos:

Las secuencias de comandos de recopilación almacenan los resultados en un archivo de almacenamiento (zip o tar) que el cliente de descubrimiento recupera posteriormente.

Mecanismos de recopilación

El cliente de descubrimiento puede usar uno o más de los mecanismos de recopilación describidos en las siguientes secciones para recopilar datos de las máquinas de destino.

SSH (Linux)

Durante la recopilación de SSH, se produce el siguiente proceso:

  1. Se inicia una sesión de SSH entre la máquina del recopilador y el servidor de destino.
  2. Se crea un directorio temporal en ~/.mcdc-temp/.
  3. La secuencia de comandos de la colección se copia en ese directorio.
  4. Se ejecuta la secuencia de comandos de recopilación.
  5. El archivo de resultados se recupera con SCP.
  6. Se limpia el directorio temporal.

WMI (Windows)

Durante la recopilación de WMI en Windows, se produce el siguiente proceso:

  1. Se inicia una conexión de WMI a la máquina de destino.
  2. Se crea una clave de registro temporal (volátil) en la máquina de destino en HKLM:\SOFTWARE\Google\Collector\data.
  3. La secuencia de comandos de recopilación se copia en la clave de registro.
  4. Se crea un directorio temporal en C:\temp.
  5. La secuencia de comandos de la colección se escribe en el directorio temporal.
  6. Se ejecuta la secuencia de comandos de recopilación.
  7. El resultado de la recopilación se escribe en la clave de registro volátil.
  8. El resultado se copia en la máquina del recopilador.

VMware Guest Tools (Linux y Windows)

Durante la recopilación de VMware para Linux y Windows, se produce el siguiente proceso:

  1. Se crea un directorio temporal con las herramientas para invitados de VMware.
  2. La secuencia de comandos de la colección se copia en ese directorio.
  3. Se ejecuta la secuencia de comandos de recopilación.
  4. El archivo de resultados se recupera con las herramientas para invitados de VMware.
  5. Se limpia el directorio temporal.

Recopilación de datos periódica

El cliente de descubrimiento recopila datos de todos los servidores configurados de forma periódica. Existen dos tipos de colecciones:

  • Recopilación completa: Se ejecuta una vez al día para cada servidor. Esta recopilación ejecuta la secuencia de comandos de recopilación completa que recopila información diversa sobre la VM, como el hardware, el entorno, el software instalado, los procesos en ejecución y mucho más.
  • Recopilación de rendimiento: Se ejecuta cada 10 minutos en cada servidor. Esta recopilación ejecuta la secuencia de comandos de recopilación de rendimiento que recopila datos sobre el uso de la CPU, la memoria, la red y el disco.

Qué datos se recopilan

Las secuencias de comandos de recopilación recopilan datos sobre las VMs de destino para comprender cómo se configuran y qué recursos usan. Esto ayuda a evaluar y planificar su migración a la nube.

En la siguiente lista, se describen los datos que se recopilan:

  • Información del sistema: Es la información básica que es fundamental para determinar el tamaño, los requisitos de rendimiento y las dependencias de la VM en hardware o controladores específicos. Encontrarás la siguiente información:
    • Sistema operativo (versión y lanzamiento)
    • Hardware (CPU, memoria y detalles del BIOS)
    • Configuración de red (interfaces de red, direcciones IP y tablas de enrutamiento)
    • Almacenamiento (unidades de disco, particiones y puntos de activación)
  • Software y servicios instalados: Las secuencias de comandos recopilan una lista de paquetes instalados y servicios en ejecución para comprender la pila de software de la VM y su rol. Encontrarás la siguiente información:
    • Servidores web (Apache, Tomcat, JBoss)
    • Bases de datos (la evidencia de SQL Server se recopila en la secuencia de comandos de Windows)
    • Otras aplicaciones que podrían requerir configuraciones específicas durante la migración
  • Parámetros de configuración de la aplicación: Las secuencias de comandos también recopilan archivos de configuración para servidores web (IIS, Apache, Tomcat, JBoss y WordPress). Esto ayuda a comprender la configuración y las dependencias específicas de estas aplicaciones, lo que es fundamental para garantizar una transición fluida al entorno de nube.
  • Detección de entornos de VMWare y nube: Las secuencias de comandos de Linux y 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 la nube. Si la VM ya está en la nube, las secuencias de comandos recopilan metadatos relevantes, como el ID de la instancia, el tipo de instancia y otros detalles.
  • Métricas de rendimiento: Las secuencias de comandos de recopilación de rendimiento miden el uso de recursos. Esto incluye lo siguiente:
    • CPU
    • Memoria
    • Operaciones de E/S
    • Redes
  • Conexiones de red: Las secuencias de comandos recopilan conexiones abiertas para ayudar a crear un panorama de las diferentes dependencias en 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 recopilación en la máquina de destino depende de parámetros como la cantidad de procesos en ejecución, la cantidad de aplicaciones implementadas, la cantidad de conexiones de red activas y otros.

En Windows, la secuencia de comandos de recopilación se ejecuta con la prioridad más baja disponible a través de la API de Threading. En Linux, se usa un valor de nice de 5 para minimizar la interferencia con las cargas de trabajo de producción y garantizar que tengan una prioridad más alta que la secuencia de comandos de recopilación.

Una colección típica puede tardar entre 5 y 20 segundos de uso intensivo de la CPU de un solo núcleo en una máquina sin carga. Es posible que demore 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 recopilación de servidores específicos durante horas específicas. Esta función se puede usar para evitar la recopilación de servidores que ejecutan cargas de trabajo críticas durante las horas pico.

Consideraciones de seguridad

Autenticación y autorización

Comunicación con máquinas de destino

  • El cliente de descubrimiento usa canales seguros para autenticar y comunicarse con las máquinas de destino. Esto incluye SSH, WMI, herramientas de VMware y conexiones de 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 nombres de usuario y contraseñas, así como en claves. Para obtener una lista completa de los tipos de pares de claves admitidos, consulta Requisitos de los recursos de destino.

Comunicación con Google Cloud

  • Los clientes de descubrimiento registrados se comunican con Google Cloud Migration Center durante su operación normal. La comunicación se realiza a través de una cuenta de servicio con la vinculación de roles roles/migrationcenter.discoveryClient. La cuenta de servicio se crea automáticamente o el usuario la proporciona durante el proceso de registro.
  • La clave privada de la cuenta de servicio se encripta en la máquina cliente de descubrimiento con el mecanismo de encriptación que se describe en la siguiente sección.
  • Toda la comunicación con Google Cloud se autentica con esta cuenta de servicio y se encripta con SSL/TLS.

Encriptación de datos

  • En tránsito: Todos los canales de comunicación del cliente de descubrimiento usan encriptación para proteger los datos en tránsito. Esto incluye la comunicación con las máquinas de destino a través de los diferentes protocolos (SSH/WMI) y la comunicación con Google Cloud a través de HTTPS.
  • En reposo: La PII, la SPII y los secretos del cliente de descubrimiento se encriptan en reposo con el algoritmo AES128_GCM y la DPAPI de Windows para almacenar de forma segura las claves de encriptación.

Detección y prevención de intrusiones

Como el cliente de descubrimiento se usa para conectar y ejecutar secuencias de comandos en muchas VMs de tu organización, es posible que active alertas de EDR o XDR. Esto depende en gran medida de la forma en que están configuradas tus herramientas de seguridad y de las herramientas específicas que usas. Ten en cuenta que puedes crear excepciones para las alertas y los dispositivos específicos.

Registro y compatibilidad

El cliente de descubrimiento recopila registros durante su operación para permitir la depuración y la asistencia. Los registros del cliente de descubrimiento se recopilan con dos mecanismos:

  • Registros locales: Los registros se escriben en un archivo en C:\ProgramData\Google\mcdc\logs. Los archivos de registro se rotan y comprimen.
  • Registros de Cloud: Los clientes registrados también envían los registros a Google Cloud para que el equipo de asistencia al cliente de Google Cloud los use cuando se informen problemas de los clientes.