使用 Gemini 创建解析器扩展程序
本指南介绍了安全分析师和检测工程师如何使用自然语言提示来扩充默认日志解析器。借助 AI 解析器扩展程序功能,您可以快速提取其他字段、应用条件逻辑,并将原始日志映射到统一数据模型 (UDM),而无需编写复杂的解析器语法或正则表达式。
当 Google SecOps 中的默认日志解析器解析您的日志源时,可能会忽略客户特定的自定义属性、可选字段或专用遥测数据。借助 AI 解析器扩展程序功能,您可以执行以下操作:
- 从原始日志中提取其他字段,并将其映射到标准 UDM 字段或自定义
additional.fields。 - 应用条件逻辑和值转换,例如将字符串操作映射到 UDM 枚举类型。
- 在多轮对话会话中以交互方式优化生成的扩展程序,而无需从头开始。
主要术语
- 统一数据模型 (UDM):Google SecOps 中用于存储和分析日志数据的标准数据结构。
准备工作
在开始之前,请确认满足以下前提条件:
- 用量配额 :在 24 小时内,您最多可以运行 10 个 AI 解析器扩展程序生成会话,每个会话最多包含 5 条消息。
撰写提示的最佳实践
如需在首次尝试时获得准确的解析器扩展程序,请遵循以下提示准则:
- 明确指定来源和目标 :清楚说明要提取原始日志的哪个部分,以及要填充哪个确切的 UDM 字段路径,例如
principal.ip、target.user.email_addresses或security_result.action。 - 使用引号表示完全匹配的字面量:在引用非结构化日志中的字面量字符串、分隔符或示例值时,请用引号将其括起来,例如
"198.51.100.0"或"allow"。 - 使用 additional.fields 处理自定义字段 :对于没有专用 UDM 字段的专有属性或供应商特定属性,请指示 AI 使用清晰的键名称将其映射到
additional.fields中,例如additional.fields["application"]。
生成解析器扩展程序
您可以从 Google SecOps 中的以下任一位置启动解析器扩展程序工作流:
- 解析器设置页面 :前往解析器 页面,选择并扩展任何现有日志解析器。
- 搜索页面 :在搜索 页面上调查日志时,直接从包含未解析字段的事件打开扩展程序创建流程。
如需从解析器 设置页面生成解析器扩展程序,请按以下步骤操作:
- 在 Google SecOps 中,前往解析器 设置页面。
- 搜索您要扩展的日志类型。
- 点击解析器旁边的菜单,然后选择用于扩展解析器的选项。
- 在 RAW LOG 字段中,粘贴您要解析的日志的示例。
- 在 Extension Method 部分中,选择 Generate with AI 标签页。
- 在提示字段中,输入对提取的纯英文说明。
点击确认 。
系统会生成扩展程序代码并更新 UDM Output 。
优化解析器扩展程序
您可以在多轮对话会话中以迭代方式构建和优化解析器扩展程序。当您提交后续提示时,AI 会在之前生成的扩展程序的基础上应用您的新说明。除非您明确要求替换或移除,否则系统会自动保留之前轮次中的现有映射和条件逻辑。
- 在提示字段中,输入后续说明以调整生成的代码。
- 点击确认 。
- 在每个提示之后,预览生成的扩展程序代码,检查示例 UDM 输出,并确认或调整逻辑。
以下示例工作流展示了如何通过迭代优化在多个轮次中构建解析器扩展程序:
- 第 1 轮(初始提取):
- 用户提示:
"Extract source IP '198.51.100.0' to principal.ip and destination IP '198.51.100.1' to target.ip." - 结果 :AI 生成一个扩展程序,用于映射
principal.ip和target.ip。
- 用户提示:
- 第 2 轮(添加式映射):
- 用户提示
"Also map virtual system string 'vsys1' to observer.administrative_domain." - 结果 :AI 更新扩展程序以映射
observer.administrative_domain,同时保留第 1 轮中的 IP 映射。
- 用户提示
- 第 3 轮(条件优化):
- 用户提示:
"In addition, map action string 'allow' to security_result[0].action as ALLOW." - 结果 :AI 在之前的所有提取的基础上添加了根据条件触发的操作枚举映射。
- 用户提示:
验证解析器扩展程序
- 点击验证 。
- 流程完成后,查看验证指标。
访问参考信息
使用以下示例来撰写准确的提示。
结构化日志提示
对于将数据整理为命名键、属性或 XML 标记的结构化日志,请在提示中指定字段名称或路径。
结构化日志示例 - JSON 格式
{
"insertId": "u0mlpdesys",
"logName": "projects/sample-project-id/logs/cloudaudit.googleapis.com%2Fdata_access",
"protoPayload": {
"authenticationInfo": {
"principalEmail": "analyst@example-domain.com"
},
"methodName": "GenerateAccessToken",
"requestMetadata": {
"callerIp": "203.0.113.195",
"callerSuppliedUserAgent": "google-cloud-sdk gcloud/392.0.0"
},
"resourceName": "projects/-/serviceAccounts/110649196922301550006",
"serviceName": "iamcredentials.googleapis.com"
}
}
结构化日志的提示示例
| 提示说明 | 来源字段或键 | 目标 UDM 字段 |
|---|---|---|
"Map principalEmail to principal.user.email_addresses." |
principalEmail |
principal.user.email_addresses |
"Extract callerIp to principal.ip and methodName to metadata.product_event_type." |
callerIp、methodName |
principal.ip、metadata.product_event_type |
"Map resourceName to target.resource.name and serviceName to target.application." |
resourceName、serviceName |
target.resource.name、target.application |
"From XML tags, map /Event/System/Hostname to principal.hostname." |
/Event/System/Hostname |
principal.hostname |
非结构化日志提示
对于非结构化日志,请直接从示例日志、位置引用或描述性标签指定字面量值。
非结构化 syslog 消息示例
<14>Nov 9 18:52:45 198.51.100.1 1,2021/11/09 18:52:45,007051000184334,TRAFFIC,start,2561,2021/11/09 18:52:45,198.51.100.0,198.51.100.1,0.0.0.0,0.0.0.0,any allow,,,ping,vsys1,LAN,LAN,ethernet1/2,ethernet1/2,LFPpan,2021/11/09 18:52:45,9729,6,0,0,2048,0,0x100000,icmp,allow,444,444,0,6
非结构化日志的提示示例
| 提示说明 | 示例字面量值或说明 | 目标 UDM 字段 |
|---|---|---|
"Extract source IP '198.51.100.0' to principal.ip and destination IP '198.51.100.1' to target.ip." |
'198.51.100.0'、'198.51.100.1' |
principal.ip、target.ip |
"Extract the application string 'ping' from the log and map it to additional.fields['application']." |
'ping' |
additional.fields["application"] |
"Map rule name 'any allow' to security_result.rule_id." |
'any allow' |
security_result[0].rule_id |
"Extract sent bytes and received bytes into network.sent_bytes and network.received_bytes." |
日志中的数字字节计数器 | network.sent_bytes、network.received_bytes |
条件逻辑提示
描述条件逻辑,以将原始日志值标准化为特定的 UDM 枚举。
- 枚举标准化
"If the firewall action in the log is 'allow', set security_result.action to ALLOW; otherwise set security_result.action to BLOCK." - 条件字段映射:
"If the protocol is 'icmp', map the ICMP type and code into network.icmp.type and network.icmp.code." - 状态映射
"When the log status contains 'success' or '0', set security_result.severity to INFO; if it contains 'error', set it to ERROR."
用量限额
为保持最佳性能和资源可用性,AI 解析器扩展程序功能会强制执行以下用量配额:
- 每 24 小时 10 个会话 :在 24 小时内,每位客户最多可以运行 10 个 AI 解析器扩展程序生成会话。
- 每个会话 5 条消息 :在单个会话中,您最多可以发送 5 条消息,包括初始提示和后续优化轮次,以撰写和优化解析器扩展程序。
如果达到会话消息限制,您可以保存当前扩展程序或开始新会话。
后续步骤
需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。