收集 JumpCloud Directory Insights 日志

支持的平台:

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

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

准备工作

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

  • Google SecOps 实例
  • 已启用 Cloud Storage API 的 GCP 项目
  • 创建和管理 GCS 存储分区及 IAM 政策的权限
  • 具有管理员经理角色的 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 或状态为“已确认”,则设置为 ALLOW;如果成功为 false,则设置为 BLOCK
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 专业人士的解答。