name: "SentinelOne Alerts → OCSF" description: "Exhaustive map of a SentinelOne v2.1 cloud-detection alert object (data[]) to OCSF. Initiating (source) process = actor (actor.*); the process/file acted upon = target (process.*/file.*); registry, network, indicators and container included." field_mappings: title: "ruleInfo.name" severity: "ruleInfo.severity = 'Critical' ? 5 : (ruleInfo.severity = 'High' ? 4 : 3)" description: "alertInfo.eventType" # source_path is JSONata over ONE alert object (alert rule results_path = data). # Paths absent from a given alert are skipped at ingestion, so extra entries are safe. ocsf: # ── Endpoint / device ───────────────────────────────────────────── - { source_path: "agentDetectionInfo.name", ocsf_field: "src_endpoint.hostname" } - { source_path: "agentDetectionInfo.osName", ocsf_field: "src_endpoint.os.name" } - { source_path: "agentDetectionInfo.osFamily", ocsf_field: "src_endpoint.os.type" } - { source_path: "agentDetectionInfo.osRevision", ocsf_field: "device.os.build" } - { source_path: "agentDetectionInfo.uuid", ocsf_field: "device.uid" } - { source_path: "agentDetectionInfo.machineType", ocsf_field: "device.type" } - { source_path: "agentDetectionInfo.version", ocsf_field: "metadata.product.version" } - { source_path: "agentDetectionInfo.accountId", ocsf_field: "cloud.account.uid" } # ── Network (alertInfo) ─────────────────────────────────────────── - { source_path: "alertInfo.srcIp", ocsf_field: "src_endpoint.ip" } - { source_path: "alertInfo.dstIp", ocsf_field: "dst_endpoint.ip" } - { source_path: "alertInfo.dstPort", ocsf_field: "dst_endpoint.port" } - { source_path: "alertInfo.netEventDirection", ocsf_field: "connection_info.direction" } - { source_path: "alertInfo.dnsRequest", ocsf_field: "dns_query.hostname" } # ── Affected login user (alertInfo) ─────────────────────────────── - { source_path: "alertInfo.loginsUserName", ocsf_field: "user.name" } - { source_path: "alertInfo.loginAccountDomain", ocsf_field: "user.domain" } - { source_path: "alertInfo.loginAccountSid", ocsf_field: "user.uid" } # ── Rule / finding ──────────────────────────────────────────────── - { source_path: "ruleInfo.name", ocsf_field: "rule.name" } - { source_path: "ruleInfo.id", ocsf_field: "rule.uid" } - { source_path: "ruleInfo.description", ocsf_field: "rule.desc" } - { source_path: "alertInfo.alertId", ocsf_field: "finding_info.uid" } - { source_path: "alertInfo.dvEventId", ocsf_field: "metadata.original_event_uid" } - { source_path: "alertInfo.createdAt", ocsf_field: "finding_info.created_time" } - { source_path: "alertInfo.updatedAt", ocsf_field: "finding_info.modified_time" } - { source_path: "alertInfo.hitType", ocsf_field: "finding_info.analytic.type" } - { source_path: "alertInfo.incidentStatus", ocsf_field: "status" } - { source_path: "alertInfo.analystVerdict", ocsf_field: "status_detail" } # ── Threat-intel indicator (observables) ────────────────────────── - { source_path: "alertInfo.indicatorName", ocsf_field: "observables.name" } - { source_path: "alertInfo.indicatorCategory", ocsf_field: "observables.type" } - { source_path: "alertInfo.tiIndicatorValue", ocsf_field: "observables.value" } # ── Registry (alertInfo) ────────────────────────────────────────── - { source_path: "alertInfo.registryPath", ocsf_field: "reg_key.path" } - { source_path: "alertInfo.registryValue", ocsf_field: "reg_value.data" } # ── Initiating (source) process — the actor ─────────────────────── - { source_path: "sourceProcessInfo.name", ocsf_field: "actor.process.name" } - { source_path: "sourceProcessInfo.pid", ocsf_field: "actor.process.pid" } - { source_path: "sourceProcessInfo.filePath", ocsf_field: "actor.process.file.path" } - { source_path: "sourceProcessInfo.commandline", ocsf_field: "actor.process.cmd_line" } - { source_path: "sourceProcessInfo.user", ocsf_field: "actor.user.name" } - { source_path: "sourceProcessInfo.integrityLevel", ocsf_field: "actor.process.integrity" } - { source_path: "sourceProcessInfo.fileHashSha256", ocsf_field: "actor.process.file.hashes.sha256" } - { source_path: "sourceProcessInfo.fileHashSha1", ocsf_field: "actor.process.file.hashes.sha1" } - { source_path: "sourceProcessInfo.fileHashMd5", ocsf_field: "actor.process.file.hashes.md5" } # ── Parent of the source process ────────────────────────────────── - { source_path: "sourceParentProcessInfo.name", ocsf_field: "actor.process.parent_process.name" } - { source_path: "sourceParentProcessInfo.pid", ocsf_field: "actor.process.parent_process.pid" } - { source_path: "sourceParentProcessInfo.commandline", ocsf_field: "actor.process.parent_process.cmd_line" } # ── Target process — the process acted upon ─────────────────────── - { source_path: "targetProcessInfo.tgtProcName", ocsf_field: "process.name" } - { source_path: "targetProcessInfo.tgtProcPid", ocsf_field: "process.pid" } - { source_path: "targetProcessInfo.tgtProcCmdLine", ocsf_field: "process.cmd_line" } - { source_path: "targetProcessInfo.tgtProcImagePath", ocsf_field: "process.file.path" } - { source_path: "targetProcessInfo.tgtProcUid", ocsf_field: "process.uid" } - { source_path: "targetProcessInfo.tgtProcIntegrityLevel", ocsf_field: "process.integrity" } # ── Target file — the file acted upon ───────────────────────────── - { source_path: "targetProcessInfo.tgtFilePath", ocsf_field: "file.path" } - { source_path: "targetProcessInfo.tgtFileId", ocsf_field: "file.uid" } - { source_path: "targetProcessInfo.tgtFileHashSha256", ocsf_field: "file.hashes.sha256" } - { source_path: "targetProcessInfo.tgtFileHashSha1", ocsf_field: "file.hashes.sha1" } - { source_path: "targetProcessInfo.tgtFileCreatedAt", ocsf_field: "file.created_time" } - { source_path: "targetProcessInfo.tgtFileModifiedAt", ocsf_field: "file.modified_time" } # ── Container ───────────────────────────────────────────────────── - { source_path: "containerInfo.name", ocsf_field: "container.name" } - { source_path: "containerInfo.id", ocsf_field: "container.uid" } - { source_path: "containerInfo.image", ocsf_field: "container.image.name" }