23. Frameworks de conformité : RGPD, SOC 2, ISO 27001, PCI-DSS, NIST CSF#

La conformité réglementaire n’est pas synonyme de sécurité, mais elle en est un plancher structurant. Comprendre les exigences techniques de chaque framework permet de construire un programme de sécurité cohérent, d’éviter la duplication des efforts et de démontrer sa posture à des clients, des auditeurs et des partenaires.

RGPD technique#

Le Règlement Général sur la Protection des Données (RGPD, GDPR en anglais) impose des obligations techniques précises, pas seulement juridiques.

Principes techniques du RGPD#

Minimisation des données (Article 5.1.c) : collecter uniquement les données strictement nécessaires à la finalité déclarée. Techniquement : champs de formulaire minimalistes, pas de logging d’IP si non nécessaire, pas de tracking cross-site sans base légale.

Pseudonymisation (Article 4.5) : remplacer les identifiants directs par des pseudonymes, de sorte qu’il soit impossible d’identifier la personne sans information supplémentaire maintenue séparément.

Différence pseudonymisation vs anonymisation :

  • Pseudonymisation : réversible avec la clé ou la table de correspondance — les données restent des données personnelles au sens du RGPD.

  • Anonymisation : irréversible — les données sortent du périmètre du RGPD (k-anonymat, l-diversité, differential privacy).

Chiffrement : le RGPD ne l’impose pas explicitement mais le recommande fortement comme mesure technique appropriée (Article 32). En pratique : chiffrement au repos (AES-256), en transit (TLS 1.2+), et idéalement des colonnes sensibles en base de données.

Droit à l’effacement (Article 17) : deux approches techniques possibles :

  1. Suppression réelle : DELETE en base + suppression des sauvegardes dans les délais légaux (plus difficile avec les backups).

  2. Pseudonymisation de substitution : remplacement de toutes les données personnelles par des valeurs génériques (« Utilisateur supprimé ») — recevable si l’identification est réellement impossible.

DPIA (Data Protection Impact Assessment)#

La DPIA (Article 35) est obligatoire pour les traitements à risque élevé : surveillance à grande échelle, traitement de données sensibles, scoring automatisé.

Structure d’une DPIA :

## DPIA — [Nom du traitement]

### Description du traitement
- Finalité : ...
- Données collectées : ...
- Durée de conservation : ...
- Destinataires : ...

### Nécessité et proportionnalité
- Base légale : consentement / contrat / intérêt légitime / ...
- Minimisation : justification de chaque donnée collectée

### Évaluation des risques
| Risque | Vraisemblance | Gravité | Score |
|--------|--------------|---------|-------|
| Accès non autorisé | 3 | 4 | 12 |
| Fuite via tiers | 2 | 5 | 10 |

### Mesures de mitigation
- Chiffrement AES-256 au repos
- TLS 1.3 en transit
- Accès restreint par RBAC
- Logs d'accès audités

### Résidu de risque acceptable
Score résiduel : 4 — acceptable avec les mesures en place.

DPO (Data Protection Officer)#

Le DPO est obligatoire pour les organismes publics, les entreprises traitant à grande échelle des données sensibles, et ceux réalisant une surveillance systématique à grande échelle. Son rôle est consultatif — il conseille, vérifie, forme — mais n’est pas responsable de la conformité (c’est le responsable de traitement).


SOC 2 — Trust Service Criteria#

SOC 2 (System and Organization Controls 2) est un standard d’audit américain (AICPA) qui certifie que les contrôles d’une organisation répondent aux Trust Service Criteria (TSC).

Les cinq TSC#

Critère

Symbole

Description

Sécurité

CC

Contrôles protégeant contre l’accès non autorisé (obligatoire)

Disponibilité

A

Système disponible selon les engagements

Intégrité du traitement

PI

Traitement complet, précis, valide

Confidentialité

C

Protection des informations confidentielles

Vie privée

P

Protection des données personnelles

Le critère CC (Common Criteria, sécurité) est le seul obligatoire. Les autres sont optionnels selon les engagements contractuels.

SOC 2 Type I vs Type II#

  • Type I : photo à un instant T — les contrôles sont correctement conçus à la date d’audit. Plus rapide (2-4 mois), moins valorisant commercialement.

  • Type II : film sur une période (généralement 6 à 12 mois) — les contrôles fonctionnent réellement dans la durée. Plus crédible, exigé par la plupart des grandes entreprises.

Utilité commerciale : SOC 2 Type II est devenu une exigence de fait pour les éditeurs SaaS B2B américains. Sans rapport SOC 2, beaucoup d’entreprises refusent de signer avec un fournisseur.


ISO 27001 — SMSI#

ISO 27001 est le standard international pour les Systèmes de Management de la Sécurité de l’Information (SMSI). La version en vigueur est ISO 27001:2022.

Structure#

Corps principal (clauses 4-10) : exigences du SMSI selon le cycle PDCA :

  • Plan : contexte, parties prenantes, politique, objectifs, risques

  • Do : mise en oeuvre des contrôles, sensibilisation

  • Check : surveillance, audit interne, revue de direction

  • Act : amélioration continue, actions correctives

Annexe A — 93 contrôles, 4 thèmes :

Thème

Contrôles

Exemples

Organisationnel (5.x)

37

Politique sécurité, gestion des incidents, continuité

Personnes (6.x)

8

Sensibilisation, accords de confidentialité

Physique (7.x)

14

Contrôle d’accès physique, destruction des supports

Technologique (8.x)

34

Authentification, chiffrement, journalisation, gestion des vulnérabilités

Déclaration d’applicabilité (SoA)#

La SoA (Statement of Applicability) liste les 93 contrôles de l’Annexe A, justifie l’inclusion ou l’exclusion de chaque contrôle, et documente l’état de mise en oeuvre.

## Déclaration d'applicabilité — [Organisation] — v2.1 — 2024-01-15

| Contrôle | Titre | Applicable | Justification | État |
|----------|-------|------------|---------------|------|
| 5.1 | Politiques de sécurité | Oui | Exigence légale et contractuelle | Implémenté |
| 5.9 | Inventaire des actifs | Oui | Requis pour la gestion des risques | En cours |
| 7.3 | Sécurisation des bureaux | Non | Télétravail intégral — sans objet | Exclu |
| 8.7 | Protection contre les malwares | Oui | Risque élevé identifié | Implémenté |

Certification ISO 27001 : audit externe par un organisme accrédité (BSI, Bureau Veritas, SGS…). Audit de certification (2 étapes) + surveillance annuelle + recertification tous les 3 ans.


PCI-DSS v4.0#

PCI-DSS (Payment Card Industry Data Security Standard) est le standard de sécurité pour toute organisation qui stocke, traite ou transmet des données de titulaires de cartes bancaires.

Les 12 exigences#

  1. Installer et maintenir un pare-feu

  2. Ne pas utiliser les valeurs par défaut des fournisseurs

  3. Protéger les données stockées des titulaires

  4. Chiffrer les transmissions sur réseaux publics

  5. Protéger tous les systèmes contre les malwares

  6. Développer et maintenir des systèmes et applications sécurisés

  7. Restreindre l’accès aux données selon le besoin d’en connaître

  8. Identifier et authentifier l’accès aux composants système

  9. Restreindre l’accès physique aux données de titulaires

  10. Consigner et surveiller tous les accès aux ressources et données

  11. Tester régulièrement les systèmes et processus de sécurité

  12. Maintenir une politique de sécurité de l’information

Scope et segmentation#

Le CDE (Cardholder Data Environment) est le périmètre contenant les données de cartes. La segmentation réseau (VLAN, pare-feu) réduit le scope et simplifie la conformité.

  • Systèmes in-scope : CDE + systèmes connected (peuvent atteindre le CDE)

  • Systèmes out-of-scope : isolés du CDE par segmentation validée

Exigences techniques notables de PCI-DSS v4.0#

  • TLS 1.2 minimum obligatoire (TLS 1.0 et 1.1 interdits depuis 2018)

  • Scan ASV trimestriel : scan de vulnérabilités externe par un Approved Scanning Vendor

  • Test de pénétration annuel (interne + externe, niveau réseau + applicatif)

  • Authentification multi-facteurs pour tous les accès non-console aux composants CDE

  • Journalisation : tous les accès aux données de titulaires, durée de rétention 12 mois

SAQ (Self-Assessment Questionnaire)#

Pour les petits marchands, l’auto-évaluation est possible :

  • SAQ A : acceptation de paiement entièrement externalisée (Stripe, PayPal), périmètre très réduit

  • SAQ D : tous les marchands et prestataires qui ne rentrent pas dans les autres catégories — périmètre complet


NIST Cybersecurity Framework 2.0#

Le NIST CSF 2.0 (2024) est le framework de référence américain pour la gestion du risque cybersécurité. La version 2.0 ajoute une sixième fonction : Govern.

Les 6 fonctions#

Fonction

Code

Description

Govern

GV

Établir la gouvernance, les politiques, les rôles, la gestion des risques

Identify

ID

Comprendre les actifs, les risques, les vulnérabilités

Protect

PR

Déployer les contrôles de protection

Detect

DE

Détecter les événements et incidents

Respond

RS

Répondre aux incidents détectés

Recover

RC

Rétablir les capacités après un incident

Profils et tiers de maturité#

Profil courant : état actuel des pratiques de sécurité. Profil cible : état souhaité, défini par rapport aux exigences business et aux risques. Gap analysis : écart entre les deux profils, base du plan d’action.

Tiers de maturité (1 à 4) :

  • Tier 1 (Partiel) : pratiques ad hoc, peu de conscience du risque

  • Tier 2 (Risque informé) : pratiques définies mais pas systématiques

  • Tier 3 (Répétable) : pratiques formalisées, approuvées par la direction

  • Tier 4 (Adaptatif) : amélioration continue, partage de threat intelligence


Chevauchements entre frameworks#

Les frameworks partagent de nombreux contrôles sous-jacents. Une implémentation bien structurée couvre plusieurs frameworks simultanément.

Contrôle technique

RGPD

SOC 2 CC

ISO 27001

PCI-DSS

NIST CSF

Chiffrement au repos

Art.32

CC6.1

8.24

Req.3

PR.DS

MFA

CC6.3

8.5

Req.8

PR.AA

Journalisation/audit

Art.32

CC7.2

8.15

Req.10

DE.CM

Gestion vulnérabilités

CC7.1

8.8

Req.6/11

ID.RA

Plan de réponse aux incidents

Art.33

CC7.3

5.26

Req.12

RS

Gestion des accès

CC6.2

5.18

Req.7

PR.AA

Tests de pénétration

CC4.1

8.8

Req.11

ID.RA


Cellule 1 — Heatmap de mapping frameworks#

Hide code cell source

import numpy as np
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
import seaborn as sns
from math import pi

sns.set_theme(style="white", palette="muted", font_scale=1.1)
np.random.seed(42)
# Mapping ISO 27001 Annexe A (catégories simplifiées) × SOC 2 TSC × NIST CSF
# Valeurs : 0 = non couvert, 1 = partiellement couvert, 2 = totalement couvert

categories_iso = [
    "Politiques sécurité (5.1)",
    "Gestion des actifs (5.9)",
    "Contrôle d'accès (8.2-5.18)",
    "Cryptographie (8.24)",
    "Sécurité physique (7.x)",
    "Sécurité opérations (8.x)",
    "Sécurité communications (8.20)",
    "Acquisition/dev/maint (8.25)",
    "Relations fournisseurs (5.19)",
    "Gestion incidents (5.26)",
    "Continuité d'activité (5.29)",
    "Conformité (5.36)"
]

soc2_tsc = ["CC - Sécurité", "A - Disponibilité", "PI - Intégrité", "C - Confidentialité", "P - Vie privée"]
nist_csf = ["GV - Govern", "ID - Identify", "PR - Protect", "DE - Detect", "RS - Respond", "RC - Recover"]

# Matrice ISO ↔ SOC2
couverture_soc2 = np.array([
    [2, 0, 0, 1, 1],  # Politiques
    [1, 1, 1, 1, 0],  # Actifs
    [2, 0, 0, 2, 1],  # Contrôle d'accès
    [2, 0, 0, 2, 1],  # Cryptographie
    [1, 0, 0, 0, 0],  # Sécurité physique
    [2, 2, 2, 1, 0],  # Opérations
    [2, 1, 1, 2, 0],  # Communications
    [2, 0, 2, 1, 0],  # Dev/maint
    [1, 1, 0, 1, 0],  # Fournisseurs
    [2, 1, 0, 0, 0],  # Incidents
    [1, 2, 1, 0, 0],  # Continuité
    [1, 0, 1, 1, 2],  # Conformité
])

# Matrice ISO ↔ NIST CSF
couverture_nist = np.array([
    [2, 1, 1, 0, 0, 0],  # Politiques
    [1, 2, 1, 0, 0, 0],  # Actifs
    [1, 1, 2, 1, 0, 0],  # Contrôle d'accès
    [0, 1, 2, 0, 0, 0],  # Cryptographie
    [0, 1, 2, 0, 0, 0],  # Sécurité physique
    [1, 1, 2, 2, 1, 1],  # Opérations
    [0, 0, 2, 2, 0, 0],  # Communications
    [1, 1, 2, 1, 0, 0],  # Dev/maint
    [1, 1, 1, 0, 1, 0],  # Fournisseurs
    [1, 0, 0, 2, 2, 1],  # Incidents
    [0, 0, 1, 0, 1, 2],  # Continuité
    [2, 1, 1, 0, 0, 0],  # Conformité
])

fig, axes = plt.subplots(1, 2, figsize=(16, 7))

cmap = sns.color_palette(["#EEEEEE", "#FFD54F", "#4CAF50"], as_cmap=False)

# Heatmap ISO ↔ SOC2
sns.heatmap(
    couverture_soc2,
    annot=True, fmt="d", cmap=["#EEEEEE", "#FFD54F", "#4CAF50"],
    vmin=0, vmax=2, linewidths=0.5, linecolor="white",
    xticklabels=soc2_tsc, yticklabels=categories_iso,
    ax=axes[0], cbar=False
)
axes[0].set_title("ISO 27001 Annexe A ↔ SOC 2 TSC", fontweight="bold")
axes[0].set_xticklabels(axes[0].get_xticklabels(), rotation=30, ha="right", fontsize=9)
axes[0].set_yticklabels(axes[0].get_yticklabels(), fontsize=9)

# Heatmap ISO ↔ NIST CSF
sns.heatmap(
    couverture_nist,
    annot=True, fmt="d", cmap=["#EEEEEE", "#FFD54F", "#4CAF50"],
    vmin=0, vmax=2, linewidths=0.5, linecolor="white",
    xticklabels=nist_csf, yticklabels=categories_iso,
    ax=axes[1], cbar=False
)
axes[1].set_title("ISO 27001 Annexe A ↔ NIST CSF 2.0", fontweight="bold")
axes[1].set_xticklabels(axes[1].get_xticklabels(), rotation=30, ha="right", fontsize=9)
axes[1].set_yticklabels(axes[1].get_yticklabels(), fontsize=9)

# Légende manuelle
import matplotlib.patches as mpatches
patches = [
    mpatches.Patch(color="#EEEEEE", label="0 — Non couvert"),
    mpatches.Patch(color="#FFD54F", label="1 — Partiellement couvert"),
    mpatches.Patch(color="#4CAF50", label="2 — Totalement couvert"),
]
fig.legend(handles=patches, loc="lower center", ncol=3, fontsize=10, bbox_to_anchor=(0.5, -0.04))
fig.suptitle("Mapping des frameworks de conformité — ISO 27001 comme référence", fontsize=13, fontweight="bold")
plt.subplots_adjust(wspace=0.05, bottom=0.15)
plt.show()
_images/9ee9ccb646b2cd1da9c5702d7dd7e5454ca64f94845c1eb26d4c7ccfb7a8e7d4.png

Cellule 2 — Radar de maturité NIST CSF 2.0 : trois profils#

# Radar de maturité sécurité NIST CSF 2.0 — 3 profils organisationnels
fonctions = ["Govern", "Identify", "Protect", "Detect", "Respond", "Recover"]
N = len(fonctions)
angles = [n / float(N) * 2 * pi for n in range(N)]
angles += angles[:1]

profils = {
    "Startup (Tier 1-2)":    [1.5, 1.0, 1.5, 1.0, 1.0, 0.5],
    "PME (Tier 2-3)":        [2.5, 2.5, 3.0, 2.0, 2.0, 2.0],
    "Entreprise (Tier 3-4)": [3.5, 3.5, 3.8, 3.5, 3.5, 3.5],
}
couleurs = ["#FF9800", "#2196F3", "#4CAF50"]
max_val = 4.0

sns.set_theme(style="white", palette="muted", font_scale=1.1)
fig, axes = plt.subplots(1, 3, figsize=(15, 5), subplot_kw=dict(polar=True))

for idx, (nom, valeurs) in enumerate(profils.items()):
    ax = axes[idx]
    couleur = couleurs[idx]
    v_plot = valeurs + valeurs[:1]

    ax.set_theta_offset(pi / 2)
    ax.set_theta_direction(-1)
    ax.set_xticks(angles[:-1])
    ax.set_xticklabels(fonctions, size=10)
    ax.set_ylim(0, max_val)
    ax.set_yticks([1, 2, 3, 4])
    ax.set_yticklabels(["Tier 1", "Tier 2", "Tier 3", "Tier 4"], size=7, color="gray")

    ax.plot(angles, v_plot, "o-", color=couleur, linewidth=2, markersize=5)
    ax.fill(angles, v_plot, alpha=0.25, color=couleur)

    # Ligne de référence niveau cible = 3
    ref = [3] * N + [3]
    ax.plot(angles, ref, "--", color="gray", linewidth=1, alpha=0.5)

    score_moyen = sum(valeurs) / len(valeurs)
    ax.set_title(f"{nom}\nScore moyen : {score_moyen:.1f}/4", fontweight="bold", pad=15, fontsize=10)

fig.suptitle("Maturité NIST CSF 2.0 — Comparaison de profils organisationnels\n(ligne pointillée = objectif Tier 3)",
             fontsize=12, fontweight="bold")
plt.subplots_adjust(wspace=0.5)
plt.show()

print("Résumé des scores de maturité NIST CSF 2.0 :")
for nom, valeurs in profils.items():
    score = sum(valeurs) / len(valeurs)
    lacunes = [f for f, v in zip(fonctions, valeurs) if v < 2.5]
    print(f"\n  {nom}")
    print(f"  Score moyen : {score:.1f}/4")
    if lacunes:
        print(f"  Fonctions sous Tier 2.5 : {', '.join(lacunes)}")
    else:
        print(f"  Toutes les fonctions >= Tier 2.5")
_images/6b3c73d8bf0c0630feb39820640f6afb08d286da8790574444200112ef40a4e8.png
Résumé des scores de maturité NIST CSF 2.0 :

  Startup (Tier 1-2)
  Score moyen : 1.1/4
  Fonctions sous Tier 2.5 : Govern, Identify, Protect, Detect, Respond, Recover

  PME (Tier 2-3)
  Score moyen : 2.3/4
  Fonctions sous Tier 2.5 : Detect, Respond, Recover

  Entreprise (Tier 3-4)
  Score moyen : 3.6/4
  Toutes les fonctions >= Tier 2.5

Cellule 3 — Simulation DPIA scoring CNIL#

# Évaluation DPIA selon les critères CNIL (RGPD Article 35)
# Simulation de 3 traitements avec scoring de risque

criteres_cnil = [
    "Évaluation ou scoring",
    "Décision automatisée",
    "Surveillance systématique",
    "Données sensibles (Art.9/10)",
    "Données à grande échelle",
    "Croisement de données",
    "Personnes vulnérables",
]

# 3 traitements à évaluer
traitements = {
    "CRM marketing\n(score prospect)": [2, 2, 0, 0, 2, 2, 1],
    "Système RH\n(évaluation performance)": [3, 3, 2, 1, 1, 2, 0],
    "App santé\n(suivi médical)": [1, 1, 1, 3, 3, 2, 3],
}

# Pondérations CNIL (adaptation)
poids = [1.5, 2.0, 1.5, 2.0, 1.5, 1.0, 2.0]
seuil_dpia = 8.0  # Score pondéré au-dessus duquel la DPIA est obligatoire

sns.set_theme(style="whitegrid", palette="muted", font_scale=1.1)
fig, axes = plt.subplots(1, 3, figsize=(16, 6))

couleurs_traitement = ["#2196F3", "#FF9800", "#F44336"]

for idx, (nom, scores) in enumerate(traitements.items()):
    ax = axes[idx]
    couleur = couleurs_traitement[idx]

    # Score pondéré
    score_total = sum(s * p for s, p in zip(scores, poids))
    score_max = 3 * sum(poids)
    score_pct = score_total / score_max * 100

    # Barplot horizontal
    bars = ax.barh(criteres_cnil, scores, color=couleur, alpha=0.75)
    ax.set_xlim(0, 4)
    ax.set_xticks([0, 1, 2, 3])
    ax.set_xticklabels(["Nul", "Faible", "Moyen", "Élevé"], fontsize=9)

    for bar, score in zip(bars, scores):
        label = ["—", "Faible", "Moyen", "Élevé"][score]
        ax.text(score + 0.05, bar.get_y() + bar.get_height() / 2,
                label, va="center", fontsize=8, color="white" if score > 1 else couleur)

    dpia_requis = score_total >= seuil_dpia
    couleur_titre = "#F44336" if dpia_requis else "#4CAF50"
    statut = "DPIA OBLIGATOIRE" if dpia_requis else "DPIA recommandée"

    ax.set_title(f"{nom}\nScore pondéré : {score_total:.1f}/{score_max:.0f} ({score_pct:.0f}%)\n{statut}",
                 fontweight="bold", fontsize=10, color=couleur_titre)
    ax.set_xlabel("Niveau de risque")
    ax.set_yticklabels(criteres_cnil, fontsize=9)

    # Ligne de seuil (normalisée à l'échelle)
    ax.axvline(x=2, color="gray", linestyle=":", linewidth=1, alpha=0.5)

fig.suptitle("Scoring DPIA — Évaluation selon les 7 critères CNIL\n(traitement nécessitant une DPIA si score pondéré ≥ 8.0)",
             fontsize=12, fontweight="bold")
plt.subplots_adjust(wspace=0.5)
plt.show()

print("Résultats de l'évaluation DPIA :")
for nom, scores in traitements.items():
    score_total = sum(s * p for s, p in zip(scores, poids))
    dpia = "OBLIGATOIRE" if score_total >= seuil_dpia else "Recommandée"
    print(f"  {nom.replace(chr(10), ' - '):35s} : {score_total:.1f} pts — DPIA {dpia}")
/tmp/ipykernel_19878/3084224098.py:57: UserWarning: set_ticklabels() should only be used with a fixed number of ticks, i.e. after set_ticks() or using a FixedLocator.
  ax.set_yticklabels(criteres_cnil, fontsize=9)
/tmp/ipykernel_19878/3084224098.py:57: UserWarning: set_ticklabels() should only be used with a fixed number of ticks, i.e. after set_ticks() or using a FixedLocator.
  ax.set_yticklabels(criteres_cnil, fontsize=9)
/tmp/ipykernel_19878/3084224098.py:57: UserWarning: set_ticklabels() should only be used with a fixed number of ticks, i.e. after set_ticks() or using a FixedLocator.
  ax.set_yticklabels(criteres_cnil, fontsize=9)
_images/f99273b5cc76b67bec7f7aa0c1816865f682a6dfed684a811c86eb5be1252bcf.png
Résultats de l'évaluation DPIA :
  CRM marketing - (score prospect)    : 14.0 pts — DPIA OBLIGATOIRE
  Système RH - (évaluation performance) : 19.0 pts — DPIA OBLIGATOIRE
  App santé - (suivi médical)         : 23.5 pts — DPIA OBLIGATOIRE

Résumé#

Ce chapitre a couvert les cinq frameworks de conformité majeurs et leurs exigences techniques.

Points clés :

  1. RGPD : la pseudonymisation est différente de l’anonymisation (réversible → toujours des données personnelles) ; le droit à l’effacement peut être implémenté par pseudonymisation de substitution ; la DPIA est obligatoire pour les traitements à risque élevé (3 critères CNIL ou plus à niveau élevé).

  2. SOC 2 : le critère CC (sécurité) est le seul obligatoire ; Type II (sur période) est bien plus valorisé commercialement que Type I (à un instant T) ; devenu une exigence de facto pour les SaaS B2B.

  3. ISO 27001:2022 : 93 contrôles en 4 thèmes (Organisationnel, Personnes, Physique, Technologique) ; la SoA documente l’inclusion/exclusion justifiée de chaque contrôle ; la certification est triannuelle avec surveillances annuelles.

  4. PCI-DSS v4.0 : 12 exigences couvrant la totalité du cycle de vie des données de carte ; la segmentation réseau réduit le scope (CDE isolé) ; TLS 1.2+ obligatoire, scan ASV trimestriel, pentest annuel.

  5. NIST CSF 2.0 : 6 fonctions avec l’ajout de Govern en v2.0 ; les profils courant/cible permettent une gap analysis structurée ; les tiers de maturité (1-4) guident la progression.

  6. Mapping inter-frameworks : les contrôles techniques se recoupent largement — une implémentation bien structurée couvre simultanément RGPD (Art.32), SOC 2 CC, ISO 27001 Annexe A, PCI-DSS et NIST CSF. Éviter la duplication en maintenant une référence commune (ISO 27001 ou NIST CSF).

  7. DPIA : l’évaluation quantitative des 7 critères CNIL permet d’objectiver l’obligation de DPIA et de prioriser les mesures de mitigation selon le profil de risque du traitement.