Passer au contenu principal

SecretRefs Vault

Le plugin Vault intégré permet à OpenClaw de résoudre les SecretRefs exec depuis HashiCorp Vault au démarrage du Gateway et lors des rechargements. OpenClaw stocke les références Vault dans la configuration, conserve les valeurs résolues dans l’instantané des secrets en mémoire et ne réécrit pas les clés API résolues dans openclaw.json. Utilisez cette fonctionnalité si vous exécutez déjà Vault ou souhaitez conserver les clés des fournisseurs de modèles hors des fichiers de configuration d’OpenClaw. Pour le modèle d’exécution des SecretRefs, consultez Gestion des secrets.

Avant de commencer

Vous avez besoin des éléments suivants :
  • OpenClaw avec le plugin vault intégré disponible
  • un serveur Vault accessible
  • une authentification Vault capable de produire un jeton client disposant d’un accès en lecture aux chemins de secrets qu’OpenClaw doit résoudre
  • l’environnement qui démarre le Gateway doit inclure VAULT_ADDR et soit VAULT_TOKEN, soit OPENCLAW_VAULT_AUTH_METHOD=token_file avec VAULT_TOKEN_FILE, soit une connexion JWT/Kubernetes configurée
Le résolveur communique avec Vault par HTTP depuis Node. Le Gateway n’a pas besoin de la CLI Vault pour résoudre les SecretRefs. Activez le plugin intégré avant d’exécuter les commandes openclaw vault :

Stocker une clé de fournisseur dans Vault

Par défaut, OpenClaw utilise KV v2 monté sur secret, conformément aux exemples du serveur de développement Vault. Pour un environnement Vault de production, définissez OPENCLAW_VAULT_KV_MOUNT sur le chemin de montage KV réel avant de créer des identifiants SecretRef. Avec les valeurs par défaut d’OpenClaw, cet identifiant SecretRef :
lit ce champ Vault :
Vous pouvez notamment le créer avec la CLI Vault comme suit :
Utilisez pour OpenClaw un jeton client à portée limitée, et non un jeton racine. Pour l’organisation KV v2 par défaut, une stratégie minimale destinée aux clés des fournisseurs de modèles ressemble à ceci :

Rendre Vault accessible au Gateway

Pour un Gateway local non conteneurisé, exportez les paramètres Vault dans le même interpréteur de commandes que celui qui démarre OpenClaw. La méthode d’authentification par défaut lit un jeton client Vault depuis VAULT_TOKEN :
Si Vault Agent écrit un fichier récepteur de jeton, utilisez l’authentification par fichier de jeton :
Pour un serveur Vault signé par une autorité de certification privée, installez cette autorité dans le magasin de certificats de confiance de l’hôte et activez la confiance système de Node :
Vous pouvez également fournir directement un ensemble de certificats PEM :
Ces variables doivent être présentes au démarrage d’OpenClaw. Le plugin Vault les transmet à son processus de résolution. Pour une authentification JWT non interactive, utilisez un fichier JWT de charge de travail et un rôle Vault de type jwt :
Le fichier JWT doit contenir un jeton de charge de travail projeté, par exemple un jeton de compte de service Kubernetes dont l’audience est acceptée par le rôle Vault. La connexion OIDC interactive par navigateur est utile aux personnes, mais l’exécution du Gateway nécessite une connexion JWT non interactive ou un fichier de jeton. Pour la méthode d’authentification Kubernetes de Vault, utilisez kubernetes. Elle est destinée aux Gateways exécutés sous forme de Pods ; le montage par défaut est kubernetes et le fichier JWT par défaut correspond au chemin standard du jeton du compte de service :
Définissez OPENCLAW_VAULT_AUTH_MOUNT uniquement lorsque l’authentification Kubernetes est montée dans Vault ailleurs que sous auth/kubernetes. Définissez OPENCLAW_VAULT_JWT_FILE uniquement lorsque le jeton du compte de service est projeté dans un chemin personnalisé. Paramètres facultatifs :
Vérifiez ce qui est accessible depuis l’interpréteur de commandes actuel :
Lorsque plusieurs fournisseurs de secrets adossés à Vault sont configurés, sélectionnez-en un par alias :
openclaw vault status n’affiche jamais VAULT_TOKEN ; la commande indique uniquement si le jeton, le fichier de jeton et le fichier JWT sont définis.
Si le Gateway s’exécute en tant que service, LaunchAgent, unité systemd, tâche planifiée ou conteneur, cet environnement d’exécution doit recevoir les mêmes variables Vault. Définir des variables uniquement dans un interpréteur de commandes interactif ne valide que cet interpréteur, et non le Gateway déjà en cours d’exécution.

Générer et appliquer un plan SecretRef

Créez un plan qui associe à Vault la clé API du fournisseur de modèles OpenRouter :
Appliquez et vérifiez le plan :
Utilisez --allow-exec, car le plugin Vault effectue la résolution par l’intermédiaire d’un fournisseur SecretRef exec géré par OpenClaw. Si le Gateway n’est pas encore en cours d’exécution, démarrez-le normalement après avoir appliqué le plan au lieu d’exécuter openclaw secrets reload.

Configurer davantage de clés de fournisseurs

Raccourcis intégrés :
Plusieurs clés de fournisseurs dans un même plan :
Pour les fournisseurs intégrés dépourvus de raccourcis, ainsi que les fournisseurs de modèles personnalisés ou compatibles avec OpenAI déjà configurés, utilisez --provider-key :
Chaque option --provider-key <provider=id> écrit une SecretRef dans models.providers.<provider>.apiKey. Pour les fournisseurs personnalisés, elle ne crée pas les paramètres baseUrl, api ou models du fournisseur ; configurez-les d’abord. Utilisez --target <path=id> pour tout chemin cible SecretRef connu :
Les chemins cibles sans préfixe s’appliquent à openclaw.json. Utilisez auth-profiles:<agentId>:<path> pour les cibles existantes dans auth-profiles.json. Le chemin cible doit être une cible SecretRef enregistrée dans OpenClaw. La commande de configuration ne crée pas de secrets nommés arbitraires dans OpenClaw ; Vault reste le magasin de secrets et OpenClaw stocke les SecretRefs uniquement dans les champs de configuration pris en charge.

Format des identifiants SecretRef

Les identifiants SecretRef Vault suivent cette convention :
Exemples :
Identifiant SecretRefLecture Vault KV v2 par défautChamp renvoyé
providers/openrouter/apiKeysecret/data/providers/openrouterapiKey
providers/openai/apiKeysecret/data/providers/openaiapiKey
teams/agent-prod/openroutersecret/data/teams/agent-prodopenrouter
Le champ Vault renvoyé doit être une chaîne de caractères. Pour KV v1, définissez :
providers/openrouter/apiKey lit alors :

Ce qu’OpenClaw stocke

L’application d’un plan de configuration Vault stocke un fournisseur géré par le plugin :
Les champs d’identifiants pointent vers ce fournisseur :
La valeur résolue réside uniquement dans l’instantané actif des secrets de l’exécution.

Conteneurs et déploiements gérés

Les Gateways conteneurisés utilisent toujours le même plugin et la même configuration SecretRef. Le conteneur doit recevoir :
  • VAULT_ADDR
  • une source d’authentification :
    • VAULT_TOKEN
    • OPENCLAW_VAULT_AUTH_METHOD=token_file avec VAULT_TOKEN_FILE
    • OPENCLAW_VAULT_AUTH_METHOD=jwt avec OPENCLAW_VAULT_AUTH_MOUNT, OPENCLAW_VAULT_AUTH_ROLE et OPENCLAW_VAULT_JWT_FILE
    • OPENCLAW_VAULT_AUTH_METHOD=kubernetes avec OPENCLAW_VAULT_AUTH_ROLE ; vous pouvez éventuellement remplacer OPENCLAW_VAULT_AUTH_MOUNT ou OPENCLAW_VAULT_JWT_FILE
  • les paramètres facultatifs VAULT_NAMESPACE, OPENCLAW_VAULT_KV_MOUNT et OPENCLAW_VAULT_KV_VERSION
Avec Kubernetes, privilégiez OPENCLAW_VAULT_AUTH_METHOD=kubernetes lorsque l’authentification Kubernetes de Vault est configurée pour le cluster. Utilisez OPENCLAW_VAULT_AUTH_METHOD=jwt uniquement lorsque Vault est configuré pour traiter le cluster comme un émetteur JWT/OIDC générique. Les deux options sont préférables à un jeton Vault à longue durée de vie dans un Secret Kubernetes. Les déploiements avec conteneur compagnon ou injecteur Vault Agent peuvent utiliser token_file à la place. Pour les configurations Vault mutualisées, conservez le routage des locataires dans la stratégie Vault et la configuration du déploiement. OpenClaw n’impose aucun montage, rôle ou chemin fixe : chaque environnement Gateway peut définir ses propres valeurs OPENCLAW_VAULT_KV_MOUNT, OPENCLAW_VAULT_AUTH_ROLE et identifiants SecretRef. Si un Gateway partagé doit résoudre simultanément différents utilisateurs Vault, utilisez des fournisseurs exec configurés manuellement qui encapsulent des environnements d’authentification distincts, ou répartissez les locataires entre plusieurs environnements Gateway dotés d’environnements Vault séparés.

Ressources connexes