285 lines
17 KiB
Markdown
285 lines
17 KiB
Markdown
# Préparation réseau — Installation DGX Spark POC en clinique
|
||
|
||
**Date** : 2026-05-28
|
||
**Destinataire** : Nicolas PORQUET — DSI externe, Hôpital privé Wallerstein, 14 Boulevard Javal, 33740 Arès
|
||
**Émetteur** : Dom Bazin — porteur projet RPA Vision V3
|
||
**Partenaire métier** : Dr Amina [Nom à confirmer] — cabinet médical DIM (Bordeaux). Contribue au volet codage médical. **Interlocuteur projet unique côté technique : Dom Bazin.**
|
||
**Objet** : Demande de pré-requis réseau et sécurité pour l'installation d'une machine NVIDIA DGX Spark dans le cadre d'un POC de 3 mois à l'Hôpital privé Wallerstein.
|
||
|
||
---
|
||
|
||
## 1. Présentation du projet (résumé non-technique)
|
||
|
||
RPA Vision V3 est une solution d'automatisation 100 % vision qui assiste les TIM (Techniciens d'Information Médicale) dans la saisie de codes diagnostiques sur Easily Assure. L'assistant **Léa** s'exécute sur le PC du TIM (Windows existant, inchangé) et délègue la compréhension visuelle de l'écran à un serveur d'inférence (le DGX Spark), installé dans une salle technique de l'établissement.
|
||
|
||
**Objectifs du POC** :
|
||
- Mesurer le gain de productivité TIM sur un périmètre pilote restreint (**≤ 5 TIM**, volume de dossiers à cadrer avec le référent métier de l'établissement)
|
||
- Valider l'ergonomie et l'acceptation utilisateur
|
||
- Vérifier l'intégration dans l'environnement IT de l'établissement
|
||
|
||
**Durée prévue** : 3 mois — possibilité de retrait à tout moment.
|
||
|
||
---
|
||
|
||
## 2. Description matérielle DGX Spark
|
||
|
||
| Élément | Spécification |
|
||
|---------|---------------|
|
||
| Modèle | NVIDIA DGX Spark (Founders Edition) |
|
||
| Format | Boîtier compact bureau (~150 × 150 × 50 mm) |
|
||
| Alimentation | 240 W typique, 300 W crête — prise C13 standard |
|
||
| Réseau | 10 GbE + Wi-Fi 7 (Wi-Fi désactivé en clinique) |
|
||
| Stockage | 4 To NVMe interne, chiffré au repos (LUKS) |
|
||
| OS | DGX OS 7 (Ubuntu 24.04 LTS ARM64) — maintenu par NVIDIA |
|
||
| Mises à jour OS | `unattended-upgrades` pour les correctifs de sécurité |
|
||
| Antivirus / EDR | Compatible ClamAV. EDR du marché [À DÉFINIR avec DSI] |
|
||
|
||
**Sécurité physique** :
|
||
- Machine à installer en salle technique fermée, accès limité.
|
||
- Étiquetage avec contact responsable (Dom Bazin).
|
||
- Pas d'accès USB en production (verrouillé via udev).
|
||
|
||
---
|
||
|
||
## 3. Description logicielle (services hébergés sur le DGX)
|
||
|
||
Tous les services tournent **en containers Docker isolés** sur le DGX. Aucune installation native côté OS hors stack NVIDIA / Docker / outils standards Ubuntu.
|
||
|
||
| Service | Container | Port interne | Exposition |
|
||
|---------|-----------|--------------|-----------|
|
||
| Reverse proxy TLS local (Caddy ou Traefik) | `proxy` | 443 | LAN clinique uniquement |
|
||
| Frontend RPA (VWB React) | `frontend` | 80 (interne) | Via reverse proxy |
|
||
| Backend RPA (Flask) | `backend` | 5002 (interne) | Via reverse proxy |
|
||
| Streaming agent (Flask SocketIO) | `streaming` | 5005 (interne) | Via reverse proxy |
|
||
| Dashboard supervision | `dashboard` | 5001 (interne) | Via reverse proxy |
|
||
| Inférence VLM (Ollama / llama-server) | `ollama` | 11434 (interne) | **Jamais exposé**, accès local containers uniquement |
|
||
|
||
**Aucun service exposé en clair sur le LAN.** Toute communication entrante passe par 443/HTTPS avec authentification (Basic Auth + Bearer token applicatif).
|
||
|
||
---
|
||
|
||
## 4. Plan réseau souhaité
|
||
|
||
```
|
||
┌─────────────────────────────┐
|
||
│ Internet (sortie filtrée) │
|
||
└──────────────┬──────────────┘
|
||
│
|
||
Pare-feu clinique
|
||
│
|
||
┌────────────────────────┴────────────────────────┐
|
||
│ │
|
||
│ LAN clinique — VLAN [À CONFIRMER] │
|
||
│ │
|
||
│ ┌──────────────────┐ ┌──────────────┐ │
|
||
│ │ Poste TIM │ HTTPS │ DGX Spark │ │
|
||
│ │ Windows + Léa │────────▶│ (headless) │ │
|
||
│ │ (existant) │ :443 │ │ │
|
||
│ └──────────────────┘ └──────────────┘ │
|
||
│ │
|
||
└─────────────────────────────────────────────────┘
|
||
```
|
||
|
||
### Pré-requis réseau demandés à la DSI
|
||
|
||
| Élément | Demande |
|
||
|---------|---------|
|
||
| Adressage | **1 IP fixe** (DHCP réservation par MAC ou statique) sur VLAN postes de travail ou VLAN dédié |
|
||
| MAC | Communiquée à l'installation (étiquette boîtier) |
|
||
| Hostname | `rpa-spark-01` (modifiable selon convention DSI) |
|
||
| DNS interne | Résolution `rpa-spark-01.[domaine.interne]` |
|
||
| Synchronisation horloge | Accès NTP (serveur clinique ou `pool.ntp.org`) |
|
||
| Découverte | Pas de mDNS / Bonjour requis |
|
||
|
||
---
|
||
|
||
## 5. Flux entrants requis (LAN clinique → DGX Spark)
|
||
|
||
| Source | Destination | Port | Protocole | Usage |
|
||
|--------|-------------|------|-----------|-------|
|
||
| Postes TIM (Léa) | DGX Spark | 443 | TCP HTTPS | Accès apps web RPA (VWB, dashboard, API streaming) |
|
||
| Postes admin clinique | DGX Spark | 22 | TCP SSH | Maintenance locale [optionnel, peut être supprimé] |
|
||
|
||
**Pas de flux entrant depuis Internet.** Le DGX n'expose aucun port public.
|
||
|
||
---
|
||
|
||
## 6. Flux sortants requis (DGX Spark → Internet)
|
||
|
||
Justification : maintenance, mises à jour, pull d'images Docker et de modèles d'IA. **Aucune donnée patient ne sort du DGX** (voir §8 Conformité).
|
||
|
||
### Whitelist FQDN demandée
|
||
|
||
| Domaine | Port | Usage |
|
||
|---------|------|-------|
|
||
| `archive.ubuntu.com`, `security.ubuntu.com` | 80, 443 | Mises à jour Ubuntu |
|
||
| `ports.ubuntu.com` | 80, 443 | Paquets Ubuntu ARM64 |
|
||
| `developer.download.nvidia.com`, `apt.nvidia.com` | 443 | Driver + CUDA NVIDIA |
|
||
| `registry-1.docker.io`, `auth.docker.io`, `index.docker.io` | 443 | Images Docker |
|
||
| `registry.ollama.ai` | 443 | Modèles d'inférence Ollama |
|
||
| `huggingface.co`, `cdn-lfs.huggingface.co` | 443 | Modèles HuggingFace (poids ML) |
|
||
| `github.com`, `objects.githubusercontent.com`, `raw.githubusercontent.com` | 443 | Code projet (déploiement / mise à jour) |
|
||
| `pypi.org`, `files.pythonhosted.org` | 443 | Dépendances Python |
|
||
| `pool.ntp.org` ou NTP clinique | 123 UDP | Synchronisation horloge |
|
||
| Résolveur DNS clinique | 53 UDP/TCP | Résolution DNS |
|
||
|
||
### Flux sortant accès admin distant (selon option choisie §7)
|
||
|
||
| Option | Domaines / IP | Port | Usage |
|
||
|--------|---------------|------|-------|
|
||
| OpenVPN clinique | Concentrateur VPN désigné par la DSI | 1194 UDP ou 443 TCP | VPN entrant Dom → réseau clinique |
|
||
| Reverse SSH bastion (repli) | IP fixe bastion Dom (à communiquer) | 22 ou 443 TCP | Tunnel SSH inversé |
|
||
| Tailscale (alternative, si DSI valide) | `*.tailscale.com`, `controlplane.tailscale.com`, `derpN.tailscale.com` | 443 TCP, 3478/41641 UDP | Mesh VPN sortant |
|
||
|
||
---
|
||
|
||
## 7. Accès administrateur distant — options à arbitrer avec la DSI
|
||
|
||
Le porteur projet (Dom Bazin) doit pouvoir intervenir sur le DGX **depuis son poste de travail externe** pour : déployer les mises à jour applicatives, diagnostiquer les incidents, ajuster les modèles d'IA. **Aucune intervention sur les données patient à distance**.
|
||
|
||
Dom Bazin utilise habituellement **OpenVPN + SSH par certificat** dans le cadre de ses interventions sur infrastructures clientes. Cette pratique s'aligne sur les standards courants en milieu hospitalier et permet une intégration directe à la politique de la DSI.
|
||
|
||
| Option | Principe | Avantage DSI | Inconvénient | Préférence Dom |
|
||
|--------|----------|--------------|--------------|----------------|
|
||
| **A. OpenVPN clinique + SSH par certificat** | Dom devient utilisateur d'un tunnel OpenVPN existant ou monté pour le POC par la DSI. Accès SSH au DGX restreint aux IP du sous-réseau VPN. Authentification SSH par clé publique RSA/Ed25519 (pas de mot de passe). | Politique maîtrisée par la DSI, traçabilité dans les logs OpenVPN + sshd, pas de tiers de confiance externe. Compatible audit ANSSI. | Charge initiale de configuration (création du compte VPN, distribution certificat, ACL pare-feu vers le DGX). | **Recommandé** — pratique habituelle de Dom, simple, conforme |
|
||
| **B. Reverse SSH tunnel via bastion** | Le DGX initie un tunnel SSH inversé vers un bastion contrôlé par Dom (clé SSH, MFA TOTP, audit en place). Aucune ouverture de flux entrant côté clinique. | Aucun flux entrant à ouvrir, isolement réseau total. | Repose sur un bastion externe (responsabilité Dom), à auditer si exigence DSI. | Repli si l'option A pose un blocage opérationnel |
|
||
| **C. Tailscale (mesh VPN WireGuard)** | Le DGX initie une connexion sortante sur 443 vers le contrôle Tailscale. Aucun port entrant ouvert. ACL stricte, MFA obligatoire. Solution citée par NVIDIA dans les playbooks DGX Spark. | Pas de port entrant, MFA, audit, granularité ACL. | Dépendance fournisseur tiers (Tailscale Inc.), nouveau dans l'environnement Dom — courbe de validation supplémentaire pour le POC. | Alternative si la DSI souhaite éviter le VPN traditionnel |
|
||
|
||
**Position Dom** : option A si Nicolas PORQUET valide la mise à disposition d'un compte OpenVPN dédié POC, sinon option B avec bastion personnel. Option C laissée à la discrétion de la DSI.
|
||
|
||
**Engagement Dom** :
|
||
- Clé SSH publique communiquée à la DSI, clé privée stockée chiffrée (passphrase + keystore matériel YubiKey si exigé)
|
||
- Session SSH limitée au compte `dom` (sudo journalisé), pas de root direct
|
||
- Activité distante journalisée et exportable sur demande DSI
|
||
- Suppression de l'accès en fin de POC ou sur demande immédiate de la DSI
|
||
|
||
---
|
||
|
||
## 8. Conformité — RGPD / HDS / certifications
|
||
|
||
### Données traitées
|
||
- Le DGX traite **uniquement en mémoire vive** des captures d'écran issues du poste TIM (éléments d'interface logiciel Easily Assure).
|
||
- **Aucun stockage permanent** des captures sur le DGX, y compris en POC. Les captures sont chargées en RAM, traitées par le pipeline VLM, et **détruites immédiatement** après la réponse au client Léa.
|
||
- Pas de copie de base de données patient sur le DGX.
|
||
- Pas de communication patient ↔ DGX. Le DGX assiste un TIM qui reste l'utilisateur unique du PMSI.
|
||
|
||
### Anonymisation
|
||
- Module `core/anonymisation/pii_blur.py` (EDS-NLP NER médical français + regex de secours) **activé par défaut** sur le pipeline VLM côté serveur. Identités et dates sont floutées avant tout traitement VLM. Le contenu clinique métier (codes, libellés) reste intact.
|
||
|
||
### Hébergement
|
||
- **100 % on-premise dans la clinique** : pas de cloud, pas de sortie de donnée patient hors LAN clinique.
|
||
- Le porteur projet ne reçoit **aucune donnée patient** en dehors de la clinique, ni en RAM ni en fichier. Les sessions de maintenance à distance portent exclusivement sur configuration, logs applicatifs et métriques techniques — jamais sur les captures écran.
|
||
|
||
### Audit / traçabilité
|
||
- Logs applicatifs conservés 90 jours sur le DGX (rotation `logrotate`), exportables sur demande DSI.
|
||
- Logs accès SSH/VPN tracés.
|
||
- Accès admin distant audité (Tailscale / VPN clinique).
|
||
|
||
### Certifications
|
||
- DGX OS 7 = Ubuntu 24.04 LTS, mises à jour de sécurité jusqu'en 2034.
|
||
- Pas de certification HDS sur la machine elle-même (POC, pas d'hébergement contractuel). Si industrialisation : hébergement en intra-clinique sous responsabilité de la DSI, ou migration chez hébergeur HDS certifié.
|
||
|
||
### DPO / contrat
|
||
- Convention POC à signer (annexe à fournir) : finalité, durée, responsable de traitement, sous-traitant, mesures de sécurité.
|
||
- Désignation des personnes habilitées à l'accès admin distant (nominatif : Dom Bazin).
|
||
|
||
---
|
||
|
||
## 9. Sécurité opérationnelle
|
||
|
||
| Mesure | Mise en œuvre |
|
||
|--------|---------------|
|
||
| Comptes locaux | 1 compte admin nominatif (`dom`), pas de root direct (sudo) |
|
||
| Authentification | Clé SSH uniquement (mots de passe SSH désactivés) |
|
||
| Pare-feu local | `ufw` activé, deny par défaut, règles explicites |
|
||
| Chiffrement disque | LUKS sur partition de données (clé sous séquestre DSI possible) |
|
||
| Mises à jour OS | `unattended-upgrades` automatique pour sécurité, redémarrage planifié hors heures TIM |
|
||
| Mises à jour appli | Push contrôlé par Dom via Git + rebuild containers, fenêtre négociée avec TIM |
|
||
| Sauvegarde config | Repo Git distant (pas de donnée patient sauvegardée hors DGX) |
|
||
| Supervision | Métriques Prometheus + alertes si dégradation |
|
||
| Plan d'arrêt | Possibilité d'arrêt à distance par DSI (kill switch via Tailscale ACL ou physiquement) |
|
||
|
||
---
|
||
|
||
## 10. Plan d'installation (J-7 → J+0)
|
||
|
||
| Jalon | Action | Acteur |
|
||
|-------|--------|--------|
|
||
| J-7 | Validation présent document par Nicolas PORQUET (DSI) | DSI |
|
||
| J-5 | Réservation IP + ouverture flux pare-feu + création compte OpenVPN POC | DSI |
|
||
| J-3 | Pré-configuration DGX hors clinique (env, containers, modèles d'IA) | Dom |
|
||
| J-1 | Livraison et installation physique en salle technique | Dom + DSI |
|
||
| J+0 | Connexion réseau, tests de bout en bout avec poste TIM pilote | Dom + DSI + TIM |
|
||
| J+1 → J+90 | POC en production limitée (≤ 5 TIM), points hebdomadaires | Dom + référent métier clinique |
|
||
|
||
---
|
||
|
||
## 11. Responsabilités
|
||
|
||
| Domaine | Responsable |
|
||
|---------|-------------|
|
||
| Hardware DGX + OS + containers RPA | Dom Bazin (porteur projet) |
|
||
| Réseau LAN, pare-feu, VLAN, DNS | Nicolas PORQUET (DSI externe) |
|
||
| Accès distant administrateur | Dom (config) + DSI (validation politique et fourniture VPN) |
|
||
| Conformité RGPD globale | DPO Hôpital Wallerstein + Dom comme sous-traitant |
|
||
| Support utilisateur TIM | Dom + référent TIM clinique |
|
||
| Volet métier codage médical | Dr Amina [Nom à confirmer] (partenaire) |
|
||
| Incident sécurité | DSI (escalade), Dom (action technique) |
|
||
|
||
---
|
||
|
||
## 12. Coordonnées
|
||
|
||
| Rôle | Nom | Contact |
|
||
|------|-----|---------|
|
||
| Porteur projet, interlocuteur unique, contact technique 24/7 | Dom Bazin | **06 70 45 30 05** — [email à compléter] |
|
||
| DSI externe Hôpital Wallerstein | Nicolas PORQUET | [contact à renseigner par DSI] |
|
||
| Partenaire métier (cabinet médical DIM, Bordeaux) | Dr Amina [Nom à confirmer] | Non impliquée dans les échanges DSI directs |
|
||
| Référent TIM clinique | [À renseigner par Hôpital Wallerstein] | — |
|
||
| DPO Hôpital Wallerstein | [À renseigner] | — |
|
||
|
||
---
|
||
|
||
## 13. Annexes (à joindre)
|
||
|
||
- A. Fiche technique DGX Spark (PDF NVIDIA)
|
||
- B. Diagramme d'architecture détaillé (data flow Léa ↔ DGX)
|
||
- C. Convention POC type (RGPD, finalité, durée, sous-traitance)
|
||
- D. Liste exhaustive des FQDN sortants (whitelist firewall)
|
||
- E. Procédure d'arrêt d'urgence
|
||
|
||
---
|
||
|
||
## Décisions
|
||
|
||
| # | Décision | Date |
|
||
|---|----------|------|
|
||
| 1 | Cible POC : Hôpital privé Wallerstein, 14 Boulevard Javal, 33740 Arès — DSI externe Nicolas PORQUET | 2026-05-28 |
|
||
| 2 | DGX déployé en salle technique clinique, headless, containers Docker, 100 % on-premise | 2026-05-28 |
|
||
| 3 | Aucun flux entrant Internet, tout sortant via whitelist FQDN | 2026-05-28 |
|
||
| 4 | Accès distant Dom : **option A privilégiée = OpenVPN clinique + SSH par certificat**, option B repli = reverse SSH bastion, option C = Tailscale si DSI le préfère | 2026-05-28 |
|
||
| 5 | Anonymisation PII activée par défaut sur le pipeline VLM en POC | 2026-05-28 |
|
||
| 6 | Captures écran traitées **uniquement en RAM**, détruites immédiatement après réponse VLM, jamais persistées sur disque | 2026-05-28 |
|
||
| 7 | Périmètre pilote ≤ 5 TIM, volume dossiers à cadrer avec référent métier | 2026-05-28 |
|
||
| 8 | Interlocuteur unique côté Dom Bazin (Amina = partenaire métier, hors échanges DSI) | 2026-05-28 |
|
||
|
||
## Questions ouvertes
|
||
|
||
- VLAN d'accueil du DGX (poste de travail / dédié / DMZ interne)
|
||
- Modalités OpenVPN : OpenVPN existant pour Wallerstein ou à mettre en place pour le POC ?
|
||
- EDR / antivirus à installer en sus (politique Nicolas PORQUET)
|
||
- Politique de séquestre de clé LUKS (clé conservée par DSI ?)
|
||
- Fenêtre d'installation physique (J-1 / J+0)
|
||
- Désignation du référent TIM clinique côté Wallerstein
|
||
- Coordonnées DPO Wallerstein pour validation convention POC RGPD
|
||
- Volume de dossiers cible par TIM par jour (cadrage avec référent métier)
|
||
- Email professionnel Dom à inscrire sur le doc final
|
||
|
||
## Sources et références techniques
|
||
|
||
- [DGX Spark connectivité et provisioning — NVIDIA Playbooks](https://deepwiki.com/NVIDIA/dgx-spark-playbooks/2.2-connecting-to-your-spark)
|
||
- [DGX OS 7 User Guide](https://docs.nvidia.com/dgx/dgx-os-7-user-guide/dgx-os-7-user-guide.pdf)
|
||
- [Tailscale architecture et conformité](https://tailscale.com/security/)
|
||
- [ANSSI — Guide d'hygiène informatique](https://cyber.gouv.fr/sites/default/files/document/guide_hygiene_informatique_anssi.pdf)
|
||
- [HDS — Référentiel ASIP Santé](https://esante.gouv.fr/labels-certifications/hds/referentiel-de-certification)
|