Aller au contenu principal

ADR-0162 : Sauvegarde et PRA, centre de configuration et liens profonds dans l'espace Platform Manager du portail

Contexte​

L'architecture des interfaces (A4.2, B5.1, B5.2) demande dans l'espace Platform Manager un centre de configuration, un écran Sauvegarde et PRA (politiques, travaux, plans de restauration avec approbations, plans de PRA avec dernier exercice, RTO et RPO observés) et des liens profonds vers les consoles d'exploitation (Opik, Grafana, Keycloak, LiteLLM, OpenSearch). Le pont du Control Plane (ADR-0128) ne relayait que la synthèse, les clusters, les services, les nœuds et les opérations ; aucune route n'exposait l'adresse de la console du Manager.

Un test contre un vrai Manager a montré un défaut : sous délégation X-NM-On-Behalf-Of, Principal.user_id restait le compte de service du pont. La règle « une autre personne approuve » des restaurations et des exercices de PRA comparait donc toujours le compte de service à lui-même : toute approbation venue du portail était refusée comme auto-approbation.

Décision​

  • Le domaine eai.domains.platform_manager relaie, avec l'identité de l'utilisateur du portail, les lectures du Backup & Recovery Manager (/backup/plans avec les alertes de retard ou d'échec, /backup/jobs, /backup/backups, /backup/restores, /dr/plans, /dr/exercises), la planification et l'approbation d'une restauration, la demande et l'approbation d'un exercice de PRA. Chaque écriture est auditée dans la chaîne du Control Plane (autorisée ou refusée). L'exécution d'une restauration approuvée, la clôture d'un exercice et une vraie bascule restent dans la console du Manager.
  • Le centre de configuration du portail est en lecture : configuration courante d'un service (valeurs secrètes masquées par le Manager) et historique des versions. La modification, l'aperçu et l'application progressive restent dans la console du Manager, avec sa validation.
  • GET /v1/platform-manager/console donne l'adresse de base de la console du Manager (EAI_PLATFORM_MANAGER_CONSOLE_URL, sinon EAI_PLATFORM_MANAGER_URL) et celles des consoles d'exploitation (EAI_OPIK_UI_URL, EAI_GRAFANA_URL, EAI_KEYCLOAK_CONSOLE_URL, EAI_LITELLM_UI_URL, EAI_OPENSEARCH_DASHBOARDS_URL). Une adresse qui n'est pas en https ou qui porte des identifiants n'est jamais renvoyée ; la réponse dit quel réglage manque ou pourquoi il est refusé. La route n'appelle pas le Manager et ne renvoie aucun secret.
  • Dans le Manager, Principal.acting_user_id désigne la personne derrière l'appel (l'utilisateur délégué, sinon l'appelant). Les règles de séparation des tâches des restaurations et du PRA comparent cette personne.

Conséquences​

Le portail affiche la sauvegarde et le PRA réels, avec les deux approbateurs distincts du demandeur exigés par le Manager. Un exploitant sans console Manager configurée voit un texte honnête au lieu d'un lien mort. Les colonnes des écrans de l'espace sont vérifiées contre les réponses réelles du pont (portal/tests/fixtures/platform-manager-live.json).

Preuves​

services/control-plane/tests/test_platform_manager_backup.py (vrai Manager : services/control-plane/tests/fixtures/platform_manager_backup_server.py), portal/tests/platform-manager.test.ts, navin-manager/server/tests/test_backup_recovery.py, test_backup_dr_extended.py.

remarque

Depuis, l'écran Sauvegarde et PRA du portail a été retiré : la sauvegarde, le PRA, la configuration et les autres écrans d'exploitation se gèrent dans la console du Navin Manager (bouton de la barre de navigation), et le coffre-fort IT n'est plus que dans cette console : le portail n'a plus d'espace Platform Manager (portal/src/screens/registry.tsx). Les routes du pont décrites ici restent publiées ; portal/tests/api-conformance.test.ts les classe parmi les routes traitées dans la console du Manager.