CharlotteN7/dsh-ocsf-forwarder0

dsh-ocsf-forwarder

DSH 的 SIEM 转发器插件,将安全会话活动规范化为 OCSF 格式并输出至 SOC 审计通道。

AI 分析

核心用途是收集并转发 Agent 运行时的安全审计日志。适合需要将 DSH 活动接入企业安全信息和事件管理(SIEM)系统的安全管理员。

包名
dsh-ocsf-forwarder
版本
0.2.1
许可证
MIT
最近更新
2026年8月16日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:CharlotteN7/dsh-ocsf-forwarder

Configuration

KeyDefaultMeaning
spoolPathrequiredAbsolute path of the SOC-lane spool. Created 0640, with its parent directories. One process at a time owns a path — see Delivery and failure modes.
spoolMaxBytes268435456Rotate to a new generation at this size.
spoolMaxGenerations16Rotated generations that may await the shipper. At this count rotation stops and the live file grows past spoolMaxBytes instead.
spoolMaxTotalBytes4294967296Second stop condition on rotation: bytes across the live spool and every rotated generation. Not a delete policy — see Delivery and failure modes.
spoolHighWaterBytes3221225472Total spool bytes at which the heartbeat is raised to severity_id: 4. Must not exceed spoolMaxTotalBytes, or load fails.
statsIntervalMs300000How often the forwarder's counters reach the log and a heartbeat reaches the spool. 0 reports and heartbeats only at unload.
restricted.pathRestricted lane: the same records plus the verbatim payload in raw_data. Created 0600.
restricted.acknowledgedfalseMust be true for the restricted lane to open; the plugin fails at load otherwise.
otlp.endpointOTLP collector base URL. /v1/logs is appended when the URL has no path. Absent disables OTLP shipping.
splunk.endpointSplunk HEC base URL, typically https://:8088 (Splunk Cloud defaults to 443). /services/collector/event is appended when the URL has no path.
splunk.token.source / .variable / .valueenv / — / —Where the HEC token comes from. env names an environment variable; literal carries the token in configuration. Missing or empty fails at load.
splunk.index / host / source / sourcetypePrefix— / this host / dsh:session / ocsfHEC event metadata. index is omitted so the token's default index applies. sourcetype is `
:`.
.headers / batchSize / flushIntervalMs / timeoutMs / cursorPath{} / 256 / 5000 / 10000 / .cursorDelivery settings, on either shipper block.
.maxReadBytes / maxBackoffMs / quarantinePath8388608 / 300000 / .quarantineLargest spool region read in one pass, the backoff ceiling, and where refused batches are set aside.
fleet.tenantUid / labels / tagsmetadata.tenant_uid, metadata.labels (string list) and metadata.tags (a map, rendered as OCSF key_value_object entries). Never inferred.
fleet.installUid / installUidPathgenerated / .install-uiddevice.uid. Minted once and persisted, so a renamed host is still the same device.
delegationTools{}Tool name → provider, for delegation tools registry discovery cannot see. An entry may add a name; it may not un-name a discovered one.
privacy.argumentValuesdigestomit, digest, or full for tool-argument values.
privacy.commandLinedigestdigest or full for command lines.
privacy.urlhosthost, sanitized (scheme + host + path), or full. A path carries a reset or invite token as readily as a query string does, so sanitized is a deliberate widening.
privacy.hmacKey.sourceephemeralephemeral (random per process), env (+variable), or literal (+value). Configured keys must be ≥ 32 bytes or load fails.
seedReplayfullfull, boundary (one marker record), or none.
dropEventTypes / includeEventTypes[]Adjust the drop policy. Dropped by default: assistant/chunk, session/end-seed, session/title, session/title-llm-request, feedback/record, todo/write.
toolClasses{}Classify tools the built-in table does not know. It cannot reclassify a known tool.
extension.name / extension.placementdsh / unmappedKey the extension attributes are stored under, and whether they sit under unmapped or at the top level. Every OCSF class is additionalProperties: false, so attribute produces records that fail validation.
extension.uidOCSF extension uid, as assigned by the OCSF extension registry. metadata.extensions is omitted until one is configured: there is no free private range, and every unassigned value collides with somebody's.
vendorNamedsh-security-pluginsmetadata.product.vendor_name.