收集 JumpCloud Directory Insights 日志

支持的平台:

本文档介绍了如何使用 Google Cloud Storage V2 将 JumpCloud Directory Insights 日志注入到 Google Security Operations 中。

JumpCloud 是一个云目录平台,可提供身份管理、单点登录和设备管理功能。目录数据洞见可提供涵盖用户身份验证、管理员操作和系统事件的审核日志和活动日志。解析器会将日志字段映射到统一数据模型 (UDM),并处理用户登录、资源更改和安全操作等事件类型。

准备工作

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

  • Google SecOps 实例
  • 启用了 Cloud Storage API 的 GCP 项目
  • 创建和管理 GCS 存储桶及 IAM 政策的权限
  • 具有 Admin 或 Manager 角色的 JumpCloud 账号以及有效的 API 密钥

创建 Google Cloud Storage 存储桶

  1. 前往 Google Cloud 控制台。
  2. 选择您的项目或创建一个新项目。
  3. 在导航菜单中,依次前往 Cloud Storage > 存储桶。
  4. 点击创建存储分区。
  5. 提供以下配置详细信息:

    设置 值
    为存储桶命名 输入一个全局唯一的名称(例如 jumpcloud-directory-insights-logs)
    位置类型 根据您的需求进行选择(区域级、双区域级、多区域级)
    位置 选择位置(例如 us-central1)
    存储类别 标准(建议用于频繁访问的日志)
    访问权限控制 均匀(推荐)
    保护工具 可选:启用对象版本控制或保留政策
  6. 点击创建。

将 JumpCloud Directory Insights 日志导出到 Google Cloud Storage

JumpCloud Directory Insights 通过 Directory Insights API 公开事件。使用预定脚本或 Cloud Run 函数拉取事件,并将其写入 GCS。

  1. 生成 JumpCloud API 密钥:

    1. 登录 JumpCloud 管理员门户。
    2. 前往您的个人资料图标,然后选择 My API Key(我的 API 密钥)。
    3. 复制 API 密钥。
  2. 创建一个 Cloud Run 函数,该函数可查询 JumpCloud Directory Insights API、检索事件并将事件写入 GCS。

  3. 使用 Cloud Scheduler 和 Pub/Sub 按计划触发函数。

  • 确保导出的文件保留其原始 JSON 格式。
  • 每个文件应包含一条或多条事件记录。

检索 Google SecOps 服务账号

  1. 登录 Google SecOps 控制台。
  2. 前往 SIEM 设置 > Feed。
  3. 点击添加新 Feed。
  4. 点击配置单个 Feed。
  5. 选择 Google Cloud Storage V2 作为来源类型。
  6. 选择 JumpCloud Directory Insights 作为日志类型。
  7. 点击获取服务账号。系统会显示一个唯一的服务账号电子邮件地址,例如:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  8. 复制此电子邮件地址。您将在下一步骤中用到它。

向 Google SecOps 服务账号授予 IAM 权限

  1. 前往 Cloud Storage > 存储桶。
  2. 点击您的存储桶名称。
  3. 前往权限标签页。
  4. 点击授予访问权限。
  5. 提供以下配置详细信息:
    • 添加主账号:粘贴 Google SecOps 服务账号电子邮件地址。
    • 分配角色:选择 Storage Object Viewer。
  6. 点击保存。

在 Google SecOps 中配置 Feed 以注入 JumpCloud Directory Insights 日志

  1. 前往 SIEM 设置 > Feed。
  2. 点击添加新 Feed。
  3. 点击配置单个 Feed。
  4. 在 Feed 名称字段中,输入 Feed 的名称(例如 JumpCloud Directory Insights Logs)。
  5. 选择 Google Cloud Storage V2 作为来源类型。
  6. 选择 JumpCloud Directory Insights 作为日志类型。
  7. 点击下一步。
  8. 为以下输入参数指定值:

    字段 值
    存储桶 URI gs://jumpcloud-directory-insights-logs/jumpcloud/
    来源删除选项 根据您的偏好选择删除选项
    文件存在时间上限(天) 默认值为 180 天
    资源命名空间 资源命名空间
    注入标签 要应用于此 Feed 中事件的标签
    • 将 jumpcloud-directory-insights-logs 替换为您的实际 GCS 存储桶名称。
    • 请务必在 URI 末尾添加尾随斜杠 (/)。
  9. 点击下一步。

  10. 在最终确定界面中查看新的 Feed 配置,然后点击提交。

UDM 映射表

日志字段 UDM 映射 逻辑
data.profile_list.payload_content.payload_type、data.profile_list.payload_content.payload_identifier、data.profile_list.payload_content.payload_uuid、data.profile_list.payload_content.payload_organization、data.profile_list.payload_content.payload_display_name、data.profile_list.payload_content.payload_description 关于 已与 payloadContent 中的属性标签合并
data.association.op、data.association.action_source、data.geoip.region_code、data.service、data.event_type、data.@version、data.application.version、data.application.publisher、data.application.uninstall_string、data.changes.0.field、data.changes.0.from、data.changes.0.to、data.available_os_updates.allows_install_later additional.fields 与相应标签合并
extensions.auth.type 当 event_type 为 USER_LOGIN 时,设置为“MACHINE”
data.timestamp metadata.event_timestamp 使用日期匹配 ISO8601、RFC 3339、yyyy-MM-ddTHH:mm:ss.SSSSSSZ 进行转换
data.message、data.client_ip、data.initiated_by.username、data.system.hostname metadata.event_type 如果消息与“logged in”匹配且目标不为空,则设置为 USER_LOGIN;否则,如果存在 IP 地址和用户 ID,则设置为 USER_UNCATEGORIZED;否则,如果存在主机名或 IP 地址,则设置为 STATUS_UPDATE;否则,如果存在用户 ID,则设置为 USER_UNCATEGORIZED;否则,设置为 GENERIC_EVENT
data.id metadata.product_log_id 直接复制值
data.@version, data.application.version metadata.product_version 设置为 data.@version,然后替换为 data.application.version
data.application.name principal.application 直接复制值
data.mdm_type principal.asset.hardware 与制造商合并,设置为 data.mdm_type
data.command_uuid principal.asset_id 串联为“commandUuid:” + data.command_uuid
data.system.hostname principal.hostname 直接复制值
data.client_ip principal.ip 从 data.client_ip 合并
data.geoip.country_code principal.location.country_or_region 直接复制值
data.geoip.region_code principal.location.name 直接复制值
data.geoip.latitude principal.location.region_latitude 先转换为字符串,再转换为浮点数
data.geoip.longitude principal.location.region_longitude 先转换为字符串,再转换为浮点数
data.geoip.region_name principal.location.state 直接复制值
data.application.path, data.process_name principal.process.file.full_path 设置为 data.application.path,然后替换为 data.process_name
data.association.connection.from.name、data.mdm_device_manager_id、data.request_type principal.resource.attribute.labels 与 connection_from_name、mdm_device_manager_id、request_type 的标签合并
data.system.id、data.resource.id、data.mdm_device_id principal.resource.id 设置为 data.system.id,然后替换为 data.resource.id,再替换为 data.mdm_device_id
data.resource.username principal.resource.name 直接复制值
data.association.connection.from.object_id principal.resource.product_object_id 直接复制值
data.association.connection.from.type principal.resource.type 直接复制值
data.initiated_by.email principal.user.email_addresses 如果电子邮件地址与 ^.+@.+$ 匹配,则合并
data.system.displayName principal.user.user_display_name 直接复制值
data.initiated_by.username, data.admin_info.name principal.user.userid 设置为 data.initiated_by.username,然后替换为 data.admin_info.name,再替换为 data.initiated_by.username
data.success、data.status sec_result.action 如果成功为 true 或状态为“已确认”,则设置为“允许”;如果成功为 false,则设置为“阻止”
data.status、data.success sec_result.action_details 如果不为空,则设置为状态;否则,设置为成功
data.success、data.status、data.security_info.management_status.is_activation_lock_manageable、data.security_info.management_status.is_user_enrollment、data.security_info.management_status.enrolled_via_dep、data.organization、data.windows_meta.logon_type、data.security_info.management_status.user_approved_enrollment sec_result.detection_fields 与 is_activation_lock_manageable、is_user_enrollment、enrolled_via_dep、组织、logon_type、user_approved_enrollment 的标签合并
data.query_responses.device_name target.hostname 直接复制值
data.query_responses.wifi_mac target.mac 从 data.query_responses.wifi_mac 合并
data.query_responses.model_name target.platform 如果匹配 (?i)mac,则设置为“MAC”
data.query_responses.os_version target.platform_version 直接复制值
data.query_responses.available_device_capacity, data.query_responses.device_capacity target.resource.attribute.labels 与 available_device_capacity、device_capacity 的标签合并
data.association.connection.to.name target.resource.name 直接复制值
data.association.connection.to.object_id target.resource.product_object_id 直接复制值
data.association.connection.to.type target.resource.type 直接复制值
data.profile_list.payload_organization target.user.department 从 profile_payload_organization 合并
metadata.vendor_name 设置为“JUMPCLOUD_DIRECTORY_INSIGHTS”
metadata.product_name 设置为“JUMPCLOUD_DIRECTORY_INSIGHTS”
data.alert_id event.idm.read_only_udm.metadata.product_log_id 从更新日志映射
data.alert_title event.idm.read_only_udm.security_result.summary 从更新日志映射
data.category event.idm.read_only_udm.security_result.category_details 从更新日志映射
data.description event.idm.read_only_udm.security_result.description 从更新日志映射
data.priority event.idm.read_only_udm.security_result.priority 从更新日志映射
data.rule_id event.idm.read_only_udm.security_result.rule_id 从更新日志映射
data.event_description event.idm.read_only_udm.metadata.description 从更新日志映射
data.di_event.event_type event.idm.read_only_udm.metadata.product_event_type 从更新日志映射
data.di_event.initiated_by.email event.idm.read_only_udm.principal.user.email_addresses 从更新日志映射
data.di_event.initiated_by.id event.idm.read_only_udm.principal.user.product_object_id 从更新日志映射
data.di_event.client_ip event.idm.read_only_udm.principal.ip 从更新日志映射
data.di_event.association.connection.from.name event.idm.read_only_udm.target.group.group_display_name 从更新日志映射
data.di_event.association.connection.to.name event.idm.read_only_udm.about.user.userid 从更新日志映射
data.di_event.association.connection.to.object_id event.idm.read_only_udm.about.user.product_object_id 从更新日志映射
data.di_event.success event.idm.read_only_udm.security_result.action 从更新日志映射
data.di_event.service event.idm.read_only_udm.target.application 从更新日志映射
data.di_event.geoip.country_code event.idm.read_only_udm.principal.location.country_or_region 从更新日志映射
data.organization_name event.idm.read_only_udm.principal.user.company_name 从更新日志映射
data.di_event.@version event.idm.read_only_udm.metadata.product_version 从更新日志映射
data.source_url event.idm.read_only_udm.principal.url 从更新日志映射
data.di_event.initiated_by.source event.idm.read_only_udm.principal.hostname 从更新日志映射
data.source_name event.idm.read_only_udm.principal.user.userid 从更新日志映射
data.di_event.geoip.latitude event.idm.read_only_udm.principal.location.region_latitude 从更新日志映射
data.di_event.geoip.longitude event.idm.read_only_udm.principal.location.region_longitude 从更新日志映射
data.di_event.geoip.region_name event.idm.read_only_udm.principal.location.state 从更新日志映射
data.di_event.organization event.idm.read_only_udm.security_result.detection_fields 从更新日志映射
association_op", "action_source", and "sso_token_success additional.fields 从更新日志映射
connection_from_type principal.resource.resource_type 从更新日志映射
connection_from_object_id principal.resource.product_object_id 从更新日志映射
connection_to_name target.resource.name 从更新日志映射
connection_to_type target.resource.resource_type 从更新日志映射
connection_to_object_id target.resource.product_object_id 从更新日志映射

更新日志

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

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