VMware Policy
Avertissement : Ceci est un projet open source maintenu par la communauté et n'est pas affilié, approuvé ou sponsorisé par VMware, Inc. ou Broadcom Inc. « VMware » et « vSphere » sont des marques de commerce de Broadcom. Le code source est publiquement vérifiable sur github.com/zw008/VMware-Policy sous licence MIT.
Journalisation d'audit unifiée, application de politiques et assainissement des entrées — la couche d'infrastructure pour toute la famille de compétences MCP VMware.
Dépendance d'infrastructure : Les 8 compétences VMware dépendent de vmware-policy. Il est automatiquement installé et fournit le décorateur
@vmware_tool,sanitize(), et la base de données d'audit partagée. Famille : vmware-aiops (cycle de vie des VM), vmware-monitor (supervision en lecture seule), vmware-storage (iSCSI/vSAN), vmware-vks (Tanzu Kubernetes), vmware-nsx (réseau NSX), vmware-nsx-security (DFW/pare-feu), vmware-aria (métriques/alertes/capacité), vmware-avi (AVI/ALB/AKO). | vmware-pilot (orchestration de workflows)
Ce que fait cette compétence
| Catégorie | Composants | Nombre |
|---|---|---|
| Journalisation d'audit | AuditEngine (SQLite WAL), rotation des journaux, détection d'agent | 3 |
| Moteur de politique | règles de refus, fenêtres de maintenance, rechargement à chaud | 3 |
| Assainissement | sanitize() — défense contre les injections de prompts, suppression des caractères de contrôle | 1 |
| Décorateur | @vmware_tool — pré-vérification + exécution + post-journalisation + métadonnées | 1 |
| CLI | vmware-audit log, vmware-audit export, vmware-audit stats | 3 |
Installation rapide
uv tool install vmware-policy
vmware-audit stats # vérifier l'installation
vmware-policy est automatiquement installé en tant que dépendance de toutes les compétences VMware. L'installation manuelle n'est nécessaire que pour les requêtes d'audit autonomes.
Quand utiliser cette compétence
- Interroger la piste d'audit unifiée de toutes les compétences VMware
- Consulter les opérations refusées et les violations de politique
- Vérifier les statistiques d'audit (par compétence, par statut, par plage temporelle)
- Exporter les journaux d'audit au format JSON pour une analyse externe
- Configurer des règles de refus ou des fenêtres de maintenance
- Intégrer le décorateur
@vmware_tooldans une nouvelle compétence VMware
Cette compétence est automatiquement chargée comme dépendance — vous n'avez pas besoin de l'invoquer directement. Elle s'active lorsque :
- Une fonction d'outil d'une compétence VMware est appelée (via le décorateur
@vmware_tool) - L'utilisateur pose des questions sur les journaux d'audit, les opérations refusées ou les règles de politique
- L'utilisateur exécute des commandes CLI
vmware-audit
Compétences associées — Aiguillage des compétences
| Intention de l'utilisateur | Compétence recommandée |
|---|---|
| Cycle de vie des VM, déploiement, opérations invitées | vmware-aiops (uv tool install vmware-aiops) |
| Supervision en lecture seule, risque zéro | vmware-monitor (uv tool install vmware-monitor) |
| Stockage : iSCSI, vSAN, datastores | vmware-storage (uv tool install vmware-storage) |
| Tanzu Kubernetes (vSphere 8.x+) | vmware-vks (uv tool install vmware-vks) |
| Réseau NSX : segments, passerelles, NAT | vmware-nsx (uv tool install vmware-nsx-mgmt) |
| Sécurité NSX : règles DFW, groupes de sécurité | vmware-nsx-security (uv tool install vmware-nsx-security) |
| Aria Ops : métriques, alertes, capacité | vmware-aria (uv tool install vmware-aria) |
| Répartiteur de charge, AVI, ALB, AKO, Ingress | vmware-avi (uv tool install vmware-avi) |
| Workflows multi-étapes avec approbation | vmware-pilot |
| Requête de journal d'audit, règles de politique | vmware-policy — cette compétence |
Workflows courants
Interroger l'activité d'audit récente
- Afficher les 20 dernières entrées d'audit :
vmware-audit log --last 20 - Filtrer par compétence :
vmware-audit log --skill vmware-nsx --last 50 - Vérifier les opérations refusées :
vmware-audit log --status denied --since 2026-03-28 - Afficher les statistiques agrégées :
vmware-audit stats --days 7
Configurer des règles de politique pour la production
- Copier les règles par défaut :
cp $(python -c "import vmware_policy; print(vmware_policy.__file__.replace('__init__.py','rules_default.yaml'))") ~/.vmware/rules.yaml - Modifier
~/.vmware/rules.yaml— ajouter des règles de refus pour la production :deny: - name: no-delete-in-prod operations: ["delete_*", "cluster_delete"] environments: ["production"] reason: "Opérations destructrices bloquées en production" maintenance_window: start: "22:00" end: "06:00" - Les règles se rechargent automatiquement à chaud — aucun redémarrage nécessaire
- Vérifier :
vmware-audit log --status deniedpour voir les opérations bloquées
Exporter les journaux d'audit pour la conformité
- Exporter tous les journaux au format JSON :
vmware-audit export --format json > audit-export.json - Filtrer par compétence :
vmware-audit export --skill vmware-aiops --since 2026-01-01 - Importer dans votre SIEM ou outil de conformité
Mode d'utilisation
| Scénario | Recommandé | Pourquoi |
|---|---|---|
| Interroger les journaux d'audit | CLI | vmware-audit fournit une sortie tabulaire riche |
| Intégrer dans une compétence | API Python | from vmware_policy import vmware_tool, sanitize |
| Export automatisé de conformité | CLI | vmware-audit export --format json se dirige vers n'importe quel outil |
Référence rapide de la CLI
# Afficher les entrées d'audit récentes
vmware-audit log --last 20
vmware-audit log --skill vmware-nsx --status denied
vmware-audit log --since 2026-03-28 --tool delete_segment
# Exporter pour la conformité
vmware-audit export --format json > audit.json
vmware-audit export --skill vmware-aiops --since 2026-01-01
# Statistiques agrégées
vmware-audit stats --days 7
vmware-audit stats --days 30
Référence complète de la CLI : voir
references/cli-reference.md
API Python
from vmware_policy import vmware_tool, sanitize
# Envelopper chaque fonction d'outil MCP
@vmware_tool(risk_level="high", sensitive_params=["password"])
def delete_segment(name: str, env: str = "") -> dict:
...
# Assainir les réponses API non fiables avant de les renvoyer au LLM
clean_text = sanitize(api_response_text, max_len=500)
Outils MCP (0)
vmware-policy n'expose pas d'outils MCP. C'est une bibliothèque Python et une CLI consommées par les autres compétences VMware.
| Composant | Type | Description |
|---|---|---|
@vmware_tool | Décorateur | Enveloppe les 156+ outils MCP dans 8 compétences |
sanitize() | Fonction | Défense contre les injections de prompts pour les réponses API |
AuditEngine | Classe | Journal d'audit SQLite WAL avec rotation |
PolicyEngine | Classe | Évaluation de règles YAML avec rechargement à chaud |
vmware-audit | CLI | CLI Typer pour interroger la piste d'audit |
detect_agent() | Fonction | Déduit l'agent AI appelant à partir des variables d'environnement (voir ci-dessous) |
Détection d'agent (Note de transparence)
La fonction detect_agent() dans audit.py vérifie les variables d'environnement suivantes pour identifier quel agent AI appelle les outils. Il s'agit d'une inspection en lecture seule à des fins de journalisation d'audit — aucune information d'identification n'est extraite ou stockée :
| Variable d'environnement | Agent détecté | Objectif |
|---|---|---|
CLAUDE_SESSION_ID ou CLAUDE_CODE | claude | Session Claude Code |
OPENAI_API_KEY ou CODEX_SESSION | codex | Session OpenAI Codex |
OLLAMA_HOST | local | Modèle Ollama local |
DEERFLOW_SESSION | deerflow | Session DeerFlow |
| (aucune correspondance) | unknown | Agent non reconnu |
Le nom de l'agent détecté est stocké dans la colonne agent de ~/.vmware/audit.db à des fins de piste d'audit uniquement. Aucune clé API ou jeton n'est journalisé.
Dépannage
Avertissement « Cannot initialize audit DB »
Le répertoire de la base de données d'audit ~/.vmware/ doit être accessible en écriture. Créez-le manuellement : mkdir -p ~/.vmware && chmod 700 ~/.vmware.
Les règles de politique ne s'appliquent pas
Les règles sont chargées depuis ~/.vmware/rules.yaml. Vérifiez que le fichier existe et contient du YAML valide. Le PolicyEngine se recharge à chaud en cas de modification du fichier — aucun redémarrage nécessaire.
Le journal d'audit devient trop volumineux
Le AuditEngine effectue automatiquement une rotation à 100 Mo, en conservant les 5 archives les plus récentes. Pour un nettoyage manuel : ls ~/.vmware/audit.*.db pour voir les archives.
Exception « PolicyDenied » dans la compétence
Cela signifie qu'une règle de refus dans ~/.vmware/rules.yaml a correspondu à l'opération. Vérifiez vmware-audit log --status denied pour voir le nom de la règle et la raison. Pour contourner temporairement : VMWARE_POLICY_DISABLED=1 (toujours journalisé comme contourné).
Le décorateur ne détecte pas le nom de la compétence
Le décorateur @vmware_tool déduit le nom de la compétence à partir du chemin du module (par exemple, vmware_aiops.ops.vm_lifecycle -> aiops). Si le module ne suit pas la convention vmware_<skill>, la compétence est journalisée comme « unknown ».
Erreur SQLite « database is locked »
Plusieurs processus de compétence simultanés peuvent écrire dans le même audit.db via le mode WAL. Si les verrous persistent au-delà de 5 secondes, vérifiez la présence de processus zombies qui maintiennent le fichier de base de données.
Configuration
uv tool install vmware-policy
mkdir -p ~/.vmware
vmware-policy est automatiquement installé en tant que dépendance de toutes les compétences VMware. Le répertoire
~/.vmware/est créé automatiquement lors de la première écriture d'audit.
Guide de configuration complet, détails de sécurité et instructions d'intégration : voir
references/setup-guide.md
Sécurité
- Code source : github.com/zw008/VMware-Policy
- Contenu du fichier de configuration :
~/.vmware/rules.yamlcontient uniquement des définitions de règles, pas d'informations d'identification - Portée des données webhook : N/A — vmware-policy n'envoie pas de données en externe
- Vérification TLS : N/A — vmware-policy n'établit pas de connexions réseau
- Protection contre les injections de prompts :
sanitize()tronque à 500 caractères et supprime les caractères de contrôle C0/C1 - Privilège minimum : La base de données d'audit est locale uniquement (
~/.vmware/audit.db), aucune exposition réseau