首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >加强 OpenClaw 技能安全性的启示:从 VMware 管理skill的改进说起

加强 OpenClaw 技能安全性的启示:从 VMware 管理skill的改进说起

作者头像
Henry Zhang
发布2026-03-06 10:46:52
发布2026-03-06 10:46:52
2310
举报

之前文章 OpenClaw 爆火后,我做了个用自然语言管理 VMware 的 AI 技能讲了 VMware-AIops 技能的诞生和功能,本文讲它发布后的 48 小时里,用户反馈如何推动了 4 轮安全加固和一次架构级拆分。


第一天:好评如潮,但问题也来了

文章发布后,很多用户通过 OpenClaw 和 Skills.sh 安装了 VMware-AIops,接入顺利,体验不错。但紧接着,安全相关的担忧集中涌现,归纳为三类:

担忧 1:AI 会不会"手滑"误操作?

"如果我只是想查看告警,万一 AI 理解错了,把 VM 给关了怎么办?" "我的场景就是日常巡检,能不能把写操作关掉?"

担忧 2:操作没有审计记录

"合规要求所有变更必须有 audit trail,做了什么操作事后能查到吗?"

担忧 3:确认机制不够严格

"vm delete --confirm 可以跳过确认?这太危险了" "能不能在执行前先让我看看当前状态?"

这些不是 Feature Request,这是信任问题。用户不敢用,再多功能都没意义。


48 小时,4 轮迭代

v0.5.0 — 双技能架构

用户说得对:如果只是查看告警,为什么要加载一个包含 vm.PowerOff() 的技能?

于是设计了双技能架构:

技能

能力

适用场景

vmware-monitor

只读:查清单、看告警、查事件

日常巡检、值班、给受限用户

vmware-aiops

完整:监控 + 开关机、创建/删除、快照、克隆、迁移

变更操作、自动化运维

但这只是第一步——vmware-monitor 的"只读"靠提示词约束,底层代码里仍存在破坏性函数。

v0.5.1 — Plan → Confirm → Execute → Log

加入结构化操作流程和审计日志:

  • 操作前:展示当前 VM 状态(电源、CPU、内存、快照数、IP)
  • 操作中:展示变更前后对比,请求确认
  • 操作后:写入 ~/.vmware-aiops/audit.log(JSONL)

每一次操作——成功的、失败的、用户拒绝的——都有记录。

v0.5.2 — 安全加固

  1. 移除 --confirm 绕过参数 — 脚本或 AI 可能自动加上,直接删除
  2. 双重确认扩展到所有破坏性操作 — 关机、删除、重置等操作全部需要连续两次确认
  3. 拒绝操作也记录审计 — 不仅知道做了什么,还知道什么被拒绝了
  4. 输入参数校验 — VM 名称、CPU、内存、磁盘范围校验
  5. .env 文件权限检查 — 启动时检查,非 600 立即警告

v0.5.3 — Dry-Run 模式

代码语言:javascript
复制
vmware-aiops vm power-off my-vm --dry-run

# [DRY-RUN] Would call: ShutdownGuest on 'my-vm'
# [DRY-RUN] Current state: poweredOn
# [DRY-RUN] No changes made. Remove --dry-run to execute.

所有破坏性命令——关机、删除、快照、克隆、迁移等——都支持 --dry-run,先看再做。


关键决策:为什么要独立仓库?

四轮加固后,双技能架构的局限性暴露了。

vmware-monitor 号称"只读",但和 vmware-aiops 共用代码库。vm_lifecycle.py 里的 PowerOff()Destroy_Task() 仍然存在。用户的质疑完全合理:

"如果 AI 被 Prompt Injection 攻击,绕过 SKILL.md 约束,它是不是仍然可以调用这些函数?"

答案是:理论上可以。提示词约束不等于代码级安全。

于是做了架构级决策:将 VMware-Monitor 拆分为独立仓库

VMware-Monitor 从零构建,代码库中不存在任何破坏性函数

代码语言:javascript
复制
❌ 不存在 PowerOff()、Destroy_Task()、CreateVM_Task()
❌ 不存在 CreateSnapshot_Task()、Clone()、Relocate()

测试用例 test_no_destructive_code.py 自动扫描整个代码库确保这些函数名不会出现。即使 AI 被攻击,也找不到任何破坏性函数可调用——因为它们从来就不在这个代码库里。

两个仓库,各司其职

VMware-AIops

VMware-Monitor

安装

npx skills add zw008/VMware-AIops

npx skills add zw008/VMware-Monitor

能力

监控 + 完整操作

纯只读监控

安全模型

双重确认 + 审计 + Dry-Run

代码级隔离(零破坏性代码)

适用场景

需要变更操作的运维

日常巡检、值班、给受限用户

拆分后两个仓库都做了全面清理,消除冗余目录和交叉引用。Monitor 不是"阉割版"——它和 AIops 一样覆盖 Claude Code、Gemini CLI、Codex、Aider、Trae IDE 等所有主流 AI 平台,是同等的一等公民。


安全演进全景

代码语言:javascript
复制
用户反馈                     响应
──────────                   ──────────
"查看时不想有写权限"    →    v0.5.0  双技能架构
"操作没有审计记录"      →    v0.5.1  审计日志
"确认机制可以绕过"      →    v0.5.2  移除绕过、扩大确认范围
"执行前想看看会做什么"  →    v0.5.3  --dry-run 预演模式
"提示词约束不够安全"    →    独立仓库  代码级隔离

安全性从提示词约束升级到代码级隔离

层级

机制

L1 提示词

SKILL.md 中的 FORBIDDEN 操作列表

L2 确认

双重确认,无绕过参数

L3 预览

操作前状态展示 + Dry-Run

L4 审计

全量操作日志(含拒绝操作)

L5 代码

独立仓库,代码中零破坏性函数


写在最后

发布第一天收到的最有价值的反馈不是"好用",而是"我不敢用"。

安全不是功能列表上的 checkbox,是用户信任的基础。VMware-Monitor 的独立仓库不是过度设计——当代码库中物理上不存在破坏性函数时,信任就有了坚实的基础。

开源项目最大的价值不在于代码,而在于社区反馈推动的快速迭代。 48 小时内从用户反馈到架构级重构,这在传统软件开发中几乎不可能。


项目地址:

  • 完整运维:github.com/zw008/VMware-AIops
  • 只读监控:github.com/zw008/VMware-Monitor

一键安装:

代码语言:javascript
复制
# 完整运维
npx skills add zw008/VMware-AIops

# 只读监控(代码级安全)
npx skills add zw008/VMware-Monitor

如果你之前因为安全顾虑没有尝试,现在可以从 VMware-Monitor 开始——最小化风险,代码级保障。

欢迎关注 亨利笔记, 👍 点赞 | ⭐ 收藏 | ↗️ 转发。

近期文章:

不仅仅是裁员!当劳动力不再稀缺,AI将如何终结我们的传统经济模式?

马年春晚的机器人天团,隐藏着中国未来十年的财富密码

现象级开源AI智能体:OpenClaw(Clawdbot)五层架构深度解析

这个能“动手”的开源项目,让普通人拥有“数字分身”

别再只会写提示词了!MCP+Skills这两大杀器,正在终结“AI智障”时代!

本公众号聚焦人工智能,云原生和区块链等技术原理,请立即关注亨利笔记 ( henglibiji ),以免错过更新。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-03-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 亨利笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一天:好评如潮,但问题也来了
  • 48 小时,4 轮迭代
    • v0.5.0 — 双技能架构
    • v0.5.1 — Plan → Confirm → Execute → Log
    • v0.5.2 — 安全加固
    • v0.5.3 — Dry-Run 模式
  • 关键决策:为什么要独立仓库?
    • 两个仓库,各司其职
  • 安全演进全景
  • 写在最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档