发现客户端数据收集和安全性

本文档旨在解决有关在数据中心安装 Migration Center 资产识别客户端的疑虑和问题。它强调了在高度监管的环境中从客户 IT 资产发现和收集数据时,安全、合规性和性能的重要性。

数据收集的执行方式

发现客户端使用多种方法从目标机器收集数据。收集的数据因方法而异。 在 guest 级别,数据是使用收集脚本收集的;在 hypervisor 级别,数据是使用底层平台 API 收集的。

资产识别客户端服务和进程

发现客户端以名为 mcdc_service.exe 的进程下的名为 GoogleMCDC 的服务运行。

收集脚本

发现客户端使用的所有客机级收集方法都会在目标机器上运行收集脚本。您可以通过以下链接查看用于收集数据的实际脚本:

收集脚本会将结果存储在归档文件(zip 或 tar)中,然后发现客户端会检索该文件。

收集机制

发现客户端可能会使用以下部分中描述的一种或多种收集机制,从目标机器收集数据。

SSH (Linux)

在 SSH 收集期间,会发生以下流程:

  1. 在收集器机器和目标服务器之间启动 SSH 会话。
  2. 系统会在 ~/.mcdc-temp/ 下创建一个临时目录。
  3. 收集脚本会复制到该目录。
  4. 执行收集脚本。
  5. 使用 SCP 提取结果归档。
  6. 临时目录已清理。

WMI (Windows)

默认情况下,资产识别客户端使用远程 WMI 调用从目标 Windows 机器收集数据。或者,如果您启用基于脚本的收集,发现客户端会在目标机器上复制并执行脚本。

在基于脚本的 WMI 收集期间,系统会执行以下流程:

  1. 系统会启动与目标计算机的 WMI 连接。
  2. 在目标机器上,系统会在 HKLM:\SOFTWARE\Google\Collector\data 下创建一个临时(易失性)注册表项。
  3. 收集脚本已复制到注册表项。
  4. 系统会在 C:\temp 下创建一个临时目录。
  5. 收集脚本已写入临时目录。
  6. 执行收集脚本。
  7. 收集结果会写入到易失性注册表项。
  8. 结果会复制到收集器机器。

VMware 访客工具(Linux 和 Windows)

在 Linux 和 Windows 的 VMware 收集过程中,会发生以下情况:

  1. 使用 VMware 客户机工具创建临时目录。
  2. 收集脚本会复制到该目录。
  3. 执行收集脚本。
  4. 使用 VMware 客户机工具提取结果归档。
  5. 临时目录已清理。

定期收集数据

资产识别客户端会定期从所有已配置的服务器收集数据。集合有两种类型:

  • 完整收集:每天为每个服务器运行一次。此收集会执行完整的收集脚本,该脚本会收集虚拟机上的各种信息,例如硬件、环境、已安装的软件、正在运行的进程等。
  • 性能收集:每 10 分钟在每个服务器上运行一次。此集合会执行性能收集脚本,该脚本会收集有关 CPU、内存、网络和磁盘利用率的数据。

收集哪些数据

收集脚本会收集有关目标虚拟机的数据,以了解它们的配置方式和使用的资源。这有助于评估和规划向云端的迁移。

以下列表介绍了收集的数据:

  • 系统信息:对于确定虚拟机的规模、性能要求以及对特定硬件或驱动程序的依赖关系至关重要的基本信息。它包括以下内容:
    • 操作系统(版本和发布版本)
    • 硬件(CPU、内存、BIOS 详细信息)
    • 网络配置(网络接口、IP 地址、路由表)
    • 存储(磁盘驱动器、分区、装载点)
  • 已安装的软件和服务:脚本会收集已安装软件包和正在运行的服务的列表,以了解虚拟机的软件堆栈及其角色。它包括以下内容:
    • Web 服务器(Apache、Tomcat、JBoss)
    • 数据库(在 Windows 脚本中收集 SQL Server 的证据)
    • 在迁移期间可能需要特定配置的其他应用。
  • 应用配置:脚本还会收集 Web 服务器(IIS、Apache、Tomcat、JBoss、WordPress)的配置文件。这有助于了解这些应用的具体设置和依赖项,对于确保顺利过渡到云环境至关重要。
  • VMWare 和云环境检测:Linux 和 Windows 脚本都会尝试检测虚拟机是否已在云环境 (AWS 或 Google Cloud) 或 VCenter 集群中运行。为此,它们会向这些云提供商的元数据服务器发出请求。如果虚拟机已在云端,脚本会收集相关元数据,例如实例 ID、实例类型和其他详细信息。
  • 性能指标:性能收集脚本用于衡量资源利用率。其中包括以下内容:
    • CPU
    • 内存
    • I/O 操作
    • 网络
  • 网络连接:脚本会收集开放连接,以帮助了解对网络资源的不同依赖关系。

对目标机器的性能影响

资源利用率评估

收集脚本在目标机器上的资源利用率取决于多种参数,例如正在运行的进程数、已部署的应用数、活跃的网络连接数等。

在 Windows 上,收集脚本使用通过 Threading API 获得的最低优先级运行。在 Linux 上,nice 值为 5,可最大限度地减少对生产工作负载的干扰,并确保生产工作负载的优先级高于收集脚本。

在未加载的机器上,一次典型的收集可能需要 5-20 秒的高单核 CPU 使用率。如果存在其他工作负载,则可能需要更长时间,因为这些工作负载具有更高的优先级。

缓解策略

资产识别客户端提供了一种机制,可防止在特定时间收集特定服务器的信息。此功能可用于防止在高峰时段从运行关键工作负载的服务器收集数据。

安全注意事项

身份验证和授权

与目标机器通信

  • 发现客户端使用安全渠道与目标机器进行身份验证和通信。这包括 SSH、WMI、VMware 工具和 VCenter 连接。发现客户端使用内置的安全措施作为这些协议的一部分。
  • 在 SSH 中,发现客户端允许使用“用户名-密码”和基于密钥的身份验证。如需查看受支持的密钥对类型的完整列表,请参阅目标资产要求

与 Google Cloud的通信

  • 注册的资产识别客户端在正常运行期间会与 Google Cloud Migration Center 通信。通信通过具有 roles/migrationcenter.discoveryClient 角色绑定的服务账号进行。服务账号可以自动创建,也可以由用户在注册过程中提供。
  • 服务账号私钥在发现客户端机器上使用以下部分中介绍的加密机制进行加密。
  • 与 Google Cloud 的所有通信都使用此服务账号进行身份验证,并使用 SSL/TLS 进行加密。

数据加密

  • 传输中:所有发现客户端通信渠道都使用加密来保护传输中的数据。这包括使用不同协议 (SSH/WMI) 与目标机器进行通信,以及使用 HTTPS 与 Google Cloud 进行通信。
  • 静态:发现客户端 PII、SPII 和 Secret 均使用 AES128_GCM 算法静态加密,并使用 Windows DPAPI 安全地存储加密密钥。

入侵检测和防御

由于发现客户端用于连接和运行组织中许多虚拟机的脚本,因此可能会触发 EDR 或 xDR 提醒。这在很大程度上取决于您的安全工具的配置方式以及您使用的具体工具。请注意,并考虑为特定提醒和设备创建例外情况。

日志记录和支持能力

资产识别客户端会在运行期间收集日志,以便进行调试和提供支持。系统会使用以下两种机制收集发现客户端日志:

  • 本地日志:日志会写入 C:\ProgramData\Google\mcdc\logs 下的文件中。日志文件会轮替并压缩。
  • 云日志:注册的客户端还会将日志发送到 Google Cloud ,以便 Google Cloud 支持团队在客户报告问题时使用。