Rétention, confidentialité et protection des données personnelles
Cette page décrit les contrôles de la Navin Platform sur la durée de vie et la confidentialité des données : politiques de rétention, conservations légales, effacement d'une personne, classification, DLP, tokenisation et consentements. Elle complète data-protection.md, qui couvre la protection des données du RAG. Code : services/control-plane/src/eai/domains/retention, services/control-plane/src/eai/domains/privacy, services/control-plane/src/eai/domains/evidence/holds.py.
English version: en/retention-privacy.md
Classification des données
- Cinq niveaux ordonnés :
public,internal,confidential,restricted,secret(eai.auth.CLASSIFICATIONS). Chaque identité porte une habilitation ; une politique compare la classification de la donnée à cette habilitation et au plafond de la ressource (modèle, agent, outil). POST /v1/privacy/classifydétecte les entités d'un texte ou d'un média et renvoie la classification, sans rien modifier.- Les fragments RAG
restrictedetsecretsont chiffrés en enveloppe (data-protection.md).
DLP
| Mode | Effet |
|---|---|
detect | Repère les entités, ne change pas le texte |
mask | Remplace chaque valeur par un masque |
tokenize | Remplace chaque valeur par un jeton tok_<type>_<empreinte> réversible |
block | Refuse le contenu |
POST /v1/dlp/inspectetPOST /v1/dlp/redactappliquent la DLP à un texte ;POST /v1/multimodal/dlpà un média. La passerelle de modèles et la passerelle d'outils appellent la même fonction (eai.domains.privacy.service.inspect).- Règles du tenant :
GET /v1/dlp/rules,POST /v1/dlp/rules(tenant_admin,security_officer) : nom, type d'entité, motif (500 caractères au plus, vérifié), action, classification, score minimal, activation. - Sortie en flux :
EAI_STREAM_DLP_HOLDBACK_CHARScaractères sont retenus en fin de flux pour qu'une valeur coupée entre deux morceaux soit encore détectée. - Une politique peut imposer la DLP par une obligation
dlp(authentication-authorization.md).
Tokenisation
POST /v1/tokenization/tokenizeremplace une valeur par un jeton déterministe par tenant ; la valeur est gardée chiffrée dans le coffre de jetons.POST /v1/tokenization/detokenizeest réservé àtenant_adminetsecurity_officer, passe par une décision de politique avec la finalité (purpose) et la classification la plus haute des jetons, et est audité (tokenization.detokenize), refus compris.
Politiques de rétention
| Type de ressource | Ce qui est traité |
|---|---|
memory | Mémoire des agents |
sessions | Sessions de conversation |
media | Médias stockés |
usage_raw | Charges brutes des événements d'usage (prompt, réponse, messages) |
telemetry | Résumés de traces |
documents | Documents des bases de connaissances |
realtime | Sessions temps réel |
GET /v1/retention/policiesliste les politiques et les conservations légales actives.POST /v1/retention/policies(tenant_admin,security_officer,data_steward) fixettl_days(0 à 36500), l'action (eraseouarchive) et l'activation.POST /v1/retention/runlance une exécution, avecdry_runpour compter sans supprimer. Le jobretentiondu worker l'exécute pour chaque tenant (EAI_WORKER_RETENTION_INTERVAL_SECONDS, quotidien par défaut).- Plafonds de la plateforme :
EAI_TELEMETRY_SPAN_MAX_DAYS(résumés de traces),EAI_INBOX_RETENTION_DAYS(boîte de réception des consommateurs),EAI_AUDIT_PAYLOAD_RETENTION_DAYS(charges d'audit chiffrées),EAI_AUDIT_WORM_RETENTION_DAYS(exports WORM).
Conservations légales
Deux mécanismes distincts :
| Mécanisme | Portée | Pose et levée | Rôles |
|---|---|---|---|
| Conservation de rétention | Une ressource (resource_type, resource_id) ou une personne (subject_id) | POST /v1/retention/legal-hold avec une raison ; active: false et hold_id la lèvent | tenant_admin, security_officer, data_steward |
| Conservation d'audit | Un tenant, un numéro de dossier et une période facultative d'event_time | POST /v1/evidence/holds ; levée par deux approbateurs distincts avec POST /v1/evidence/holds/{hold_id}/release | auditor, security_officer, tenant_admin |
Pendant une conservation, la purge de rétention et l'effacement sautent les données concernées et les comptent dans skipped_legal_hold. Chaque pose et levée est auditée (retention.legal_hold pour la conservation de rétention).
Effacement d'une personne
POST /v1/retention/erase (tenant_admin, security_officer, data_steward) efface les données d'une personne (subject_id), avec dry_run et include_documents. Raison par défaut : gdpr_art_17.
| Résultat | Signification |
|---|---|
completed | Mémoire, médias, sessions, sessions temps réel terminées (et documents si demandé) supprimés, magasins externes traités |
incomplete | Un magasin externe (traces Opik, lignes ClickHouse) a échoué : l'échec est audité, relancez l'effacement |
blocked_legal_hold | La personne est sous conservation légale : rien n'est effacé |
dry_run | Comptage seul |
La réponse liste ce qui est gardé par obligation : la chaîne d'audit (ajout seul, chaînée par hachage) et les événements d'usage (pièces financières, charges brutes purgées par la politique usage_raw). Les charges d'audit chiffrées expirent ; les événements eux-mêmes restent, donc la chaîne et les sceaux restent vérifiables.
Un effacement réel (dry_run: false) est définitif. Lancez d'abord un dry_run et vérifiez l'absence de conservation légale.
Preuves de purge
Une purge des charges d'audit écrit une preuve dans eai.audit_purge_evidence : comptes, séquences et racine de Merkle des empreintes des chiffrés purgés, jamais le contenu. Lecture : GET /v1/evidence/retention/evidence ; exécution : POST /v1/evidence/retention/run.
Consentements
- Voix temps réel :
POST /v1/realtime/sessions/{session_id}/consentsenregistre le consentement d'un participant (méthodesverbal,click,written,api) ;GET /v1/realtime/sessions/{session_id}/consentsles liste ;POST /v1/realtime/sessions/{session_id}/consents/{consent_id}/revokele retire. Rôles d'écriture :tenant_admin,developer,agent. EAI_REALTIME_CONSENT_REQUIRED: sans valeur, le consentement est exigé partout sauf endevettest;falseest refusé au démarrage en production. L'enregistrement exige toujours un consentement. Détails : ../operations/voice-runtime.md.
Correspondance avec le catalogue de contrôles
| Contrôle | Titre | Source de preuve |
|---|---|---|
EAI-DATA-01 | Data classification and DLP on prompts, outputs and media | dlp_rules |
EAI-DATA-02 | Retention limits and data subject erasure | retention |
EAI-SEC-01 | Encryption of data at rest with tenant keys and rotation | encryption_keys |
Les références des référentiels de ces contrôles sont dans risk-compliance.md.