Vault Consolidation — 2026-05-20¶
Actions effectuees¶
1. Consolidation kv/api/ -> kv/app/ (canonical)¶
kv/api/ etait le legacy d'Ansible, kv/app/ est lu par VaultService au runtime. Les valeurs divergeaient (passwords differents pour DB, JWT, encryption).
- Ansible
defaults/main.yml: lookups migres dekv/data/api/*verskv/data/app/* - Ansible
api-secrets.yml: provisioning migre verskv/app/* - Ansible
blockchain.yml: lookups migres verskv/data/app/blockchain kv/api/*(4 chemins) supprimes dans Vault
2. CloudHSM — reference morte corrigee¶
kv/cloudhsm/credentials n'existait pas (404). Ansible defaults pointait dessus. Migre vers kv/ci/cloudhsm:pin (format username:password). Variable Ansible simplifiee : cloudhsm_pin au lieu de cloudhsm_cu_username + cloudhsm_cu_password.
3. BLOCKCHAIN_KMS_KEY_ID¶
Manquait dans kv/app/blockchain (present seulement dans le legacy kv/api/blockchain). Ajoute dans kv/app/blockchain.
4. kv/smtp/infomaniak provisionne¶
Structure creee avec placeholder (pass=CHANGE_ME). VaultService.getSmtpCredentials() ne retournera plus 404. ACTION REQUISE : mettre le vrai password SMTP Infomaniak.
5. Doublons env.j2 supprimes¶
REDIS_URL: supprime (pas lu par le code backend)BULLMQ_REDIS_HOST/PORT: supprime (pas lu par le code backend)CLOUDHSM_USER: supprime (redondant avec CLOUDHSM_PIN)- Section SMTP commentee : remplacee par note "lu depuis Vault"
6. Consolidation HSM — NON FAITE (a evaluer)¶
kv/hsm/cloudhsm et kv/ci/cloudhsm ont des AWS credentials differentes. - kv/hsm/cloudhsm : lu par VaultService.getCloudHsmCredentials() (runtime) - kv/ci/cloudhsm : lu par le pipeline CI (tests integration) - Les AWS keys divergent (comptes/roles IAM differents ?)
Decision : garder les deux pour l'instant. A consolider quand on clarifie pourquoi les credentials AWS sont differentes.
Dette restante — secrets encore dans .env¶
Ces services lisent les secrets directement depuis process.env / configService.get() au lieu de passer par VaultService/ports hexagonaux. Tant qu'ils ne sont pas migres, les secrets doivent rester dans le .env :
| Service | Variable(s) | Raison |
|---|---|---|
data-source.ts | DATABASE_URL, DB_* | Migrations CLI TypeORM |
parse-database-url.ts | DATABASE_URL, DATABASE_URL_APP, DB_* | Utilitaire utilise partout |
backup-orchestrator.service.ts | DATABASE_URL | pg_dump direct |
backup-restoration.service.ts | STAGING_DATABASE_URL | pg_restore |
backup-s3.service.ts | BACKUP_AWS_ACCESS_KEY_ID/SECRET | IAM backup dedied |
bulk-export.processor.ts | S3_ACCESS_KEY_ID/SECRET | S3 multipart |
s3-multipart.adapter.ts | S3_ACCESS_KEY_ID/SECRET | S3 upload |
security.config.ts | JWT_SECRET | Config loader |
email.config.ts | SMTP_USER/PASS | Config loader |
storage.config.ts | S3_ACCESS_KEY_ID/SECRET | Config loader |
hsm.config.ts | CLOUDHSM_PIN, CLOUDHSM_AWS_* | Config loader |
Migration cible : chaque service ci-dessus devrait injecter un port hexagonal au lieu de lire process.env. Les config loaders (security.config.ts, email.config.ts, etc.) devraient deleguer au VaultService.
Policies Vault mises a jour¶
probatiovault-app-dev (token VPS /root/.vault-token)¶
Ajoute : - kv/data/ci/gitlab-api (read) — role gitlab_runner lit le token API pour MAJ tags - kv/data/ci/cloudhsm (read) — Ansible lit le PIN depuis ce chemin
gitlab-ci-cloudhsm (JWT CI pipeline)¶
Corrige : - kv/data/api/blockchain → kv/data/app/blockchain (chemin canonical)
kv/hsm/cloudhsm — nettoyage dead data¶
Supprime cluster_id et hsm_ip (jamais lus par le code, devenaient obsoletes a chaque recreation HSM).
Backup¶
Backup complet de tous les chemins Vault avant modifications : .vault-backup-2026-05-20.json (gitignore)