Community研究与数据分析github.com

zw008/VMware-Policy

统一审计日志、策略执行与输入清理——VMware MCP 全家桶的底层基础设施。

VMware-Policy 是什么?

VMware-Policy 是 VMware MCP 技能家族的核心基础设施层,提供统一的审计日志记录、策略执行与输入清理能力。它通过 SQLite WAL 模式的 AuditEngine 实现高性能审计,支持日志轮转;PolicyEngine 支持基于 YAML 规则的 deny 规则与维护窗口,且规则变更可热加载。`sanitize()` 函数防御提示注入,`@vmware_tool` 装饰器则为所有 8 个 VMware MCP 工具的 156+ 个函数提供前置检查、执行、后置日志与元数据注入。其 CLI 工具 `vmware-audit` 支持查询审计日志、导出 JSON、统计概览等。该技能自动作为依赖安装,适用于 Claude Code、Cursor、Codex 等主流 AI 代理平台,且通过 `detect_agent()` 函数仅读取环境变量用于审计记录,不存储凭证。

兼容平台✓Claude Code✓Codex CLI~Cursor
npx skills add zw008/VMware-Policy

Installed? Explore more 研究与数据分析 skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

VMware Policy

免责声明:这是一个社区维护的开源项目,与 VMware, Inc. 或 Broadcom Inc. 无关联、未经其认可或赞助。“VMware”和“vSphere”是 Broadcom 的商标。源码在 github.com/zw008/VMware-Policy 以 MIT 许可证公开审计。

统一审计日志、策略执行与输入清理——VMware MCP 技能家族的基础设施层。

基础设施依赖:所有 8 个 VMware 技能都依赖 vmware-policy。它自动安装并提供 @vmware_tool 装饰器、sanitize() 函数以及共享审计数据库。 家族:vmware-aiops(VM 生命周期)、vmware-monitor(只读监控)、vmware-storage(iSCSI/vSAN)、vmware-vks(Tanzu Kubernetes)、vmware-nsx(NSX 网络)、vmware-nsx-security(DFW/防火墙)、vmware-aria(指标/告警/容量)、vmware-avi(AVI/ALB/AKO)。 | vmware-pilot(工作流编排)

本技能的功能

类别组件数量
审计日志AuditEngine(SQLite WAL)、日志轮转、代理检测3
策略引擎deny 规则、维护窗口、热加载3
清理sanitize()——提示注入防御、控制字符剥离1
装饰器@vmware_tool——前置检查 + 执行 + 后置日志 + 元数据1
CLIvmware-audit log、vmware-audit export、vmware-audit stats3

快速安装

uv tool install vmware-policy
vmware-audit stats          # 验证安装

vmware-policy 会自动作为所有 VMware 技能的依赖安装。仅当需要独立审计查询时才需手动安装。

何时使用本技能

  • 查询所有 VMware 技能的统一审计轨迹
  • 查看被拒绝的操作和策略违规
  • 检查审计统计信息(按技能、状态、时间范围)
  • 导出审计日志为 JSON 供外部分析
  • 配置 deny 规则或维护窗口
  • 将 @vmware_tool 装饰器集成到新的 VMware 技能中

此技能作为依赖自动加载——您不需要直接调用它。它在以下情况下激活:

  • 调用任何 VMware 技能工具函数时(通过 @vmware_tool 装饰器)
  • 用户询问审计日志、被拒绝的操作或策略规则时
  • 用户运行 vmware-audit CLI 命令时

相关技能——技能路由

用户意图推荐技能
VM 生命周期、部署、客户机操作vmware-aiops(uv tool install vmware-aiops)
只读监控、零风险vmware-monitor(uv tool install vmware-monitor)
存储:iSCSI、vSAN、数据存储vmware-storage(uv tool install vmware-storage)
Tanzu Kubernetes(vSphere 8.x+)vmware-vks(uv tool install vmware-vks)
NSX 网络:分段、网关、NATvmware-nsx(uv tool install vmware-nsx-mgmt)
NSX 安全:DFW 规则、安全组vmware-nsx-security(uv tool install vmware-nsx-security)
Aria Ops:指标、告警、容量vmware-aria(uv tool install vmware-aria)
负载均衡器、AVI、ALB、AKO、Ingressvmware-avi(uv tool install vmware-avi)
多步骤工作流(含审批)vmware-pilot
审计日志查询、策略规则vmware-policy——本技能

常见工作流

查询近期审计活动

  1. 查看最近 20 条审计条目:vmware-audit log --last 20
  2. 按技能过滤:vmware-audit log --skill vmware-nsx --last 50
  3. 检查被拒绝的操作:vmware-audit log --status denied --since 2026-03-28
  4. 查看聚合统计:vmware-audit stats --days 7

为生产环境设置策略规则

  1. 复制默认规则:cp $(python -c "import vmware_policy; print(vmware_policy.__file__.replace('__init__.py','rules_default.yaml'))") ~/.vmware/rules.yaml
  2. 编辑 ~/.vmware/rules.yaml——为生产环境添加 deny 规则:
    deny:
      - name: no-delete-in-prod
        operations: ["delete_*", "cluster_delete"]
        environments: ["production"]
        reason: "破坏性操作已在生产环境中被阻止"
    maintenance_window:
      start: "22:00"
      end: "06:00"
    
  3. 规则自动热加载——无需重启
  4. 验证:vmware-audit log --status denied 查看被阻止的操作

导出审计日志以符合合规性

  1. 将所有日志导出为 JSON:vmware-audit export --format json > audit-export.json
  2. 按技能过滤:vmware-audit export --skill vmware-aiops --since 2026-01-01
  3. 导入到您的 SIEM 或合规工具中

使用模式

场景推荐方式原因
查询审计日志CLIvmware-audit 提供丰富的表格输出
集成到技能中Python APIfrom vmware_policy import vmware_tool, sanitize
自动化合规导出CLIvmware-audit export --format json 可管道到任何工具

CLI 快速参考

# 查看近期审计条目
vmware-audit log --last 20
vmware-audit log --skill vmware-nsx --status denied
vmware-audit log --since 2026-03-28 --tool delete_segment

# 导出以符合合规性
vmware-audit export --format json > audit.json
vmware-audit export --skill vmware-aiops --since 2026-01-01

# 聚合统计
vmware-audit stats --days 7
vmware-audit stats --days 30

完整 CLI 参考:参见 references/cli-reference.md

Python API

from vmware_policy import vmware_tool, sanitize

# 包装每个 MCP 工具函数
@vmware_tool(risk_level="high", sensitive_params=["password"])
def delete_segment(name: str, env: str = "") -> dict:
    ...

# 在返回给 LLM 之前清理不受信任的 API 响应
clean_text = sanitize(api_response_text, max_len=500)

MCP 工具(0 个)

vmware-policy 不暴露 MCP 工具。它是一个被其他 VMware 技能使用的 Python 库和 CLI。

组件类型描述
@vmware_tool装饰器包装所有 8 个技能的 156+ 个 MCP 工具
sanitize()函数对 API 响应的提示注入防御
AuditEngine类带轮转功能的 SQLite WAL 审计日志记录器
PolicyEngine类支持热加载的 YAML 规则评估
vmware-auditCLI用于查询审计轨迹的 Typer CLI
detect_agent()函数从环境变量推断调用 AI 代理(见下文)

代理检测(透明性说明)

audit.py 中的 detect_agent() 函数检查以下环境变量以识别调用工具的 AI 代理。这仅用于审计日志记录的只读检查——不提取或存储凭据:

环境变量检测到的代理目的
CLAUDE_SESSION_ID 或 CLAUDE_CODEclaudeClaude Code 会话
OPENAI_API_KEY 或 CODEX_SESSIONcodexOpenAI Codex 会话
OLLAMA_HOSTlocal本地 Ollama 模型
DEERFLOW_SESSIONdeerflowDeerFlow 会话
(没有匹配)unknown无法识别的代理

检测到的代理名称存储在 ~/.vmware/audit.db 的 agent 列中,仅用于审计轨迹目的。不会记录 API 密钥或令牌。

故障排除

“Cannot initialize audit DB”警告

审计数据库目录 ~/.vmware/ 必须可写。手动创建:mkdir -p ~/.vmware && chmod 700 ~/.vmware。

策略规则未生效

规则从 ~/.vmware/rules.yaml 加载。验证文件存在且包含有效的 YAML。PolicyEngine 在文件更改时热加载——无需重启。

审计日志过大

AuditEngine 自动在 100MB 时轮转,保留最近的 5 个归档。手动清理:ls ~/.vmware/audit.*.db 查看归档。

技能中出现“PolicyDenied”异常

这意味着 ~/.vmware/rules.yaml 中的 deny 规则匹配了该操作。运行 vmware-audit log --status denied 查看规则名称和原因。要临时绕过:VMWARE_POLICY_DISABLED=1(仍会记录为已绕过)。

装饰器未检测到技能名称

@vmware_tool 装饰器从模块路径推断技能名称(例如 vmware_aiops.ops.vm_lifecycle -> aiops)。如果模块不遵循 vmware_<skill> 约定,技能将被记录为“unknown”。

SQLite“database is locked”错误

多个并发技能进程可以通过 WAL 模式写入同一个 audit.db。如果锁定持续超过 5 秒,请检查是否有持有数据库文件的僵尸进程。

设置

uv tool install vmware-policy
mkdir -p ~/.vmware

vmware-policy 会作为所有 VMware 技能的依赖自动安装。~/.vmware/ 目录在首次审计写入时自动创建。

完整设置指南、安全细节和集成说明:参见 references/setup-guide.md

安全

  • 源代码:github.com/zw008/VMware-Policy
  • 配置文件内容:~/.vmware/rules.yaml 仅包含规则定义,不包含凭据
  • Webhook 数据范围:不适用——vmware-policy 不会外部发送数据
  • TLS 验证:不适用——vmware-policy 不进行网络连接
  • 提示注入保护:sanitize() 截断到 500 字符并剥离 C0/C1 控制字符
  • 最小权限:审计数据库仅本地存储(~/.vmware/audit.db),不暴露到网络

许可证

MIT——github.com/zw008/VMware-Policy

相关技能