收集 ChromeOS XDR 日志

解析器版本:4.0

支持的平台:

本文档介绍了如何使用 Google Cloud Pub/Sub 将 ChromeOS XDR 日志注入到 Google Security Operations。

ChromeOS XDR 会将受管理的 ChromeOS 设备中的操作系统级安全遥测数据转发到您拥有的 Google Cloud Pub/Sub 主题。此遥测数据包括登录和退出活动、设备启动状态、进程执行、网络流和敏感文件修改。您可以在 Google 管理控制台中将 ChromeOS XDR 提供方配置指向您的 Pub/Sub 主题,然后 Pub/Sub 推送订阅会将事件传递到您的 Google SecOps Feed 端点。

准备工作

请确保满足以下前提条件:

  • Google SecOps 实例。
  • 与您的 Google SecOps 实例绑定的 Google Cloud 项目。Pub/Sub 主题和推送订阅必须位于此项目中。
  • 对相应 Google Cloud 项目中的 Identity and Access Management (IAM) 和 Pub/Sub 的特权访问权限。
  • 具有超级用户权限的 Google Workspace 管理员账号。
  • 已注册到您的 Google Workspace 组织的受管理的 ChromeOS 设备。
  • 包含您要从中收集遥测数据的 ChromeOS 设备的目标组织部门 (OU)
  • 在 Google 管理控制台中访问 Google Cloud Pub/Sub XDR 提供方配置。

将 Google Cloud 项目绑定到您的 Google SecOps 实例

在创建 Pub/Sub 推送 Feed 之前,请将托管主题的 Google Cloud 项目绑定到您的 Google SecOps 实例。绑定可让推送订阅通过服务账号进行身份验证。

检查项目是否已绑定

  1. 在 Google SecOps 实例中,前往 SIEM 设置 > 项目。
  2. 检查您的 Google Cloud 项目是否已列出。
  3. 如果列出了该项目,则表示该项目已绑定。继续前往下一部分。

绑定项目

  1. 前往 SIEM 设置 > 项目。
  2. 点击添加项目。
  3. 在项目 ID 字段中,输入您的 Google Cloud 项目 ID。
  4. 点击 Add(添加)。
  5. 等待绑定完成,然后刷新页面,验证项目是否显示为有效状态。

验证 Chronicle API 是否已启用

  1. 前往 Google Cloud 控制台的“API 和服务”库。
  2. 选择绑定项目。
  3. 在搜索框中,输入 Chronicle。
  4. 点击 Chronicle API。
  5. 如果该 API 尚未启用,请点击启用。

创建 Pub/Sub 主题

创建用于接收 ChromeOS XDR 事件的主题。主题属于您,是您稍后在 Google 管理控制台中输入的值。

使用 Google Cloud 控制台

  1. 前往 Pub/Sub 主题。
  2. 选择绑定项目。
  3. 点击创建主题。
  4. 提供以下配置详细信息:
    • 主题 ID:输入一个描述性名称(例如 chromeos-xdr-secops)
    • 添加默认订阅:清除此复选框
  5. 点击创建。
  6. 复制完整的主题路径。其格式如下所示:

    projects/<PROJECT_ID>/topics/<TOPIC_ID>
    

使用 gcloud 命令行工具

  • 使用以下命令:

    gcloud pubsub topics create chromeos-xdr-secops \
            --project=<PROJECT_ID>
    
    • 将 <PROJECT_ID> 替换为绑定 Google Cloud 项目的 ID。

向 ChromeOS XDR 发布者授予发布权限

ChromeOS XDR 使用 Google 代管式服务账号发布事件。在您授予访问权限之前,此服务账号无法访问您的主题,并且 Google 管理控制台的测试连接检查会失败。

使用 Google Cloud 控制台

  1. 前往 Pub/Sub 主题。
  2. 点击您创建的主题。
  3. 打开权限标签页,然后点击添加主账号。
  4. 提供以下配置详细信息:
    • 新的主账号:输入 cloud-pub-sub-publisher@chromeos-xdr.iam.gserviceaccount.com
    • 角色:选择 Pub/Sub > Pub/Sub Publisher
  5. 点击保存。

使用 gcloud 命令行工具

  • 使用以下命令:

    gcloud pubsub topics add-iam-policy-binding chromeos-xdr-secops \
            --member="serviceAccount:cloud-pub-sub-publisher@chromeos-xdr.iam.gserviceaccount.com" \
            --role="roles/pubsub.publisher" \
            --project=<PROJECT_ID>
    

在 Google SecOps 中创建 Pub/Sub 推送 Feed

创建 Feed

  1. 在您的 Google SecOps 实例中,依次前往 SIEM 设置 > Feed。
  2. 点击添加新 Feed。
  3. 在下一页上,点击配置单个 Feed。
  4. 在 Feed 名称字段中,输入 Feed 的名称(例如 ChromeOS XDR events)。
  5. 选择 Google Cloud Pub/Sub 推送作为来源类型。
  6. 选择 ChromeOS XDR 作为日志类型。
  7. 点击下一步。
  8. 为以下输入参数指定值:
    • 拆分分隔符:将此字段留空。ChromeOS XDR 会针对每条 Pub/Sub 消息发布一个事件。
    • 资源命名空间:资源命名空间
    • 注入标签:要应用于此 Feed 中事件的标签
  9. 点击下一步。
  10. 在“Finalize”界面中检查 Feed 配置,然后点击提交。

获取推送端点网址

  1. 在 Feed 详情页面上,验证 Feed 状态是否为有效,以及启用 Feed 开关是否处于开启状态。
  2. 在 Endpoint Information(端点信息)字段中,复制推送端点网址。格式为:

    https://<REGION>-chronicle.googleapis.com/v1alpha/projects/<PROJECT_NUMBER>/locations/<REGION>/instances/<INSTANCE_ID>/feeds/<FEED_ID>:importPushLogs
    
  3. 保存此网址以用于推送订阅。

为 Pub/Sub 推送创建服务账号

创建服务账号

  1. 前往 Google Cloud 控制台的服务账号页面。
  2. 选择绑定项目。
  3. 点击 + 创建服务账号。
  4. 提供以下配置详细信息:
    • 服务账号名称:输入一个描述性名称(例如 chromeos-xdr-push)
    • 服务账号说明:输入 Pub/Sub Push to Google SecOps for ChromeOS XDR
  5. 点击创建并继续。
  6. 在向此服务账号授予对项目的访问权限部分中,将角色字段留空。
  7. 依次点击继续 > 完成。
  8. 复制服务账号电子邮件地址。格式为:

    chromeos-xdr-push@<PROJECT_ID>.iam.gserviceaccount.com
    

使用 gcloud 命令行工具

  • 使用以下命令:

    gcloud iam service-accounts create chromeos-xdr-push \
            --display-name="ChromeOS XDR Push" \
            --description="Pub/Sub Push to Google SecOps for ChromeOS XDR" \
            --project=<PROJECT_ID>
    

服务账号权限

此服务账号不需要额外的 IAM 角色。您之前配置的项目绑定可启用服务账号身份验证,推送订阅使用服务账号的 OIDC 令牌向 Google SecOps Feed 端点进行身份验证。您可以在推送订阅中启用身份验证时选择此服务账号。

创建 Pub/Sub 推送订阅

使用 Google Cloud 控制台

  1. 前往 Pub/Sub 订阅。
  2. 点击创建订阅。
  3. 提供以下配置详细信息:

    设置 值
    订阅 ID 输入一个描述性名称(例如 secops-chromeos-xdr)
    选择 Cloud Pub/Sub 主题 选择您创建的主题
    配送类型 推送
    端点网址 粘贴来自 Feed 详情页面的推送端点网址
    启用身份验证 已选择
    服务账号 选择您创建的服务账号
    受众群体 留空
    启用载荷解封 已清除
    写入元数据 已清除
    确认截止期限 600 秒
    失效期限 永不过期
  4. 点击创建。

使用 gcloud 命令行工具

  • 使用以下命令:

    gcloud pubsub subscriptions create secops-chromeos-xdr \
            --topic=chromeos-xdr-secops \
            --push-endpoint=<PUSH_ENDPOINT_URL> \
            --push-auth-service-account=chromeos-xdr-push@<PROJECT_ID>.iam.gserviceaccount.com \
            --ack-deadline=600 \
            --expiration-period=never \
            --project=<PROJECT_ID>
    

    替换以下内容:

    • <PUSH_ENDPOINT_URL>:推送端点网址(来自 Feed 详情页面)
    • <PROJECT_ID>:绑定 Google Cloud 项目的 ID

验证订阅是否已创建

  • 使用以下命令:

    gcloud pubsub subscriptions describe secops-chromeos-xdr \
            --project=<PROJECT_ID>
    

    验证输出是否显示以下内容:

    • pushConfig.pushEndpoint:Feed 端点网址
    • pushConfig.oidcToken.serviceAccountEmail:您的服务账号电子邮件地址
    • ackDeadlineSeconds:600

添加 Google Cloud Pub/Sub XDR 提供程序配置

将 ChromeOS XDR 提供程序配置指向您的 Pub/Sub 主题,以便受管理的 ChromeOS 设备将其遥测数据发布到该主题。

  1. 使用超级用户账号登录 Google 管理控制台。

    如果您使用的不是超级用户账号,则无法完成这些步骤。

  2. 依次点击菜单 > 设备 > Chrome > 连接器。

  3. (可选)如果您是首次配置 Chrome 企业版接口设置,请按照提示启用 Chrome 企业版接口。

  4. 点击顶部的 + 添加新提供商的配置。

  5. 找到 Google Cloud Pub/Sub XDR,然后点击设置。

    系统会打开 Google Cloud Pub/Sub XDR 配置对话框。

  6. 输入以下配置详细信息:

    • 配置名称:输入一个描述性名称。例如 ChromeOS XDR to Google SecOps。
    • 主题完整路径:输入您创建的主题的完整路径,格式为 projects/<PROJECT_ID>/topics/<TOPIC_ID>。
  7. 点击测试连接以验证配置详细信息。

    如果验证失败,请验证以下内容:

    • 主题完整路径正确,并且主题存在于绑定的 Google Cloud 项目中
    • cloud-pub-sub-publisher@chromeos-xdr.iam.gserviceaccount.com 拥有相应主题的 Pub/Sub Publisher 角色
    • 项目已启用 Pub/Sub API
  8. 在此配置允许接收的事件下,展开 XDR 事件,然后选择启用 XDR 事件。

  9. 点击 Save configuration(保存配置)。

系统会为整个组织添加配置。如需为要监控的 ChromeOS 设备启用此功能,请选择包含这些设备的组织部门,然后选中相应配置旁边的复选框。

启用 ChromeOS XDR 报告功能

在设备设置中启用 ChromeOS XDR 报告,即可开始从受管 ChromeOS 设备收集操作系统级安全遥测数据。

  1. 在 Google 管理控制台中,依次点击菜单 > 设备 > Chrome > 设置 > 设备设置。
  2. 如要将设置应用于所有 ChromeOS 设备,请将顶级组织部门保持为已选中状态。否则,请选择包含您要收集遥测数据的设备的下级组织部门。
  3. 前往用户和设备报告。
  4. 在报告扩展检测和响应 (XDR) 事件旁边,选择报告扩展检测和响应 (XDR) 事件的相关信息。
  5. 点击保存。

    针对组织部门点击覆盖。如果之后要恢复继承的值,请点击继承。

  6. 对于包含您要收集遥测数据的 ChromeOS 设备的任何其他组织部门,请重复执行上述步骤。

验证数据流

如需验证 ChromeOS XDR 日志是否已注入到 Google SecOps 中,请执行以下操作:

  1. 打开 Google SecOps 实例。
  2. 依次前往菜单 > 搜索。
  3. 运行以下搜索查询,查找 ChromeOS XDR 事件:

    metadata.log_type = "CHROMEOS_XDR"
    
  4. 配置完成后,您应该会在几分钟内看到事件。如果未显示任何活动,请执行以下操作:

    • 在 Google Cloud 控制台中,打开相应主题,然后查看指标标签页中的已发布消息。没有已发布的消息意味着管理控制台端未进行传送。
    • 在 Google Cloud 控制台中,打开相应订阅,并检查其推送请求数和错误数指标。推送错误表示端点网址、服务账号或项目绑定有误。
    • 验证是否已在 Google 管理控制台中为正确的组织部门启用 ChromeOS XDR 报告
    • 验证提供方配置是否已应用于包含设备的组织部门
    • 验证目标 ChromeOS 设备是否已在贵组织中注册并受管理
    • 验证推送订阅上是否已清除启用载荷解封和写入元数据

支持的日志类型

ChromeOS XDR 报告会将以下 ChromeOS 设备安全遥测数据转发给 Google SecOps:

事件类别 说明
登录和退出 ChromeOS 设备上的用户登录、退出和身份验证因素活动
设备启动状态 设备启动状态、固件安全启动状态和内核版本报告
流程执行 进程和父进程执行,包括命令行和映像详细信息
网络流 网络连接,包括本地和远程端点、端口、协议和传输的字节数
敏感文件修改 敏感文件的创建和修改,包括路径和哈希详细信息

UDM 映射表

下表显示了 ChromeOS XDR 日志字段与 Google SecOps Unified Data Model (UDM) 字段的映射关系:

日志字段 UDM 映射 逻辑
application_protocol_label additional.fields 已合并
attributesBefore_canonicalGid_label additional.fields 已合并
attributesBefore_canonicalUid_label additional.fields 已合并
attributesBefore_mode_label additional.fields 已合并
authFactor_label additional.fields 已合并
bindAddr_label additional.fields 已合并
bindPort_label additional.fields 已合并
communityIdV1_label additional.fields 已合并
fileAfter_inodeDeviceId_label additional.fields 已合并
fileAfter_inode_label additional.fields 已合并
fileAfter_mntNs_label additional.fields 已合并
fileAfter_mode_label additional.fields 已合并
firmwareSecureBoot_label additional.fields 已合并
image_canonicalGid_label additional.fields 已合并
image_canonicalUid_label additional.fields 已合并
image_mode_label additional.fields 已合并
inodeDeviceId_label additional.fields 已合并
inode_label additional.fields 已合并
inode_process_label additional.fields 已合并
linuxKernelVersion_label additional.fields 已合并
local_timezone_label additional.fields 已合并
metaFirstAppearance_label additional.fields 已合并
modifyType_label additional.fields 已合并
networkFlow_direction_label additional.fields 已合并
process_image_canonicalGid_label additional.fields 已合并
process_image_canonicalUid_label additional.fields 已合并
process_image_mode_label additional.fields 已合并
process_inodeDeviceId_label additional.fields 已合并
process_metaFirstAppearance_label additional.fields 已合并
process_relStartTimeS_label additional.fields 已合并
rel_start_time_label additional.fields 已合并
sensitiveFileType_label additional.fields 已合并
socketType_label additional.fields 已合并
spawnProcess_canonicalUid_label additional.fields 已合并
spawnProcess_image_inodeDeviceId_label additional.fields 已合并
spawnProcess_image_inode_label additional.fields 已合并
spawnProcess_image_mode_label additional.fields 已合并
spawnProcess_metaFirstAppearance_label additional.fields 已合并
spawnProcess_relStartTimeS_label additional.fields 已合并
has_principal metadata.event_type 已映射:true → NETWORK_CONNECTION、true → STATUS_UPDATE
has_user metadata.event_type 已映射:true → USER_UNCATEGORIZED
schemaVersion metadata.product_version 直接映射
app_protocol_output network.application_protocol 直接映射
ip_protocol_out network.ip_protocol 已重命名/已映射
networkFlow.rxBytes network.received_bytes 已重命名/已映射
networkFlow.txBytes network.sent_bytes 已重命名/已映射
deviceName principal.asset.asset_id 直接映射
localIp principal.asset.ip 已合并
sensitiveModify.attributesBefore.pathname principal.file.full_path 直接映射
localIp principal.ip 已合并
networkFlow.localIp principal.ip 已合并
osVersion principal.platform_version 直接映射
networkFlow.localPort principal.port 已重命名/已映射
spawnProcess.commandline principal.process.parent_process.command_line 直接映射
spawnProcess.image.pathname principal.process.parent_process.file.full_path 直接映射
spawnProcess.image.sha256 principal.process.parent_process.file.sha256 直接映射
spawnProcess.canonicalPid principal.process.parent_process.pid 直接映射
spawnProcess.processUuid principal.process.product_specific_process_id 直接映射
devicePermanentId principal.resource.product_object_id 直接映射
event_log security_result.summary 直接映射
sensitiveModify.fileAfter.pathname target.file.full_path 直接映射
sensitiveModify.fileAfter.sha256 target.file.sha256 直接映射
networkFlow.remoteHostName target.hostname 直接映射
networkFlow.remoteIp target.ip 已合并
networkFlow.remotePort target.port 已重命名/已映射
process.image.pathname target.process.file.full_path 直接映射
process.image.sha256 target.process.file.sha256 直接映射
parentProcess.commandline target.process.parent_process.command_line 直接映射
process.commandline target.process.parent_process.command_line 直接映射
parentProcess.image.pathname target.process.parent_process.file.full_path 直接映射
parentProcess.image.sha256 target.process.parent_process.file.sha256 直接映射
parentProcess.canonicalPid target.process.parent_process.pid 直接映射
parentProcess.processUuid target.process.parent_process.product_specific_process_id 直接映射
process.canonicalPid target.process.pid 直接映射
process.processUuid target.process.product_specific_process_id 直接映射
deviceUser target.user.email_addresses 已合并
不适用 metadata.event_type 常量:NETWORK_CONNECTION
不适用 metadata.product_name 常量:CHROMEOS XDR
不适用 metadata.vendor_name 常量:CHROMEOS XDR

更新日志

查看相应解析器的更新日志

需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。