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

本文档介绍了在数据中心安装 Migration Center 资产识别客户端时可能遇到的问题和疑虑。该标准强调,在高度受监管的环境中从客户 IT 资产发现和收集数据时,安全性、合规性和性能至关重要。

如何执行数据收集

资产识别客户端使用多种方法从目标计算机收集数据。收集的数据因方法而异。在客机级别,系统使用收集脚本收集数据;在 Hypervisor 级别,系统使用底层平台 API 收集数据。

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

发现客户端作为名为 GoogleMCDC 的服务在名为 mcdc_service.exe 的进程中运行。

收集脚本

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

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

收集机制

资产识别客户端可能会使用以下部分中所述的一个或多个收集机制从目标机器收集数据。

SSH(Linux)

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

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

WMI (Windows)

在 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 下的文件。系统会轮替和压缩日志文件。
  • Cloud 日志:已注册的客户端还会将日志发送到 Google Cloud,以便 Google Cloud 支持团队在客户报告问题时使用这些日志。