Skip to content

[Phase 2 — VibeSync Epic #2406] Target env:<service> pour rotation secrets fleet-wide #2410

@myia-ai-01

Description

@myia-ai-01

Epic parent: #2406 (Phase 2)

Objectif

Ajouter un target env:<service> à roosync_config pour rotation et déploiement déclaratif des secrets fleet-wide via GDrive RooSync (jamais git).

Contexte

Aujourd'hui, rotation .env = process manuel :

  • ai-01 (4 .env locaux : RSM, sk-agent stdio, sk-agent container, claude config)
  • 5 machines exécutantes (chacune avec son .env RSM + EMBEDDING_* + tokens MCP_AUTH + GitHub PATs)
  • Rotation MCP_AUTH récente : 5 dispatches manuels, validation visuelle, 1 oubli (Hermes po-2026 dû envoyer 2x)

Pas de canal sûr déclaratif. Le mandate feedback_gh_secret_set_body_direct.md (jamais pipe stdin) + JAMAIS de cles API dans git impose le canal GDrive RooSync sharedState (chiffré at-rest par MyIA Drive).

Acceptance criteria

  • roosync_config(action: "publish", targets: ["env:rsm"], version: "<v>") chiffre AES-256 + push vers $ROOSYNC_SHARED_PATH/.shared-state/env/<service>.enc
  • roosync_config(action: "apply", targets: ["env:rsm"]) télécharge, déchiffre, écrit .env local avec backup .env.bak.<timestamp>
  • Validation post-apply : restart process consommateur (target services:<name> Phase 2 sub-issue 2)
  • Audit log dans dashboard [ENV-ROTATION] : qui, quand, quel service, quelle version
  • Tests intégration : chiffrement round-trip, gestion conflits (2 publish concurrents)
  • Refuse si clé chiffrement absente (ROOSYNC_ENV_KEY env var requise)
  • Doc docs/roosync/ENV_ROTATION.md avec procédure clé maître

Implementation hints

  • Service : EnvConfigService.ts
  • Chiffrement : crypto.createCipheriv('aes-256-gcm', ...) Node.js natif (pas de dep externe)
  • Clé maître stockée hors RooSync : variable env ROOSYNC_ENV_KEY provisionnée à l'install machine (pré-flight check)
  • Pas de fichier .env.bak.* poussé dans git (vérifier .gitignore)
  • Lecture : limiter aux services connus (allowlist ["rsm", "sk-agent", "embedding", "mcp-auth"])

Out of scope

  • Provisioning initial clé maître (manual, one-shot)
  • GitHub PATs rotation (gh CLI propre flow)
  • Rotation automatique calendaire (Phase 3+)

Security

Critique : ce target manipule des secrets. Review obligatoire user + tests adversariaux avant merge.

Metadata

Metadata

Assignees

Labels

MCPMCP server related issuesauthenticationAuthentication and token issuesenhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions