收集 Aqua Security 日志

支持的语言:

概览

此解析器可从 Aqua Security 日志中提取字段,并将其转换为统一数据模型 (UDM)。它会将 message 字段解析为 JSON,提取用户、源 IP 和其他相关字段,将这些字段映射到 UDM 字段,并根据 action 字段对事件进行分类,同时使用规则名称、说明和 CVE 详细信息等安全上下文来丰富数据。

准备工作

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

  • Google SecOps 实例。
  • 对 Aqua Security 管理控制台的特权访问权限。

设置 Feed

您可以通过两种不同的入口点在 Google SecOps 平台中设置 Feed:

  • SIEM 设置 > Feed
  • 内容中心 > 内容包

通过“SIEM 设置”>“Feed”设置 Feed

如需配置 Feed,请按以下步骤操作:

  1. 依次前往 SIEM 设置 > Feed
  2. 点击添加新 Feed
  3. 在下一页上,点击配置单个 Feed
  4. Feed 名称字段中,输入 Feed 的名称(例如 Aqua Security Logs)。
  5. 选择 Webhook 作为来源类型
  6. 选择 Aqua Security 作为日志类型
  7. 点击下一步
  8. 可选:为以下输入参数指定值:
    • 拆分分隔符:用于分隔日志行的分隔符,例如 \n
    • 资源命名空间资源命名空间
    • 注入标签:应用于此 Feed 中事件的标签。
  9. 点击下一步
  10. 最终确定界面中检查 Feed 配置,然后点击提交
  11. 点击生成密钥,生成用于对此 Feed 进行身份验证的密钥。
  12. 复制并存储密钥。您将无法再次查看此密钥。如有需要,您可以重新生成新的 Secret 密钥,但此操作会使之前的 Secret 密钥失效。
  13. 详情标签页中,从端点信息字段复制 Feed 端点网址。您需要在客户端应用中指定此端点网址。
  14. 点击完成

设置来自内容中心的 Feed

为以下字段指定值:

  • 拆分分隔符:用于分隔日志行的分隔符,例如 \n

高级选项

  • Feed 名称:用于标识 Feed 的预填充值。
  • 来源类型:用于将日志收集到 Google SecOps 中的方法。
  • 资源命名空间:与 Feed 关联的命名空间。
  • 提取标签:应用于相应 Feed 中所有事件的标签。

  • 点击生成密钥,生成用于对此 Feed 进行身份验证的密钥。

  • 复制并存储密钥。您将无法再次查看此密钥。如有需要,您可以重新生成新的 Secret 密钥,但此操作会使之前的 Secret 密钥失效。

  • 详情标签页中,从端点信息字段复制 Feed 端点网址。您需要在客户端应用中指定此端点网址。

为 Webhook Feed 创建 API 密钥

  1. 依次前往 Google Cloud 控制台 > 凭据

    转到“凭证”页面

  2. 点击创建凭据,然后选择 API 密钥

  3. 将 API 密钥访问权限限制为 Chronicle API

指定端点网址

  1. 在客户端应用中,指定 webhook Feed 中提供的 HTTPS 端点网址。
  2. 通过在自定义标头中指定 API 密钥和密钥来启用身份验证,格式如下:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    建议:将 API 密钥指定为标头,而不是在网址中指定。

  3. 如果您的 Webhook 客户端不支持自定义标头,您可以使用以下格式的查询参数指定 API 密钥和密钥:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

    替换以下内容:

    • ENDPOINT_URL:Feed 端点网址。
    • API_KEY:用于向 Google SecOps 进行身份验证的 API 密钥。
    • SECRET:您生成的用于验证 Feed 的密钥。

在 Aqua Security 中为 Google SecOps 创建 Webhook

  1. 登录 Aqua Security 控制台。
  2. 前往设置 > 映像扫描结果 Webhook
  3. 勾选启用发送图片扫描结果复选框。
  4. 输入 <ENDPOINT_URL>,然后输入 <API_KEY><SECRET>
  5. 点击保存

UDM 映射表

日志字段(升序) UDM 映射 逻辑
jsonPayload.action metadata.event_type 根据“jsonPayload.action”的值进行映射。如需了解具体映射,请参阅解析器代码。
jsonPayload.action security_result.summary 直接映射。
jsonPayload.adjective target.file.full_path 如果“jsonPayload.container”为空,则直接映射。
jsonPayload.category target.asset.category 直接映射。
jsonPayload.cfappname target.application 直接映射。
jsonPayload.cfspace principal.user.userid 如果“jsonPayload.user”为空,则直接映射。
jsonPayload.command principal.ip 使用 Grok 模式“user %{GREEDYDATA:user_id} \(%{IP:src_ip}\)”提取。
jsonPayload.command principal.user.userid 使用 Grok 模式“user %{GREEDYDATA:user_id} \(%{IP:src_ip}\)”提取。
jsonPayload.container target.asset.product_object_id 直接映射。
jsonPayload.data security_result.detection_fields 解析为键值对,并映射到“security_result.detection_fields”中的各个字段。
jsonPayload.description security_result.description 如果“jsonPayload.reason”为空,则直接映射。
jsonPayload.host principal.hostname 直接映射。
jsonPayload.hostgroup target.group.group_display_name 直接映射。
jsonPayload.hostid target.asset_id 映射为“host id: %{jsonPayload.hostid}”。
jsonPayload.hostip target.ip 直接映射。
jsonPayload.image target.file.full_path 直接映射。
jsonPayload.level security_result.action 如果“jsonPayload.level”为“success”,则设置为“ALLOW”。
jsonPayload.reason security_result.description 直接映射。
jsonPayload.rule security_result.rule_name 直接映射。
jsonPayload.user principal.user.userid 直接映射。
jsonPayload.vm_location target.asset.location.name 直接映射。
jsonPayload.vm_name target.resource.name 直接映射。
resource.labels.instance_id target.resource.id 直接映射。
resource.labels.project_id target.asset.attribute.cloud.project.id 直接映射。
resource.labels.zone target.asset.attribute.cloud.availability_zone 直接映射。
时间戳 metadata.event_timestamp 在转换为 ISO8601 格式后直接映射。
extensions.auth.type 如果“jsonPayload.description”包含“SAML”,则设置为“SSO”;否则,如果“jsonPayload.action”为“login”或“Login”,则设置为“AUTHTYPE_UNSPECIFIED”。
metadata.log_type 设置为“AQUA_SECURITY”。
metadata.product_name 设置为“AQUA_SECURITY”。
metadata.vendor_name 设置为“AQUA_SECURITY”。
target.asset.attribute.cloud.environment 设置为“GOOGLE_CLOUD_PLATFORM”。
target.resource.type 设置为“VIRTUAL_MACHINE”。

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