Sécurité

Surfaces réseau : CRISalid et la frontière de la vitrine

En bref

  • La pile CRISalid (graphe Neo4j, API Apollo, bases, authentification) reste en réseau privé.
  • La vitrine ne joint aucun de ces services à l'exécution : elle est générée depuis un extrait.
  • Neo4j Community n'a pas de rôles : l'extraction tourne dans le réseau de CRISalid, avec des requêtes figées.

🗺️ Les services de la pile CRISalid

Relevés dans le code des sous-projets et sur l'instance de test de Paris-Saclay (audit, 29/10/2026).

ServiceRôlePorts usuels
crisalid-apolloAPI GraphQL de lecture du graphe4000
Neo4jGraphe consolidé : structures, personnes, publications7474 (console), 7687 (Bolt)
PostgreSQLBases des services (SoVisu+, moissonneur)5432
RedisCache et files de travail6379
RabbitMQBus d'événements vers le graphe5672, 15672 (console)
KeycloakAuthentification de SoVisu+8080

Sur l'instance de test, plusieurs de ces services étaient joignables depuis le réseau interne de l'université. Le détail n'est pas publié : il est réservé au responsable de l'instance.

🚧 La frontière de la vitrine

  1. Exposition interdite : Neo4j, PostgreSQL, Redis, RabbitMQ et les consoles d'administration ne doivent jamais être joignables depuis Internet.
  2. Aucun appel à l'exécution : la vitrine publique est un site statique. Elle lit un extrait produit en amont, jamais le graphe ni l'API Apollo depuis le navigateur ou le serveur Next.
  3. Extraction dans le réseau de CRISalid : Neo4j Community ne propose ni rôles ni droits par propriété ; un compte « lecture seule » ne peut pas être contraint techniquement. L'extraction tourne donc à côté du graphe, avec des requêtes figées, et ne sort que l'extrait filtré (liste blanche d'unités et de personnes).
  4. Aucun jeton dans le bundle : aucun jeton Keycloak ni identifiant de service ne passe par une variable NEXT_PUBLIC_*.

Le déroulé du branchement et du premier test sur les données CRISalid est dans Projection.

Action requise : démontrer par la configuration réseau (ingress, pare-feu) que les ports sensibles ne sont pas routés, avant toute mise en production de CRISalid.