3.5 KiB
Rotation des secrets — inventaire et plan (établi 18/07/2026, à exécuter au retour)
FENÊTRE D'EXÉCUTION
NAS en arrêt programmé 16:30 → 01:30 (coupures Sfax). Toute session du soir est impossible. Créneau utile : 01:30–16:30, matinée de préférence. Prévoir 45–60 min.
A. ROTATIONS OBLIGATOIRES (secrets exposés en clair le 18/07/2026)
A1. Clé provider OpenCode — PRIORITÉ 1
Exposée dans un traceback de session. C'est la clé qui porte le budget 10 $/mois. Portée réelle (vérifiée par empreinte SHA-256, valeurs jamais affichées) — la MÊME valeur sert à :
| Emplacement | Variable / champ |
|---|---|
| Bifrost config.db | provider opencode, clé opencode-1 |
/volume1/docker/hermes-platform/.env |
BIFROST_OPENCODE_KEY |
container family-help |
OPENCODE_API_KEY (appel direct, hors Bifrost) |
Procédure : générer la nouvelle clé sur OpenCode → mettre à jour .env → mettre à jour la clé
provider dans Bifrost (UI ou config.json au boot, cf. piège de persistance) → recréer family-help
→ révoquer l'ancienne → tester un appel par Bifrost et un appel family-help.
A2. Token Cloudflare Workers AI — PRIORITÉ 1
Dans /volume1/docker/redaction-pro/nginx.conf, bloc location /api/cf/ (en-tête Authorization).
Backup existant : nginx.conf.bak_vk_20260718 — contient l'ancien token, à supprimer après rotation.
Procédure : nouveau token côté Cloudflare → éditer nginx.conf (via container alpine, cf. piège
permissions) → docker restart redaction-pro → tester → révoquer l'ancien → purger le .bak.
B. ANOMALIES DÉCOUVERTES — à corriger pendant la même fenêtre
B1. Secrets partagés entre sphères (violation de la règle d'étanchéité)
| Container | Variable | Porte en réalité la valeur de |
|---|---|---|
| hermes-agent-perso | TRILIUM_TOKEN_PERSO |
TRILIUM_TOKEN_TT (sphère TT !) |
| hermes-agent-perso | PAPERLESS_TOKEN_PERSO |
PAPERLESS_TOKEN_NYORA |
| gsparc-mezzouna-api | BASEROW_TOKEN |
BASEROW_TOKEN_NYORA |
| gsparc-mezzouna-api | VISION_API_KEY |
HERMES_TT_OPENCODE_KEY |
| family-help | TELEGRAM_BOT_TOKEN |
HERMES_PERSO_TELEGRAM_TOKEN |
| Conséquence : la sphère perso détient un accès TT. Générer des tokens distincts par sphère. |
B2. Redondance interne (non bloquant, à assainir)
Dans les 3 Hermes, OPENAI_API_KEY, NVIDIA_API_KEY et CUSTOM_API_KEY pointent tous sur la même
valeur HERMES_<sphère>_NVIDIA_KEY. Trois noms, un secret : une rotation manquée en laisse deux vivants.
B3. Permissions
/volume1/docker/hermes-platform/.env est en 777. Cible 640 root:users — vérifier d'abord
quels containers le lisent et sous quel uid (1026/100) avant de restreindre.
B4. Token Gitea en clair dans un remote git
Dépôt nabil-brain : URL remote de la forme https://bolbol:<token>@gitea.bolbol.tn.
Roter le token et réécrire le remote (credential helper ou SSH).
C. À NE PAS TOUCHER
Les 13 clés virtuelles Bifrost vk-* créées le 18/07 ne sont pas compromises (jamais affichées,
vérification par empreinte uniquement). Aucune rotation nécessaire.
D. ORDRE D'EXÉCUTION RECOMMANDÉ
- A1 OpenCode (budget en jeu) — 2. A2 Cloudflare — 3. Vérifier logs Bifrost : plus aucun 401 nouveau lié à la rotation — 4. B1 séparation des sphères — 5. B3 permissions — 6. B4 remote git. Après chaque rotation : tester AVANT de révoquer l'ancienne clé, et ne jamais afficher une valeur (vérification par longueur ou empreinte).