Files
riposte-marketplace/integrations/splunk/mappers/search.yaml
T
Guillaume BOURGEOIS dd1ca83d7d feat(splunk): full Splunk REST integration (search, jobs, KV Store, events)
20 commands over the management port (8089) with token or basic auth:
SPL search (oneshot) as an ingestion source with an OCSF mapper for
notable/CIM findings; async search jobs (create/status/results); index
listing; event submission (receivers/simple + HEC); the complete KV Store
command set (collection create/config/delete, list, data list/add/delete,
entry search/delete/update); user list/delete; and a connectivity test.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 16:08:58 +02:00

36 lines
3.0 KiB
YAML

name: "Splunk Notable / CIM → OCSF"
description: "Maps a Splunk notable / CIM finding row (search results_path = results) to OCSF Finding fields. Built for ES notable events surfaced by the `notable` macro (rule_title/rule_name/urgency/security_domain) enriched with CIM Network/Authentication fields (src/dest/user/dvc). Severity is normalised to the OCSF 1-5 scale from the notable `urgency`."
field_mappings:
title: "rule_title ? rule_title : (source ? source : event_id)"
# urgency: informational/low -> low, up to critical=5 (OCSF 1-5 scale).
severity: "urgency = 'critical' ? 5 : (urgency = 'high' ? 4 : (urgency = 'medium' ? 3 : (urgency = 'low' ? 2 : 1)))"
description: "rule_description"
# results_path = results; source_path is JSONata over ONE result row.
# Fields absent from a given row are skipped at ingestion, so extra entries are safe.
ocsf:
# ── Finding ───────────────────────────────────────────────────────
- { source_path: "event_id", ocsf_field: "finding_info.uid" }
- { source_path: "rule_title", ocsf_field: "finding_info.title" }
- { source_path: "rule_description", ocsf_field: "finding_info.desc" }
- { source_path: "`_time`", ocsf_field: "finding_info.created_time" }
- { source_path: "security_domain", ocsf_field: "finding_info.analytic.category" }
- { source_path: "status_label", ocsf_field: "status" }
# ── Rule (correlation search) / provenance ────────────────────────
- { source_path: "rule_name", ocsf_field: "rule.name" }
- { source_path: "rule_description", ocsf_field: "rule.desc" }
- { source_path: "signature", ocsf_field: "metadata.event_code" }
- { source_path: "source", ocsf_field: "metadata.log_name" }
- { source_path: "sourcetype", ocsf_field: "metadata.log_source" }
# ── Source endpoint (CIM Network) ─────────────────────────────────
- { source_path: "src", ocsf_field: "src_endpoint.hostname" }
- { source_path: "src_ip", ocsf_field: "src_endpoint.ip" }
- { source_path: "src_port", ocsf_field: "src_endpoint.port" }
# ── Destination endpoint (CIM Network) ────────────────────────────
- { source_path: "dest", ocsf_field: "dst_endpoint.hostname" }
- { source_path: "dest_ip", ocsf_field: "dst_endpoint.ip" }
- { source_path: "dest_port", ocsf_field: "dst_endpoint.port" }
# ── Affected device / users (CIM) ─────────────────────────────────
- { source_path: "dvc", ocsf_field: "device.hostname" }
- { source_path: "user", ocsf_field: "user.name" }
- { source_path: "src_user", ocsf_field: "actor.user.name" }