dsh-kubectl-guard:为 DeepSeek Harness 提供 kubectl 上下文安全守卫
gengwg/dsh-kubectl-guard
为 DeepSeek Harness 提供 kubectl 安全闸门:按 kubeconfig context 判断,非本地集群的不可逆操作直接拒绝,可恢复写入先询问,读取与本地集群不受影响。
dsh-kubectl-guard 是给 DeepSeek Harness 加装的一道 kubectl 安全闸门,专门防止 AI Agent 在真实集群上执行破坏性操作。它按 kubeconfig 上下文分级放行:非本地集群上的 delete、drain、evict 等不可逆动词直接拒绝,apply、patch、scale、exec 等可恢复写操作先请求批准,读操作和本地集群完全不干预。插件不注册任何工具,而是检查 shell 工具调用的 command 参数,因此无论 Agent 用什么方式执行命令都能覆盖,上下文名默认以会话级假名呈现,避免真实集群名流向模型提供方。
如何安装
dsh plugin --profile web add dsh-kubectl-guard- 分类
- 工具与能力
- 平台
- DSH Plugin
- 作者
- gengwg
- 分发方式
- 插件
dsh-kubectl-guard 核心特性
dsh-kubectl-guard 仓库简介
它是做什么的?
dsh-kubectl-guard 是 DeepSeek Harness(DSH)的 kubectl 安全策略插件,按 kubeconfig 上下文给 kubectl 命令分级放行。它解决的是 AI Agent 在真实集群上误执行破坏性操作的问题:对非本地集群的不可逆动词直接拒绝,可恢复的写操作先询问,读操作和本地集群完全不干预。插件本身不注册任何工具,而是检查 shell 工具调用的 command 参数,因此无论 Agent 用什么方式执行命令都能覆盖。由 gengwg 维护,采用 MIT 协议,最近更新于 2026-09。
核心功能
- 按上下文分级管控:非本地集群上 delete、drain、evict 等不可逆动词直接拒绝,apply、patch、scale、exec 等写操作先请求批准,get、describe、logs、top 等读操作一律放行。
- 上下文解析贴合 shell 语义:显式 --context 优先,其次 --kubeconfig,再到命令行内联的 KUBECONFIG= 赋值,最后才是环境变量,避免命令被错误地按本地集群判定。
- 本地集群白名单:只有匹配 localContexts 的上下文才算本地,其余情况(包括 kubeconfig 读不出来)一律按生产环境处理。
- 上下文名脱敏:默认关闭 showContextNames,被拦截的提示只向模型暴露类似 ctx#4be1f92a 的会话级假名,不泄露真实集群名。
- 失败即关闭:无法解析的命令(sh -c、命令替换、未闭合引号)按写操作处理,含不可逆动词则拒绝,否则询问。
- 干跑放行:apply --dry-run=server 视为读操作直接通过,让 Agent 能先展示变更再请求执行。
怎么使用这个插件?
在 DSH 中启用后无需任何调用,照常让 Agent 干活即可,守卫会坐在工具管线里检查 shell 命令再决定是否放行。典型场景包括:让 Agent 删除卡住的 Pod 会被直接拒绝并说明原因;让它滚动更新 Deployment 会在界面上弹出批准或拒绝按钮;查询 kube-system 里失败的 Pod 则不受影响。需要临时关闭时,可在启动会话时用补丁方式把该插件标记为 disabled,无需改动配置文件。行为可通过 config 段调整,例如 localContexts 白名单、binaries 与 guardedTools 覆盖的命令行工具,以及是否显示真实上下文名。
报错怎么排查?
从 0.1.x 升级后若发现守卫被加载两次,通常是旧版本以普通依赖方式安装时留下的手工插入条目仍在生效,按官方说明从配置文件中删除该条目即可。若命令被意外拒绝或询问,先确认当前上下文是否匹配 localContexts 白名单,未匹配的上下文(包括读取失败的 kubeconfig)都会被当作生产环境处理。
本页是基于该插件官方 README 独立重写的导读——权威文档和最新变更请以源头为准:gengwg/dsh-kubectl-guard。插件是安装时就在你机器上运行的第三方代码;收录不代表背书——安装前请自行审阅源码。
