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

:::tip{title="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).

| Service             | Rôle                                                   | Ports usuels                    |
| ------------------- | ------------------------------------------------------ | ------------------------------- |
| **crisalid-apollo** | API GraphQL de lecture du graphe                       | `4000`                          |
| **Neo4j**           | Graphe consolidé : structures, personnes, publications | `7474` (console), `7687` (Bolt) |
| **PostgreSQL**      | Bases des services (SoVisu+, moissonneur)              | `5432`                          |
| **Redis**           | Cache et files de travail                              | `6379`                          |
| **RabbitMQ**        | Bus d'événements vers le graphe                        | `5672`, `15672` (console)       |
| **Keycloak**        | Authentification 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](/projection).

:::note
**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.
:::
