Passer au contenu principal

Cloud souverain santé HDS : le guide du DSI pour héberger des données médicales en conformité

Par Cloud Inspire · 16 mai 2026 · 1 min de lecture

HDSsantécloud souverainRGPDdonnées médicalesDSIFrench

Le secteur santé est le plus ciblé par les cyberattaques en France — 33 % des incidents signalés à l’ANSSI en 2025 concernent des établissements de santé. Et pour cause : un dossier médical vaut 50 fois plus qu’une carte bancaire sur le marché noir. Pour les DSI hospitaliers et des entreprises de santé, le défi est double : protéger des données ultra-sensibles tout en les rendant accessibles aux soignants 24h/24.

La certification HDS (Hébergeur de Données de Santé), obligatoire depuis 2021 pour tout hébergement de données médicales en France, rajoute une couche de contraintes techniques et organisationnelles. Le cloud souverain avec certification HDS est la seule réponse qui combine sécurité, conformité et performance.

Ce guide vous explique comment déployer un cloud privé HDS, héberger des données médicales en conformité, et satisfaire les exigences RGPD, HDS et NIS2 simultanément.


Pourquoi le cloud souverain santé est un enjeu critique

Les chiffres du secteur santé

StatistiqueSource
33 % des incidents cyber concernent la santéANSSI, 2025
Un dossier médical vaut 50x une carte bancaireMcAfee
67 % des hôpitaux français ont subi une cyberattaqueHCSP, 2024
Coût moyen d’une breach santé : 10,93 M$IBM, 2024
Temps moyen de détection d’une breach santé : 259 joursIBM
Seulement 24 % des établissements ont un plan de réponse formaliséANSSI

Les 5 obligations légales du DSI santé

ObligationTexteConséquence du non-respect
Héberger en HDSCode de la santé publique, Art. L.1111-875 000 € d’amende + 5 ans de prison
Protéger les données médicalesRGPD, Art. 9 (données sensibles)4 % du CA ou 20 M€
Notifier les breachesRGPD, Art. 33Sanction CNIL + perte de confiance
Assurer la disponibilitéNIS2, Art. 2110 M€ ou 2 % du CA
Sécuriser les réseauxNIS2 (hôpitaux = entités essentielles)10 M€ ou 2 % du CA

La santé cumule les réglementations : RGPD (données sensibles), HDS (hébergement certifié), NIS2 (entité essentielle), et le Code de la santé publique. Le DSI doit satisfaire toutes ces exigences simultanément.


La certification HDS : ce que le DSI doit savoir

Qu’est-ce que la certification HDS ?

La certification HDS (Hébergeur de Données de Santé) est une obligation légale depuis la loi du 24 janvier 2019. Tout hébergement de données de santé en France doit être certifié HDS, que l’hébergeur soit français ou étranger.

Les 6 exigences clés de la certification HDS

Exigence HDSMise en œuvre technique
Localisation des donnéesDonnées hébergées en France ou dans l’EEE
ConfidentialitéChiffrement AES-256 au repos et TLS 1.3 en transit
DisponibilitéSLA 99,9 %, PRA/PRA testé annuellement
TraçabilitéAudit logging de chaque accès aux données de santé
RéversibilitéPossibilité de récupérer ses données dans un format ouvert
Sous-traitanceTout sous-traitant doit aussi être certifié HDS

Cloud souverain vs cloud public : comparaison santé

CritèreCloud public (AWS/Azure)Cloud souverain HDS
LocalisationRégion EU (mais données copiables aux USA via CLOUD Act)France métropolitaine
Certification HDSOui, mais portée limitéeComplète (infrastructure + services)
CLOUD ActDonnées accessibles aux autorités US par le CLOUD ActAucune exposition au CLOUD Act
RGPDConforme, mais transferts indirects possiblesConforme, données en France
RéversibilitéFormats propriétaires, extraction coûteuseFormats ouverts, extraction immédiate
Audit de sécuritéRapports de audits (SOC2) non publicsAudit complet transparent
Coût (5 ans)Croissant (pay-as-you-go)Fixe (infrastructure propre)
Coût estimé 50 VMs/5 ans800 K€ – 1,2 M€250 K€ – 350 K€

Le cloud public certifie HDS, mais le CLOUD Act américain permet aux autorités US d’accéder aux données hébergées en Europe. Pour un hôpital français ou une entreprise de santé, ce risque juridique est inacceptable.


Architecture cloud souverain HDS

Vue d’ensemble

┌─────────────────────────────────────────────────────────────┐
│                    ZONE DE SAISIE                           │
│  (Données avant traitement — hors périmètre HDS)           │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐   │
│  │ Terminal │  │ Terminal │  │ Logiciel │  │ App Mobile│  │
│  │ médical  │  │ infirmier│  │ métier   │  │ patient   │  │
│  └────┬─────┘  └────┬─────┘  └────┬─────┘  └────┬─────┘  │
└───────┼──────────────┼──────────────┼──────────────┼──────┘
        │              │              │              │
        └──────────────┴──────────────┴──────────────┘
                              │ HTTPS (TLS 1.3)
┌─────────────────────────────▼──────────────────────────────┐
│                   EDGE / WAF                                │
│  ┌─────────────┐  ┌──────────────┐  ┌───────────────┐    │
│  │   Traefik    │  │ Coraza WAF   │  │ Rate limiting  │    │
│  │ Terminaison  │  │ OWASP CRS    │  │ 100 req/min   │    │
│  │   TLS 1.3    │  │ Anti-injection│ │  Anti-brute   │    │
│  └─────────────┘  └──────────────┘  └───────────────┘    │
└─────────────────────────────┬──────────────────────────────┘

┌─────────────────────────────▼──────────────────────────────┐
│                 ZONE HDS (Données de santé)                 │
│                    🔒 CHIFFRÉE · AUDITÉE 🔒                │
│                                                             │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐  │
│  │ Keycloak │  │ Portail  │  │  API     │  │ DMP      │  │
│  │ Auth MFA │  │ Patient  │  │ Gateway  │  │ Connecteur│  │
│  └──────────┘  └──────────┘  └──────────┘  └──────────┘  │
│                                                             │
│  ┌──────────────────┐  ┌──────────────────────────┐       │
│  │ PostgreSQL       │  │ Object Storage (MinIO)   │       │
│  │ Chiffrement AES  │  │ Chiffrement AES-256      │       │
│  │ Audit logging    │  │ Versioning + immuable   │       │
│  └──────────────────┘  └──────────────────────────┘       │
│                                                             │
│  ┌──────────────────┐  ┌──────────────────────────┐       │
│  │ Grafana          │  │ Wazuh SIEM               │       │
│  │ Dashboards       │  │ Détection d'intrusion     │       │
│  │ Alertes santé    │  │ Audit HDS                 │       │
│  └──────────────────┘  └──────────────────────────┘       │
└─────────────────────────────────────────────────────────────┘

Chiffrement : la base de la confiance santé

DonnéeAu reposEn transitEn utilisation
Dossiers médicauxAES-256 (PostgreSQL TDE)TLS 1.3Application-level encryption
Images médicales (DICOM)AES-256 (MinIO SSE)TLS 1.3Chiffrement sélectif par zone
Logs d’accèsAES-256 (Loki)TLS 1.3Pas de déchiffrement nécessaire
SauvegardesAES-256 (Borg + rotation)TLS 1.3 + SSHChiffrement de bout en bout

Règle HDS : les données de santé sont chiffrées à chaque couche. Pas de clé unique, pas de clé stockée avec les données. Le chiffrement est géré par HashiCorp Vault avec rotation automatique tous les 90 jours.


Les 5 composants critiques du cloud HDS

1. Keycloak : authentification MFA pour les soignants

Le personnel soignant se connecte une fois (SSO) et accède à toutes les applications avec un seul mot de passe + MFA.

# Keycloak — Configuration spécifique santé
realm: health
  authentication:
    - type: password
    - type: totp        # TOTP (app mobile)
    - type: webauthn     # Clé YubiKey pour les administrateurs
  
  # Session courte — exigence HDS
  session:
    max_duration: 8h     # Durée max d'une session
    idle_timeout: 30min   # Déconnexion après 30 min d'inactivité
    
  # Politique de mot de passe — niveau santé
  password_policy:
    min_length: 14
    uppercase: 1
    lowercase: 1
    digits: 1
    special: 1
    history: 12
    max_age: 90d

Pourquoi le MFA est obligatoire en santé : un dossier médical volé permet l’usurpation d’identité, la fraude à l’assurance, et le chantage. Le MFA réduit le risque de compromission par mot de passe de 99,9 % (Microsoft).

2. PostgreSQL chiffré : la base de données HDS

# PostgreSQL — Configuration HDS

# Chiffrement au repos
ssl = on
ssl_cert_file = '/etc/postgresql/server.crt'
ssl_key_file = '/etc/postgresql/server.key'
ssl_min_protocol = 'TLSv1.3'

# Audit logging — obligatoire HDS
log_connections = on
log_disconnections = on
log_statement = 'all'           # Journaliser TOUTES les requêtes
log_duration = on
log_line_prefix = '%t [%p] %u@%d '  # Timestamp, PID, utilisateur, base

# Sécurité
password_encryption = scram-sha-256
max_connections = 200

Exigence HDS : chaque accès à une donnée de santé doit être tracé. Le log_statement = 'all' garantit que chaque SELECT, INSERT, UPDATE sur les données médicales est journalisé avec l’utilisateur, l’horodatage et la requête.

3. Object Storage (MinIO) : images médicales DICOM

# MinIO — Stockage images médicales

# Chiffrement au repos (SSE-S3 avec Vault)
server-side-encryption:
  enabled: true
  type: sse-s3
  key-management: vault

# Rétention légale (10 ans minimum pour les données médicales)
lifecycle:
  - rule: "retention-medicale"
    status: enabled
    expiration: 3650d    # 10 ans
    noncurrent-version-expiration: 3650d

# Immuabilité (WORM — Write Once Read Many)
object-lock:
  enabled: true
  mode: compliance
  retention-duration: 3650d  # 10 ans

# Versionning
versioning: enabled

Immuabilité : les données médicales ne peuvent être ni modifiées ni supprimées pendant 10 ans. C’est une exigence légale (Code de la santé publique) et une protection contre les ransomwares.

4. Wazuh SIEM : surveillance en temps réel

# Wazuh — Règles spécifiques santé

rules:
  # Détection d'accès anormal aux dossiers médicaux
  - id: 100001
    level: 12
    description: "Accès médical inhabituel : plus de 50 dossiers en 5 minutes"
    condition:
      - field: "audit.module"
        value: "postgresql"
      - field: "audit.statement"
        value: "SELECT"
      - field: "audit.count_5min"
        value: ">50"
  
  # Détection de tentative d'exfiltration
  - id: 100002
    level: 14
    description: "Tentative d'exfiltration de données médicales"
    condition:
      - field: "audit.module"
        value: "minio"
      - field: "audit.action"
        value: "download"
      - field: "audit.volume_mb"
        value: ">100"
  
  # Détection de connexion hors horaire
  - id: 100003
    level: 10
    description: "Connexion aux données de santé en dehors des heures de service"
    condition:
      - field: "audit.module"
        value: "keycloak"
      - field: "audit.hour"
        value: "NOT_IN 08:00-20:00"
      - field: "audit.day"
        value: "NOT_IN mon-fri"

5. Grafana : dashboards de conformité HDS

DashboardMétriquesAlerte
Accès données médicalesAccès par utilisateur, par service, par période> 50 dossiers/5 min → investigation
SécuritéTentatives d’intrusion, auth failures, MFA bypass> 3 auth failures/15 min → blocage
DisponibilitéUptime SLA, latence, stockage< 99,9 % → incident
Conformité HDSAudit trail complet, rétention, chiffrementLog manquant → alerte critique
RGPDAccès par finalité, demandes d’effacement, DPO notificationsAccès sans justification → violation

Conformité croisée : HDS × RGPD × NIS2

Matrice de conformité

ExigenceHDSRGPDNIS2Mise en œuvre
Chiffrement au repos✓ Art. 32AES-256 (PostgreSQL TDE, MinIO SSE)
Chiffrement en transit✓ Art. 32TLS 1.3 partout
Authentification forte✓ Art. 32✓ Art. 21Keycloak MFA
Audit trail✓ Art. 30✓ Art. 21Wazuh + PostgreSQL audit logging
Localisation France✓ Art. 44Data center en France métropolitaine
Droit d’accès✓ Art. 15API dédiée + DPO portal
Droit d’effacement✓ Art. 17Soft delete + anonymisation
Notification breach 72h✓ Art. 33✓ Art. 23Wazuh alert + workflow CNIL
PRA testé annuellement✓ Art. 32✓ Art. 21Test de reprise automatisé
Réversibilité✓ Art. 20Export en formats ouverts

Registre des traitements santé

Le DSI santé doit maintenir un registre des traitements spécifique aux données de santé :

# Registre des traitements — Données de santé

treatments:
  - name: "Gestion des dossiers patients"
    purpose: "Soins médicaux"
    legal_basis: "Art. 6(1)(e) + Art. 9(2)(h) RGPD"
    data_categories:
      - "Données d'identité"
      - "Données médicales"
      - "Données de santé"
    recipients: ["Médecins", "Infirmiers", "Administration"]
    retention: "10 ans après le dernier contact"
    security_measures: ["Chiffrement AES-256", "MFA", "Audit logging", "WORM"]
    
  - name: "Téléconsultation"
    purpose: "Consultation médicale à distance"
    legal_basis: "Art. 6(1)(e) + Art. 9(2)(h) RGPD"
    data_categories:
      - "Données d'identité"
      - "Données médicales"
      - "Vidéo et audio"
    recipients: ["Médecins", "Patients"]
    retention: "10 ans (vidéo : 6 mois)"
    security_measures: ["E2E encryption", "MFA", "Enregistrement immuable"]

Le DMP et les interconnexions santé

Connecteur DMP (Dossier Médical Partagé)

Le DMP est le système national de partage des données médicales. Un cloud souverain santé doit pouvoir interagir avec le DMP :

# Connecteur DMP / Services numériques santé

dmp_connector:
  # Authentification CPS/CPE (Carte Professionnel de Santé)
  auth:
    type: "CPS"              # Carte de Professionnel de Santé
    certificate: "/etc/cps/cert.p12"
    mfa: true                 # CPS + code PIN
  
  # Endpoints DMP
  endpoints:
    creation: "https://dmp.esante.gouv.fr/api/v1/create"
    consultation: "https://dmp.esante.gouv.fr/api/v1/read"
    mise_a_jour: "https://dmp.esante.gouv.fr/api/v1/update"
    
  # Journalisation de chaque accès DMP (obligatoire)
  audit:
    enabled: true
    destination: "wazuh"
    fields: ["practitioner_id", "patient_id", "action", "timestamp", "justification"]

Obligation légale : chaque accès au DMP doit être justifié et tracé. Le praticien doit indiquer le motif de consultation (soins, urgence, contrôle).


TCO : Cloud souverain HDS vs Cloud public HDS

Scénario : Hôpital régional (1 000 lits, 5 000 utilisateurs)

PosteCloud public (AWS/Azure)Cloud souverain HDSÉconomie
Compute (50 VMs)480 K€/5 ans180 K€/5 ans-63 %
Stockage (100 TB)240 K€/5 ans80 K€/5 ans-67 %
Réseau / bande passante120 K€/5 ans30 K€/5 ans-75 %
Licence OS + DB150 K€/5 ans50 K€/5 ans-67 %
Support + HDS certifié180 K€/5 ans60 K€/5 ans-67 %
Sécurité (WAF, SIEM)200 K€/5 ans50 K€/5 ans (open source)-75 %
Total 5 ans1 370 K€450 K€-67 %
Coût mensuel22,8 K€7,5 K€-67 %

Les coûts cachés du cloud public


Déploiement en 10 jours

PhaseJoursActionLivrable
Phase 1J1-J3Infrastructure HDS baseOpenNebula + PostgreSQL + MinIO + Keycloak
Phase 2J4-J5Sécurité + conformitéWAF Coraza + Wazuh SIEM + Audit logging
Phase 3J6-J7ObservabilitéGrafana dashboards + Alertes HDS
Phase 4J8-J9Connecteurs santéDMP / e-CPS / SI métier
Phase 5J10Formation + documentationDocumentation HDS + formation équipe

Prérequis HDS : la certification HDS est un processus organisationnel (18-24 mois). Le cloud souverain HDS fournit l’infrastructure technique conforme ; la certification reste à la charge de l’hébergeur ou de l’établissement.


Conclusion

Le cloud souverain santé HDS n’est pas un choix technique — c’est une obligation légale et une nécessité de confiance. Les patients confient leurs données médicales les plus intimes à des institutions qui doivent les protéger avec le plus haut niveau de sécurité. Le CLOUD Act américain, les ransomwares qui paralysent les hôpitaux, et les sanctions CNIL pour les violations de données médicales sont autant de risques réels.

La combinaison cloud souverain (OpenNebula, infrastructure en France, données non soumises au CLOUD Act) + certification HDS (audit trail, chiffrement, MFA, rétention 10 ans) + open source (Keycloak, Coraza, Wazuh, Grafana) offre le meilleur rapport sécurité/conformité/coût du marché.

67 % d’économie sur 5 ans par rapport au cloud public HDS, avec zéro exposition au CLOUD Act et une réversibilité complète.

Cloud Inspire déploie l’infrastructure HDS en 10 jours sur votre cloud privé OpenNebula. Si vous êtes un DSI d’établissement de santé ou d’entreprise du medicotech, parlons-en.

---

Restez informé de l'actualité cloud & IA

Recevez nos analyses, retours terrain et nouveautés produits. Pas de spam, pas de bruit.

En vous inscrivant, vous acceptez notre politique de confidentialité. Désinscription à tout moment.