ADR-0124 : SSH limité au bootstrap, exploitation par agents, opérateur et API
- Statut : accepté
- Date : 2026-10-30
- Version anglaise : en/ADR-0124-bootstrap-ssh-agents.md
Contexte
Kit, addendum 20.0, 20.2 et 20.3. Le Platform Manager installe et gère la plateforme sur une machine, plusieurs serveurs, un cluster Kubernetes existant ou plusieurs clusters répartis sur des datacenters. Les réseaux bancaires sont segmentés et refusent un SSH permanent vers chaque machine.
Décision
- SSH sert seulement à préparer une machine (bootstrap) et à la récupérer (break glass approuvé par deux personnes distinctes du demandeur, durée limitée, audité).
- Authentification par clé Ed25519 ou certificat SSH signé par une autorité approuvée. RSA seulement si la politique du client l'exige, avec une taille et des algorithmes approuvés. Mot de passe et connexion root refusés. Vérification obligatoire de la clé hôte ou du certificat hôte, jamais
StrictHostKeyChecking=no. Bastion (ProxyJump) supporté. - Compte dédié au bootstrap avec une liste blanche sudo générée par le Manager (jamais
NOPASSWD: ALL). Les accès temporaires sont retirés à la fin du bootstrap. - Après le bootstrap, le Manager parle aux agents : Node Agent Go supervisé par systemd hors Kubernetes, Cluster Agent répliqué et Platform Operator dans Kubernetes, et API de gestion du client (AWS, Azure, GCP, IBM) avec authentification native et permissions limitées.
- Les agents ouvrent une connexion sortante mTLS vers le Management Gateway : jeton d'enrôlement unique et court lié à la machine, puis certificat propre à la machine (identité SPIFFE quand elle est configurée). Les commandes sont signées, limitées dans le temps, protégées contre le rejeu, idempotentes quand c'est possible, et chacune produit un reçu vérifiable.
- Dans un cluster existant, aucun agent SSH sur les nœuds : API Kubernetes et opérateur avec un RBAC minimal. Le Node Agent en DaemonSet reste une option de diagnostic.
Conséquences
Aucun port d'administration entrant n'est ouvert sur les serveurs. Aucune clé SSH d'administration commune entre clients. Les clés privées restent dans le coffre du client : PostgreSQL ne garde que des références.
Preuves
KIT_AGENT_PLATEFORME_IA_ENTERPRISE/ADDENDUM_INFRA_HA_BACKUP_PRA.mdnavin-manager/server/src/navin_manager/hostsnavin-manager/server/src/navin_manager/infrastructurenavin-manager/agent-gonavin-manager/cluster-agentnavin-manager/server/tests/test_infra_ssh.pynavin-manager/server/tests/test_infra_api.py