收集 Cisco Identity Intelligence 日志

支持范围:

本文档介绍了如何配置 Cisco Identity Intelligence,以使用网络钩子将日志推送到 Google Security Operations。

Cisco Identity Intelligence(前身为 Oort Security)是一个身份威胁检测和响应平台,可跨身份提供方持续监控用户行为、身份验证模式、设备使用情况和访问权限。它通过分析用户活动、失败的安全检查、信任分数和风险行为,检测基于身份的威胁、错误配置和合规性违规行为。

准备工作

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

  • Google SecOps 实例
  • 对 Cisco Identity Intelligence 租户的特权访问权限
  • 在 Cisco Identity Intelligence 中管理集成的管理权限
  • 拥有对 Google Cloud Console 的访问权限(用于创建 API 密钥)

在 Google SecOps 中创建 webhook Feed

创建 Feed

  1. 依次前往设置 > 数据管理 > Feed。如果您使用的是仅 SIEM 平台,请依次前往设置 > Feed。
  2. 点击添加新新闻信息流。
  3. 在下一页上,点击配置单个 Feed。
  4. 在 Feed 名称字段中,输入 Feed 的名称(例如 Cisco Identity Intelligence Events)。
  5. 选择 Webhook 作为来源类型。
  6. 选择 Cisco Identity Intelligence 作为日志类型。
  7. 点击下一步。
  8. 为以下输入参数指定值:
    • 拆分定界符(可选):输入 \n 以拆分多行事件。
    • 资产命名空间:资产命名空间
    • 注入标签:要应用于此 Feed 中事件的标签
  9. 点击下一步。
  10. 在最终确定界面中查看新的新闻信息流配置,然后点击提交。

生成并保存密钥

创建 Feed 后,您必须生成用于身份验证的密钥:

  1. 在 Feed 详情页面上,点击生成密钥。
  2. 系统会显示一个对话框,其中包含密钥。
  3. 复制并妥善保存密钥。

获取 Feed 端点网址

  1. 前往该 Feed 的详细信息标签页。
  2. 在端点信息部分,复制 Feed 端点网址。
  3. 网址格式为:

    https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import
    

    其中,{region} 是 Google SecOps 实例所在的区域(例如 us、europe 或 asia-southeast1),{parent} 是资源路径,格式为 projects/<PROJECT_ID>/locations/<LOCATION>/instances/<INSTANCE_ID>/logTypes/<LOG_TYPE>。

  4. 保存此网址,以便在后续步骤中使用。

  5. 点击完成。

创建 Google Cloud API 密钥

Chronicle 需要使用 API 密钥进行身份验证。在 Google Cloud Console 中创建受限 API 密钥。

创建 API 密钥

  1. 前往 Google Cloud 控制台凭据页面。
  2. 选择您的项目(与您的 Chronicle 实例关联的项目)。
  3. 点击创建凭证 > API 密钥。
  4. 系统会创建 API 密钥,并在对话框中显示。
  5. 点击修改 API 密钥以限制密钥。

限制 API 密钥

  1. 在 API 密钥设置页面中:
    • 名称:输入描述性名称(例如 Chronicle Webhook API Key)
  2. 在 API 限制下:
    1. 选择限制密钥。
    2. 在选择 API 下拉菜单中,搜索并选择 Google SecOps API(或 Chronicle API)。
  3. 点击保存。
  4. 从页面顶部的 API 密钥字段中复制 API 密钥值。
  5. 安全地保存 API 密钥。

配置 Cisco Identity Intelligence 网络钩子

构建网络钩子网址

  • 将 Chronicle 端点网址和 API 密钥组合在一起:

    <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY>
    
    • 示例:

      https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import?key=AIzaSyD...&secret=abcd1234...
      

替换以下内容:

  • <ENDPOINT_URL>:之前复制的 Chronicle Feed 端点网址
  • <API_KEY>:之前创建的 Google Cloud API 密钥
  • <SECRET_KEY>:之前生成的 Chronicle webhook 密钥

在 Cisco Identity Intelligence 中创建 webhook 通知目标

  1. 登录 Cisco Identity Intelligence。
  2. 前往集成。
  3. 点击添加集成。
  4. 向下滚动到 Webhook 部分。
  5. 点击添加 Webhook 目标。
  6. 提供以下配置详细信息:
    • 名称:输入一个描述性名称(例如 Chronicle SIEM Integration)。
    • 网络钩子网址:粘贴上述包含 API 密钥和密钥的完整端点网址。
    • Authorization Type(授权类型):选择 API Key(API 密钥)。
    • API 密钥名称:输入密钥名称(例如 x-goog-chronicle-auth)。
    • API 密钥值:输入 Google Cloud API 密钥。
  7. 展开调用 HTTP 参数部分。
  8. 添加以下类型为标头的参数:
    • 键:Content-Type,值:application/json
    • 键:Accept,值:application/json
  9. 在将此目标用于部分中,选择检查失败,以便在身份检查检测到失败结果时接收通知。
  10. 点击保存。

测试 webhook 连接

  1. 在集成页面上,找到您创建的 webhook 通知目标。
  2. 点击该行右侧的三点状菜单。
  3. 选择测试连接。
  4. 验证测试消息是否已成功送达。

为身份检查启用 webhook

创建 webhook 通知目标后,您必须为要监控的特定身份检查启用该目标。

  1. 在 Cisco Identity Intelligence 中,前往所需的检查详情页面。
  2. 展开页面右上角的下拉菜单。
  3. 选中您创建的 webhook 通知目标对应的复选框。
  4. 对要发送到 Google SecOps 的每个检查重复上述步骤。

如需了解详情,请参阅 Cisco Identity Intelligence webhook 文档。

身份验证方法参考

Chronicle webhook Feed 支持多种身份验证方法。请选择您的供应商支持的方法。

如果您的供应商支持自定义 HTTP 标头,请使用此方法以提高安全性。

  • 请求格式:

    POST <ENDPOINT_URL> HTTP/1.1
    Content-Type: application/json
    x-goog-chronicle-auth: <API_KEY>
    x-chronicle-auth: <SECRET_KEY>
    
    {
        "event": "data",
        "timestamp": "2025-01-15T10:30:00Z"
    }
    

优点:

  • API 密钥和 Secret 在网址中不可见
  • 更安全(标头不会记录在 Web 服务器访问日志中)
  • 供应商支持的首选方法

方法 2:查询参数

如果您的供应商不支持自定义标头,请将凭据附加到网址。

  • 网址格式:

    <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY>
    
  • 示例:

    https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import?key=AIzaSyD...&secret=abcd1234...
    
  • 请求格式:

    POST <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY> HTTP/1.1
    Content-Type: application/json
    
    {
        "event": "data",
        "timestamp": "2025-01-15T10:30:00Z"
    }
    

缺点:

  • 网址中可见的凭据
  • 可能会记录在 Web 服务器访问日志中
  • 安全性低于标头

方法 3:混合(网址 + 标头)

某些配置会在网址中使用 API 密钥,在标头中使用密钥。

  • 请求格式:

    POST <ENDPOINT_URL>?key=<API_KEY> HTTP/1.1
    Content-Type: application/json
    x-chronicle-auth: <SECRET_KEY>
    
    {
        "event": "data",
        "timestamp": "2025-01-15T10:30:00Z"
    }
    

身份验证标头名称

Chronicle 接受以下标头名称进行身份验证:

对于 API 密钥:

  • x-goog-chronicle-auth(推荐)
  • X-Goog-Chronicle-Auth(不区分大小写)

对于密钥:

  • x-chronicle-auth(推荐)
  • X-Chronicle-Auth(不区分大小写)

Webhook 限制和最佳实践

请求限制

限制 值
请求大小上限 4 MB
最大 QPS(每秒查询次数) 15000
请求超时 30 秒
重试行为 自动,采用指数退避算法

UDM 映射表

日志字段 UDM 映射 逻辑
账号 account_label.value 直接复制的值
账号 account_label.key 设为“account”
account_label security_result.detection_fields 已合并到 detection_fields
additional_detaildescription.key additional_detaildescription.key 设置为“详细说明”
detaildescription additional_detaildescription.value.list_value.values Merged from detaildescription
additional_detaildescription event.idm.read_only_udm.additional.fields 已合并到 additional.fields
additional_recommendedaction.key additional_recommendedaction.key 设为“推荐措施”
recommendedAction additional_recommendedaction.value.list_value.values 已从 recommendedAction 合并
additional_recommendedaction event.idm.read_only_udm.additional.fields 已合并到 additional.fields
data1 usersFailing_label 直接复制的值
data.login login_label 直接复制的值
detail-type security_result.summary 直接复制的值
detail.id security_result.rule_id 直接复制的值
detail.title security_result.rule_name 直接复制的值
detail.severity security_result.severity 如果 detail.severity 的值为 [CRITICAL,ERROR,HIGH,INFORMATIONAL,LOW,MEDIUM] 之一,则采用该值;如果为 moderate,则采用 MEDIUM
detaildescription value_array.string_value 直接复制的值
detailsdata.key add_label.value, add_label.key 如果不是 failedSigninDetails 或 ips,则值为 detailsdata.value,键为“loginDetails %{index} details %{detailindex} %{detailsdata.key}”
detailsdata.value add_label.value, add_label.key
detailsdata.key security_result.detection_fields 如果满足条件,则合并 add_label
detailsdata.value security_result.detection_fields
field_.value security_result.detection_fields 针对 json_array 中的各种嵌套字段(msg、ipInfo、asn、coordinates、first_event、second_event、locations)进行了合并,键名如“%{index} %{detailindex} %{index1} %{key}”等,不包括 ipAddress、ip 等。
field_.key security_result.detection_fields
id metadata.product_log_id 直接复制的值
login_label principal.user.email_addresses 如果匹配电子邮件正则表达式,则合并
msg.ipAddress principal.ip 如果非空,则合并
msg.first_event.ip_address principal.ip 如果非空,则合并
msg.second_event.ip_address principal.ip 如果非空,则合并
msg_travels_first_event_ip_address principal.ip 如果非空,则合并
msg_travels_second_event_ip_address principal.ip
recommendedAction value_array.string_value 直接复制的值
security_result event.idm.read_only_udm.security_result 已合并到 security_result 中
来源 source_label.value 直接复制的值
来源 source_label.key 设为“source”
source_label event.idm.read_only_udm.src.labels 已合并到 src.labels
时间 @timestamp 使用日期过滤条件(ISO8601、RFC 3339、yyyy-MM-ddTHH:mm:ss.SSSSSSZ)进行解析
usersFailing_label principal.user.email_addresses 如果匹配电子邮件正则表达式,则合并
版本 metadata.product_version 直接复制的值
has_principal event.idm.read_only_udm.metadata.event_type 如果 has_principal 为 true,则设置为“STATUS_UPDATE”;如果 has_user 为 true,则设置为“USER_UNCATEGORIZED”;否则设置为“GENERIC_EVENT”
has_user event.idm.read_only_udm.metadata.event_type
metadata.product_name metadata.product_name 设为“OORT”
metadata.vendor_name metadata.vendor_name 设为“OORT”
detail.published event.idm.read_only_udm.metadata.collected_timestamp 从更新日志映射
detail.login event.idm.read_only_udm.principal.user.userid 从更新日志映射
detail.userTrustLevel event.idm.read_only_udm.principal.user.attribute.labels 从更新日志映射
detail.login event.idm.read_only_udm.principal.user.user_display_name 从更新日志映射
detail.checkTopics event.idm.read_only_udm.security_result.category_details 从更新日志映射
region event.idm.read_only_udm.additional.fields 从更新日志映射
detail.checkId event.idm.read_only_udm.security_result.detection_fields 从更新日志映射
detail.checkScope event.idm.read_only_udm.security_result.detection_fields 从更新日志映射
detail.frameworks event.idm.read_only_udm.security_result.detection_fields 从更新日志映射
detail.explainabilityEventIds event.idm.read_only_udm.security_result.detection_fields 从更新日志映射
data.value event.idm.read_only_udm.security_result.detection_fields 从更新日志映射

更新日志

查看此解析器的更新日志

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