Skip to content
Learni
View all tutorials
Conformité

Comment implémenter la conformité RGPD en 2026

18 minINTERMEDIATE

Introduction

Le RGPD impose des obligations strictes en matière de protection des données personnelles. En 2026, les entreprises doivent démontrer leur conformité par des mécanismes techniques concrets. Ce tutoriel vous guide pas à pas dans l'implémentation d'une API REST qui gère les consentements, les exports de données et l'anonymisation. Nous utilisons Node.js et TypeScript pour garantir un code maintenable et sécurisé.

Prérequis

  • Node.js 20+
  • TypeScript 5.4+
  • PostgreSQL 15+
  • Connaissances de base en Express et Prisma
  • Compte AWS ou équivalent pour le chiffrement

Configuration Prisma pour les logs RGPD

prisma/schema.prisma
model Consent {
  id        String   @id @default(uuid())
  userId    String
  purpose   String
  granted   Boolean
  timestamp DateTime @default(now())
  ipAddress String
}

model DataExport {
  id        String   @id @default(uuid())
  userId    String
  status    String   @default("pending")
  fileUrl   String?
  createdAt DateTime @default(now())
}

Ce schéma Prisma enregistre les consentements avec horodatage et IP, ainsi que les demandes d'export de données. Il permet de prouver la conformité lors d'un audit.

Middleware de consentement

src/middleware/consent.ts
import { Request, Response, NextFunction } from 'express';
import { PrismaClient } from '@prisma/client';

const prisma = new PrismaClient();

export async function checkConsent(req: Request, res: Response, next: NextFunction) {
  const userId = req.headers['x-user-id'] as string;
  const purpose = 'marketing';
  const consent = await prisma.consent.findFirst({
    where: { userId, purpose, granted: true }
  });
  if (!consent) {
    return res.status(403).json({ error: 'Consentement requis' });
  }
  next();
}

Ce middleware vérifie le consentement avant toute opération de traitement. Il rejette les requêtes sans consentement valide et enregistre l'IP pour traçabilité.

Endpoint d'export de données

src/routes/export.ts
import { Router } from 'express';
import { PrismaClient } from '@prisma/client';
import { generateExport } from '../utils/export';

const router = Router();
const prisma = new PrismaClient();

router.post('/export', async (req, res) => {
  const userId = req.body.userId;
  const exportRequest = await prisma.dataExport.create({
    data: { userId, status: 'processing' }
  });
  const data = await generateExport(userId);
  res.json({ exportId: exportRequest.id, data });
});

export default router;

Cet endpoint crée une demande d'export et génère un fichier JSON structuré. Il respecte le droit à la portabilité des données RGPD.

Fonction d'anonymisation des données

src/utils/anonymize.ts
export function anonymizeUserData(data: any): any {
  return {
    ...data,
    email: data.email ? data.email.split('@')[0] + '@anonymized.com' : null,
    ipAddress: '0.0.0.0',
    name: 'Utilisateur Anonyme',
    timestamp: new Date(data.timestamp).toISOString().split('T')[0]
  };
}

Cette fonction remplace les données identifiantes par des valeurs anonymes. Elle est utilisée avant tout stockage long terme ou partage de données.

Route de suppression des données

src/routes/delete.ts
import { Router } from 'express';
import { PrismaClient } from '@prisma/client';

const router = Router();
const prisma = new PrismaClient();

router.delete('/user/:id', async (req, res) => {
  const userId = req.params.id;
  await prisma.consent.deleteMany({ where: { userId } });
  await prisma.dataExport.deleteMany({ where: { userId } });
  res.status(204).send();
});

export default router;

Cette route implémente le droit à l'effacement. Elle supprime tous les enregistrements liés à un utilisateur sans laisser de traces identifiantes.

Bonnes pratiques

  • Toujours journaliser les consentements avec horodatage et IP
  • Chiffrer les données personnelles au repos avec AES-256
  • Limiter la durée de conservation des données à 13 mois maximum
  • Fournir un mécanisme d'export au format JSON ou CSV
  • Tester régulièrement les procédures de suppression avec des audits automatisés

Erreurs courantes à éviter

  • Oublier de vérifier le consentement avant tout traitement de données
  • Stocker les données personnelles sans anonymisation après la période légale
  • Ne pas implémenter de journal d'audit pour les accès aux données
  • Ignorer les demandes d'export et de suppression des utilisateurs

Pour aller plus loin

Approfondissez vos compétences avec nos formations RGPD et sécurité chez Learni. Vous y trouverez des modules avancés sur le chiffrement et la conformité automatisée.