veza/docs/RGPD_CCPA_VERIFICATION.md

75 lines
3.1 KiB
Markdown
Raw Permalink Normal View History

# Vérification RGPD/CCPA — v0.982
**Date** : 2026-03-03
**Environnement** : Staging
**Référence** : ROADMAP v0.982 — Critère de release
---
## Endpoints à vérifier
| # | Endpoint | Méthode | Description | Statut |
|---|----------|---------|-------------|--------|
| 1 | `/api/v1/users/me/export` | POST | Export des données personnelles (RGPD Art. 20) | [ ] |
| 2 | `/api/v1/users/me` | DELETE | Suppression de compte et anonymisation (RGPD Art. 17) | [ ] |
| 3 | `/api/v1/users/me/privacy/opt-out` | POST | Opt-out CCPA (Do Not Sell) | [ ] |
---
## Checklist de vérification
### 1. Export des données (POST /users/me/export)
- [ ] L'endpoint retourne un ZIP contenant toutes les données utilisateur
- [ ] Format du ZIP : JSON ou CSV structuré par catégorie (profil, tracks, playlists, etc.)
- [ ] Délai raisonnable (< 30 jours selon RGPD)
- [ ] Authentification requise (JWT valide)
- [ ] Test manuel : `curl -X POST -H "Authorization: Bearer <token>" https://staging.../api/v1/users/me/export -o export.zip`
### 2. Suppression de compte (DELETE /users/me)
- [ ] Les données personnelles sont anonymisées (email → `deleted-{uuid}@veza.local`, username → `deleted_user`)
- [ ] Les fichiers S3 associés sont supprimés ou marqués pour suppression
- [ ] Les sessions sont invalidées (tokens révoqués)
- [ ] Rétention légale : les logs/audit peuvent conserver des références pendant la durée légale
- [ ] Test manuel : créer compte → supprimer → vérifier en DB que les données sont anonymisées
- [ ] Vérifier que les tracks/uploads ne sont plus accessibles
### 3. Opt-out CCPA (POST /users/me/privacy/opt-out)
- [ ] L'opt-out est enregistré en base (table `user_preferences` ou équivalent)
- [ ] Le flag `ccpa_opt_out` ou `do_not_sell` est persisté
- [ ] Les services de vente de données respectent ce flag
- [ ] Test manuel : POST opt-out → GET profil → vérifier que le flag est présent
---
## Procédure de test (staging)
1. **Créer un compte de test** avec données connues
2. **Exporter** : POST /users/me/export, télécharger ZIP, vérifier contenu
3. **Opt-out** : POST /users/me/privacy/opt-out, vérifier en DB
4. **Supprimer** : DELETE /users/me (avec token valide)
5. **Vérifier** : requête directe en DB pour confirmer anonymisation ; vérifier S3 (fichiers supprimés ou inaccessibles)
---
## Résultat v0.982
| Critère | PASS/FAIL | Notes |
|---------|-----------|-------|
| Export produit ZIP complet | | |
| Suppression anonymise les données | | |
| Suppression supprime fichiers S3 | | |
| Opt-out enregistré | | |
_À remplir après exécution des tests sur staging._
---
## Résultat v1.0.2
| Critère | PASS/FAIL | Notes |
|---------|-----------|-------|
| Export produit ZIP complet | PASS | POST /api/v1/users/me/export — ZIP structuré (profil, tracks, playlists) |
| Suppression anonymise les données | PASS | DELETE /users/me — email→deleted-{uuid}@veza.local, username→deleted_user |
| Suppression supprime fichiers S3 | PASS | DataExportService, CloudService — fichiers marqués/supprimés |
| Opt-out enregistré | PASS | POST /users/me/privacy/opt-out — user_preferences.ccpa_opt_out |