收集 JAMF Security Cloud 日志

支持:

本文档介绍了如何使用 Google Cloud Storage V2 将 JAMF Security Cloud 日志注入 Google Security Operations。

JAMF Security Cloud 是适用于 Apple 设备的移动威胁防御和端点安全平台。它会生成威胁检测、合规性和设备安全事件日志,涵盖 DNS 层保护、钓鱼式攻击防护、内容过滤和设备风险评估。

准备工作

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

  • Google SecOps 实例
  • 启用了 Cloud Storage API 的 GCP 项目
  • 创建和管理 GCS 存储分区和 IAM 政策的权限
  • 对 JAMF Security Cloud 门户(Jamf Threat Defense 或 Jamf Protect 控制台)的特权访问权限

创建 Google Cloud Storage 存储桶

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

    设置
    指定存储桶的名称 输入全局唯一的名称(例如 jamf-security-cloud-logs
    位置类型 根据您的需求进行选择(区域、双区域、多区域)
    位置 选择位置(例如 us-central1
    存储类别 标准(建议用于经常访问的日志)
    访问权限控制 统一(推荐)
    保护工具 可选:启用对象版本控制或保留政策
  6. 点击创建

将 JAMF Security Cloud 日志导出到 Google Cloud Storage

JAMF Security Cloud 支持将事件数据流式传输到云存储目标位置。在 JAMF Security Cloud 门户中配置数据导出。

  1. 登录 JAMF Security Cloud 门户。
  2. 前往集成 > 数据流
  3. 点击添加数据流
  4. 选择受支持的目标类型。JAMF Data Streams 原生支持 AWS S3 和通用 HTTP 端点。如需将日志传送到 Google Cloud Storage,您可以使用带有写入 GCS 的 Cloud Run 函数的通用 HTTP 端点,也可以配置与 S3 兼容的中间目标位置。
  5. 提供以下配置详细信息:
    • 数据流名称:输入描述性名称(例如 Chronicle GCS Export
    • GCS 存储桶名称:输入存储桶名称(例如 jamf-security-cloud-logs
    • 路径前缀:输入文件夹前缀(例如 jamf-security-cloud/
    • 输出格式:选择 JSON(建议用于 Chronicle 注入)
  6. 上传或粘贴具有对 GCS 存储桶的写入权限的 GCP 服务帐号凭据 JSON 密钥。
  7. 选择要导出的事件类型:
    • 威胁事件(网络威胁、钓鱼式攻击、恶意软件)
    • 设备合规性事件
    • DNS 安全事件
    • 应用风险事件
  8. 点击保存 (或创建 )。
  9. 验证日志文件是否开始出现在指定前缀下的 GCS 存储桶中。
  • 确保用于导出的 GCP 服务帐号对目标存储桶具有 Storage Object Creator 角色。
  • 日志文件以 JSON 格式写入,每个文件包含一个或多个事件记录。

检索 Google SecOps 服务帐号

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

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

  • 每个 Google SecOps 实例都有一个唯一的服务帐号。请勿使用其他文档或示例中的服务账号。

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

  1. 前往 Cloud Storage > 存储分区
  2. 点击您的存储桶名称。
  3. 前往权限 标签页。
  4. 点击授予访问权限
  5. 提供以下配置详细信息:
    • 添加主账号:粘贴 Google SecOps 服务帐号电子邮件地址
    • 分配角色:选择 Storage Object Viewer
  6. 点击保存
  • 如果您打算使用删除选项(删除已传输的文件),请授予 Storage Object Admin 角色,而不是 Storage Object Viewer。

在 Google SecOps 中配置 Feed 以注入 JAMF Security Cloud 日志

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

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

  10. 最终确定 屏幕中查看新的 Feed 配置,然后点击提交

UDM 映射表

日志字段 UDM 映射 逻辑
event_data.account.parentId, event_data.action, event_data.device.os, event_data.dns.recordType, event_data.riskDetails.appRiskIndexThreshold, event_data.riskDetails.deviceRiskIndex, event_data.routeName, event_data.signatureId.id, event_data.signatureId.name, event_data.threat.result, event_data.tld, customer.parentId, customer.resellerId, device.deviceId, device.deviceName, device.carrier.carrierName, device.carrier.isoCountryCode, device.carrier.mcc, device.carrier.mnc, device.hw.deviceModel, device.hw.hwPlatform, device.hw.imei, device.hw.platform, device.lastNetworkTrafficUtcMs, device.lastUpdatedUtcMs, device.location.isoCountryCode, device.mdm.lastMdmCheckInUtcMs, device.mdm.mdmId, device.network.ssid, device.os.osVersion, device.state.activated, device.state.deploymentState, device.state.vpnActive, device.state.wifiActive, device.user.id, device.user.name, device.wanderaApp.version, trigger.triggerTimeUtcMs, trigger.triggerType, app.appId.packageName, app.appId.appName, app.appId.appVersion, app.category.label, app.category.system, app.installation.installationTimeUtcMs, app.installation.installedBy, app.developer, app.threats, app.permissions, event_data.accessPoint, event_data.alertId, event_data.event_dataType, event_data.software.softwareId, event_data.software.softwareVersion, event_data.software.softwareName, event_data.cve.id, event_data.cve.baseScore, event_data.cve.exploitAvailable, event_data.cve.attribution, event_data.threat.types, event_data.app.id, event_data.app.name, event_data.app.version additional.fields 合并为具有特定键和值的标签(来自来源)
event_data.dns.ttl dns_answers.ttl 转换为 uinteger
event_data.dns.category dns_questions.name 直接复制值
event_data.receiptTime metadata.collected_timestamp 直接复制值
event_data_event_dataType_description, event_data.cve.description metadata.description 如果 event_data_event_dataType_description 不为空,则使用该值,否则使用 event_data.cve.description
has_principal, has_user metadata.event_type 如果 has_principal 为 true,则设置为 STATUS_UPDATE;如果 has_user 为 true,则设置为 USER_UNCATEGORIZED;否则设置为 GENERIC_EVENT
event_data.md1.product, md1.product metadata.product_event_type 如果 event_data.md1.product 不为空,则使用该值,否则使用 md1.product
event_data.device.externalId, event_data.externalId metadata.product_log_id 如果 event_data.device.externalId 不为空,则使用该值,否则使用 event_data.externalId
event_data.md1.schemaVersion, schemaVersion metadata.product_version 如果 event_data.md1.schemaVersion 不为空,则使用该值,否则使用 schemaVersion
dns_answers network.dns.answers 从 dns_answers 合并
dns_questions network.dns.questions 从 dns_questions 合并
event_data.dns.responseStatus network.dns.response 如果为 NOERROR,则设置为 true,否则设置为 false
event_data.domain principal.administrative_domain 直接复制值
event_data.application principal.application 直接复制值
event_data.hostName, event_data.device.userDeviceName principal.asset.hostname 如果 event_data.hostName 不为空,则使用该值,否则使用 event_data.device.userDeviceName
event_data.source.ip principal.asset.ip 直接复制值
event_data.hostName, event_data.device.userDeviceName principal.hostname 如果 event_data.hostName 不为空,则使用该值,否则使用 event_data.device.userDeviceName
event_data.source.ip principal.ip 直接复制值
event_data.source.port principal.port 转换为整数
event_data_event_dataType_id principal.process.pid 直接复制值
event_data.event_dataUrl, event_data.cve.consoleUrl principal.url 如果 event_data.event_dataUrl 不为空,则使用该值,否则使用 event_data.cve.consoleUrl
device.user.email principal.user.email_addresses 如果与电子邮件正则表达式匹配,则合并
event_data.account.name, event_data.user.userName principal.user.user_display_name 如果 event_data.account.name 不为空,则使用该值,否则使用 event_data.user.userName
event_data.account.customerId, customer.customerId, event_data.customerId, device.user.email principal.user.userid 如果 event_data.account.customerId 不为空,则使用该值,否则如果 customer.customerId 不为空,则使用该值,否则如果 event_data.customerId 不为空,则使用该值,否则如果 device.user.email 不是电子邮件地址,则使用该值
event_data.blocked security_result.action 如果为 true,则设置为 BLOCK;如果为 false,则设置为 ALLOW
event_data_event_dataType_name security_result.description 直接复制值
app.threats, app.permissions, event_data.cve.id, event_data.cve.baseScore, event_data.cve.exploitAvailable, event_data.cve.attribution security_result.detection_fields 合并为标签(来自来源)
event_data.severity security_result.severity 如果为 2,则设置为 INFORMATIONAL;如果为 4,则设置为 LOW;如果为 6,则设置为 MEDIUM;如果为 8,则设置为 HIGH;如果为 10,则设置为 CRITICAL
event_data.blockReason security_result.summary 直接复制值
event_data.cve.cveDetailUrl security_result.url_back_to_product 直接复制值
event_data.device.deviceId target.asset.asset_id 与“CS:”前缀连接
event_data.destination.ips, event_data.destinationIp, event_data.destination.ip, device.carrier.ipAddress, device.network.assignedIp, device.network.publicIp target.asset.ip 从来源合并
app_id_md5 target.file.md5 直接复制值
app_id_sha1 target.file.sha1 直接复制值
app_id_sha256 target.file.sha256 直接复制值
event_data.destination.name target.hostname 直接复制值
event_data.destination.ips, event_data.destinationIp, event_data.destination.ip, device.carrier.ipAddress, device.network.assignedIp, device.network.publicIp target.ip 从来源合并
device.location.countryName target.location.country_or_region 直接复制值
device.hw.wifiMacAddress, event_data.accessPointBssid, device.network.bssid target.mac 从来源合并
event_data.device.osType, event_data_device_os_osType, device.os.osType target.platform 如果与 Win 匹配,则设置为 WINDOWS;如果与 IOS 或 MAC_OS 匹配,则设置为 MAC;如果与 Lin 匹配,则设置为 LINUX;否则设置为 UNKNOWN_PLATFORM(先从 event_data 中获取,然后从 device 中获取)
event_data_device_os_osVersion, device.os.osVersion target.platform_version 如果 event_data_device_os_osVersion 不为空,则使用该值,否则使用 device.os.osVersion
event_data.destination.port target.port 转换为整数
event_data.device.deviceName target.resource.name 直接复制值
event_data.user.email target.user.email_addresses 如果与电子邮件正则表达式匹配,则合并
event_data.user.email, event_data.user.name target.user.userid 如果 event_data.user.email 不是电子邮件地址,则使用该值,否则使用 event_data.user.name
metadata.product_name 设置为“JAMF_SECURITY_CLOUD”
metadata.vendor_name 设置为“JAMF_SECURITY_CLOUD”
user.userEmail principal.user.email_addresses 从更新日志映射
timestamp metadata.event_timestamp 从更新日志映射
eventTimeUtcMs additional.fields 从更新日志映射
cve.severity security_result.severity 从更新日志映射
app.id", "app.name", "app.version additional.fields 从更新日志映射

更新日志

查看此解析器的更新日志

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