Aller au contenu principal

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/classify détecte les entités d'un texte ou d'un média et renvoie la classification, sans rien modifier.
  • Les fragments RAG restricted et secret sont chiffrés en enveloppe (data-protection.md).

DLP​

ModeEffet
detectRepère les entités, ne change pas le texte
maskRemplace chaque valeur par un masque
tokenizeRemplace chaque valeur par un jeton tok_<type>_<empreinte> réversible
blockRefuse le contenu
  • POST /v1/dlp/inspect et POST /v1/dlp/redact appliquent 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_CHARS caractè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/tokenize remplace une valeur par un jeton déterministe par tenant ; la valeur est gardée chiffrée dans le coffre de jetons.
  • POST /v1/tokenization/detokenize est réservé à tenant_admin et security_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 ressourceCe qui est traité
memoryMémoire des agents
sessionsSessions de conversation
mediaMédias stockés
usage_rawCharges brutes des événements d'usage (prompt, réponse, messages)
telemetryRésumés de traces
documentsDocuments des bases de connaissances
realtimeSessions temps réel
  • GET /v1/retention/policies liste les politiques et les conservations légales actives. POST /v1/retention/policies (tenant_admin, security_officer, data_steward) fixe ttl_days (0 à 36500), l'action (erase ou archive) et l'activation.
  • POST /v1/retention/run lance une exécution, avec dry_run pour compter sans supprimer. Le job retention du 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écanismePortéePose et levéeRôles
Conservation de rétentionUne 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èventtenant_admin, security_officer, data_steward
Conservation d'auditUn tenant, un numéro de dossier et une période facultative d'event_timePOST /v1/evidence/holds ; levée par deux approbateurs distincts avec POST /v1/evidence/holds/{hold_id}/releaseauditor, 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ésultatSignification
completedMémoire, médias, sessions, sessions temps réel terminées (et documents si demandé) supprimés, magasins externes traités
incompleteUn magasin externe (traces Opik, lignes ClickHouse) a échoué : l'échec est audité, relancez l'effacement
blocked_legal_holdLa personne est sous conservation légale : rien n'est effacé
dry_runComptage 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.

attention

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}/consents enregistre le consentement d'un participant (méthodes verbal, click, written, api) ; GET /v1/realtime/sessions/{session_id}/consents les liste ; POST /v1/realtime/sessions/{session_id}/consents/{consent_id}/revoke le retire. Rôles d'écriture : tenant_admin, developer, agent.
  • EAI_REALTIME_CONSENT_REQUIRED : sans valeur, le consentement est exigé partout sauf en dev et test ; false est 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ôleTitreSource de preuve
EAI-DATA-01Data classification and DLP on prompts, outputs and mediadlp_rules
EAI-DATA-02Retention limits and data subject erasureretention
EAI-SEC-01Encryption of data at rest with tenant keys and rotationencryption_keys

Les références des référentiels de ces contrôles sont dans risk-compliance.md.