前言¶
DeepSeek Harness (DSH) 的生态插件通常在智能体运行前扫描配置文件。dsh-egress-guard 位于工具执行流水线中,针对工具调用本身进行安全检查。它通过三个扩展点工作:执行前的出口主机白名单、执行后的密文脱敏,以及全量的追加式审计日志。
核心功能¶
dsh-egress-guard 作为运行时安全网关,具备以下能力:
- 出口主机白名单(pre-execute):在工具执行前检查网络目标。若目标不在允许列表中(例如向不明站点发起
curl或未知的git push),则进行拦截或询问。 - 密文脱敏(post-execute):在结果返回给模型或持久化会话之前,重写结果中的敏感信息。
- 追加式审计日志(JSONL):记录每一次决策,包括
monitor模式下仅审计而不阻断的决策。 - 实现方式:基于文档化的扩展点监听,无 forking,无修补循环。
安装与启用¶
安装插件不会破坏现有工作流,默认处于 monitor 模式:
dsh plugin --profile <name> add dsh-egress-guard
默认配置中 mode: monitor,这意味着规则会被评估并记录,但不会阻断或重写任何内容。确认审计日志符合预期后,可在 cordis.patch.yml 中启用强制模式。
配置说明¶
配置文件位于插件的 cordis.patch.yml 中。安装后,请在你的配置中完整覆盖 id: egress-guard 的 config 节。
基础配置项¶
| 配置项 | 默认值 | 说明 |
|---|---|---|
mode |
monitor |
monitor 仅审计;enforce 阻断并脱敏;off 不注册任何规则。 |
egress.allowHosts |
[] |
允许的主机列表,支持通配符(如 *.github.com)。空列表意味着仅使用黑名单。 |
egress.denyHosts |
[] |
永久拒绝的主机列表,优先级高于 allowHosts。 |
egress.allowLoopback |
true |
允许 localhost、127.0.0.0/8、::1 等回环地址。 |
egress.onViolation |
deny |
违规时的动作。deny 直接拒绝;ask 请求批准(若未挂载批准服务则降级为 deny)。 |
redact.builtins |
true |
自动脱敏内置模式(私钥、API Key、JWT、Bearer Header 等)。 |
redact.extraPatterns |
[] |
额外的正则表达式源,用于匹配自定义格式的密文。 |
redact.placeholder |
[redacted:{name}] |
脱敏后的占位符,{name} 为匹配到的正则名称。 |
audit.path |
$DSH_HOME/egress-guard.jsonl |
审计日志的本地路径。 |
audit.logAllowed |
false |
记录通过检查的调用。开启此选项可用于从真实流量构建白名单。 |
示例配置¶
- id: egress-guard
config:
mode: enforce
egress:
enabled: true
allowHosts: ['*.github.com', '*.npmjs.org', 'api.deepseek.com']
denyHosts: []
allowLoopback: true
onViolation: deny
redact:
enabled: true
builtins: true
extraPatterns: []
placeholder: '[redacted:{name}]'
audit:
enabled: true
path: ''
logAllowed: false
典型用法:从日志构建白名单¶
在启用 audit.logAllowed: true 并运行一段时间后,可以通过以下步骤分析实际访问的主机并生成白名单:
- 安装插件并保持
monitor模式运行。 - 修改配置启用
audit.logAllowed: true,记录所有通过的请求。 - 分析日志文件,统计访问频率最高的主机:
jq -r '.hosts[]?' ~/.dsh/egress-guard.jsonl | sort | uniq -c | sort -rn
- 将统计出的合法主机添加到
allowHosts,并将mode改为enforce。
局限性与注意事项¶
- 安全边界定位:它是护栏而非围栏。它提高了事故或提示注入的门槛,无法阻止在机器上运行代码的攻击者。
- 检测机制:检测基于文本扫描。通过运行时拼接、Base64 编码或十进制 IP 组装的 destination 可能无法被检测到。
- 进程级限制:工具若自行打开套接字(除非参数中包含目标地址),网关无法拦截。
- 脱敏机制:基于正则模式,可能对非密文产生误判,也可能遗漏未知的密文格式。建议在强制模式前检查审计日志中的误报。
- 二进制内容:插件不扫描二进制内容(如图像块)。
- 审计日志:日志本地存储且未签名,任何能写入文件系统的进程均可篡改。
兼容性¶
该插件基于 @deepseek-ai/dsh-tools 0.1.0-rc 流水线契约构建。测试套件运行在 0.1.0-rc.6,并在 dsh 0.1.0-rc.5 环境下进行了四种安装方式的验证。
总结¶
dsh-egress-guard 通过在工具调用流水线中插入检查点,为 DeepSeek Harness 提供了运行时级别的出口控制和数据脱敏能力。配合审计日志,可以逐步构建安全策略,适合需要在生产环境中控制智能体网络行为与数据泄露风险的场景。
- 插件目录:https://www.skillhub.cn/plugins/tancheng33/dsh-egress-guard
- 源码地址:https://github.com/tancheng33/dsh-egress-guard