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 |
| CLI | vmware-audit log、vmware-audit export、vmware-audit stats | 3 |
快速安裝
uv tool install vmware-policy
vmware-audit stats # 驗證安裝
vmware-policy 會自動安裝為所有 VMware 技能的依賴項。僅在需要獨立查詢稽核記錄時才需要手動安裝。
何時使用此技能
- 查詢跨所有 VMware 技能的統一稽核軌跡
- 檢視被拒絕的操作和政策違規
- 檢查稽核統計資訊(按技能、按狀態、按時間範圍)
- 匯出稽核日誌為 JSON 以供外部分析
- 設定 deny 規則或維護視窗
- 將
@vmware_tool裝飾器整合到新的 VMware 技能中
此技能會自動載入為依賴項——您無需直接呼叫。它會在以下情況啟用:
- 任何 VMware 技能工具函數被呼叫時(透過
@vmware_tool裝飾器) - 使用者詢問稽核日誌、被拒絕的操作或政策規則時
- 使用者執行
vmware-auditCLI 命令時
相關技能——技能路由
| 使用者意圖 | 推薦技能 |
|---|---|
| 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 網路:區段、閘道、NAT | vmware-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、Ingress | vmware-avi(uv tool install vmware-avi) |
| 需要核准的多步驟工作流程 | vmware-pilot |
| 稽核日誌查詢、政策規則 | vmware-policy——此技能 |
常見工作流程
查詢近期稽核活動
- 檢視最後 20 筆稽核記錄:
vmware-audit log --last 20 - 按技能篩選:
vmware-audit log --skill vmware-nsx --last 50 - 檢查被拒絕的操作:
vmware-audit log --status denied --since 2026-03-28 - 檢視彙整統計:
vmware-audit stats --days 7
為生產環境設定政策規則
- 複製預設規則:
cp $(python -c "import vmware_policy; print(vmware_policy.__file__.replace('__init__.py','rules_default.yaml'))") ~/.vmware/rules.yaml - 編輯
~/.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" - 規則會自動熱重載——無需重啟
- 驗證:
vmware-audit log --status denied檢視被封鎖的操作
匯出稽核日誌以符合法規
- 匯出所有日誌為 JSON:
vmware-audit export --format json > audit-export.json - 按技能篩選:
vmware-audit export --skill vmware-aiops --since 2026-01-01 - 匯入您的 SIEM 或法規遵循工具
使用模式
| 情境 | 推薦方式 | 原因 |
|---|---|---|
| 查詢稽核日誌 | CLI | vmware-audit 提供豐富的表格輸出 |
| 整合到技能中 | Python API | from vmware_policy import vmware_tool, sanitize |
| 自動化法規遵循匯出 | CLI | vmware-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:
...
# 在將不受信任的 API 回應傳回給 LLM 之前進行消毒
clean_text = sanitize(api_response_text, max_len=500)
MCP 工具 (0)
vmware-policy 不公開 MCP 工具。它是一個 Python 函式庫和 CLI,由其他 VMware 技能使用。
| 元件 | 類型 | 描述 |
|---|---|---|
@vmware_tool | 裝飾器 | 包裝跨 8 個技能的 156+ 個 MCP 工具 |
sanitize() | 函數 | 用於 API 回應的提示注入防禦 |
AuditEngine | 類別 | 具有輪替功能的 SQLite WAL 稽核記錄器 |
PolicyEngine | 類別 | 具有熱重載功能的 YAML 規則評估器 |
vmware-audit | CLI | 用於查詢稽核軌跡的 Typer CLI |
detect_agent() | 函數 | 從環境變數推斷呼叫的 AI 代理(見下文) |
代理偵測(透明度說明)
audit.py 中的 detect_agent() 函數會檢查以下環境變數,以識別呼叫工具的 AI 代理。這僅供稽核記錄用途的唯讀檢查——不會提取或儲存任何憑證:
| 環境變數 | 偵測到的代理 | 用途 |
|---|---|---|
CLAUDE_SESSION_ID 或 CLAUDE_CODE | claude | Claude Code 工作階段 |
OPENAI_API_KEY 或 CODEX_SESSION | codex | OpenAI Codex 工作階段 |
OLLAMA_HOST | local | 本地 Ollama 模型 |
DEERFLOW_SESSION | deerflow | DeerFlow 工作階段 |
| (無符合項目) | unknown | 無法辨識的代理 |
偵測到的代理名稱僅為稽核軌跡目的儲存在 ~/.vmware/audit.db 的 agent 欄位中。不會記錄任何 API 金鑰或令牌。
疑難排解
「無法初始化稽核資料庫」警告
稽核資料庫目錄 ~/.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「資料庫已鎖定」錯誤
多個並發的技能程序可以透過 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),無網路暴露