# V0.803 Release Scope — Sécurité, Compliance & Outillage Dev **Statut** : Livré **Phase** : 8 (Polish & Scale — Lot 3) **Prérequis** : v0.802 (taguée) **Date cible** : TBD **Estimation** : ~3 sprints (15 jours ouvrés) **Précédente** : [v0.802](archive/V0_802_RELEASE_SCOPE.md) --- ## 1. Objectif Dernière version de la Phase 8. Renforce la **sécurité** (headers complets, audit logs, compliance GDPR/CCPA), ajoute l'**outillage développeur** (OpenAPI/Swagger, API playground, API keys, developer dashboard), et améliore l'**administration** (queue modération, maintenance mode, annonces globales, feature flags UI). --- ## 2. État actuel (post-v0.802) | Composant | État | Détail | |-----------|------|--------| | **Rate limiting** | ✅ Livré v0.404 | Redis-backed, per-user | | **CORS** | ✅ Livré | Configuré dans middleware | | **JWT validation** | ✅ Livré | Auth middleware | | **CSP header** | ❌ Absent | Pas de Content-Security-Policy | | **HSTS header** | ❌ Absent | Pas de Strict-Transport-Security | | **Clickjacking protection** | ❌ Absent | Pas de X-Frame-Options | | **Security headers complets** | ❌ Absent | Manque X-Content-Type-Options, Referrer-Policy, Permissions-Policy | | **Audit logs** | ❌ Absent | Pas de journalisation des actions admin/utilisateur | | **GDPR data export** | ✅ Livré v0.802 | POST /users/me/export | | **Account deletion** | ❌ Absent | Pas de suppression de compte | | **OpenAPI/Swagger** | ❌ Absent | API documentée manuellement dans API_REFERENCE.md | | **API keys** | ⚠️ Partiel | Webhook secret, mais pas de API keys publiques pour développeurs | | **Developer dashboard** | ⚠️ Partiel | Page /developer existe, API keys basiques | | **Admin moderation** | ❌ Absent | Pas de queue de modération | | **Maintenance mode** | ❌ Absent | Pas de mode maintenance | | **Global announcements** | ❌ Absent | Pas d'annonces globales | | **Feature flags UI** | ❌ Absent | Flags dans .env uniquement, pas de UI admin | --- ## 3. Lots ### Lot SEC1 — Security Headers | # | Tâche | Fichiers impactés | Effort | |---|-------|--------------------|--------| | SEC1-01 | Middleware `SecurityHeaders` — CSP, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy | `internal/middleware/security_headers.go` (nouveau) | M | | SEC1-02 | CSP configuré — default-src 'self', script-src 'self', style-src 'self' 'unsafe-inline', img-src 'self' data: https:, connect-src 'self' wss: | Middleware | M | | SEC1-03 | HSTS — max-age=31536000, includeSubDomains, preload (production uniquement) | Middleware | S | | SEC1-04 | DDoS rate limiting amélioré — global rate limit (1000 req/s), per-IP (100 req/s), per-endpoint custom | `internal/middleware/rate_limiter.go` | M | | SEC1-05 | Tests — headers présents dans responses, rate limiting triggers | Tests | M | ### Lot SEC2 — Audit & Compliance | # | Tâche | Fichiers impactés | Effort | |---|-------|--------------------|--------| | SEC2-01 | Migration `123_audit_logs.sql` — table `audit_logs` (user_id, action, resource_type, resource_id, ip, user_agent, metadata JSONB, created_at) | Migrations | S | | SEC2-02 | Service `AuditService` — Log(userID, action, resource, metadata), query audit logs avec filtres | `internal/audit/service.go` (nouveau) | M | | SEC2-03 | Middleware audit — log automatique sur POST/PUT/DELETE de toutes les routes | `internal/middleware/audit.go` (nouveau) | M | | SEC2-04 | `GET /admin/audit-logs` — liste paginée avec filtres (user_id, action, date range) | `internal/handlers/admin_handler.go` | M | | SEC2-05 | Account deletion — `DELETE /users/me` : soft delete, anonymise données, supprime fichiers S3, révoque sessions | `internal/handlers/user_handler.go` | L | | SEC2-06 | CCPA compliance — honorer "Do Not Sell" header, endpoint opt-out | `internal/middleware/` | S | | SEC2-07 | Frontend — page "Delete Account" dans Settings avec confirmation, page audit logs admin | Frontend | M | | SEC2-08 | Tests — audit log creation, account deletion cascade, GDPR compliance | Tests | M | ### Lot DEV1 — API & Dev Tools | # | Tâche | Fichiers impactés | Effort | |---|-------|--------------------|--------| | DEV1-01 | OpenAPI/Swagger — annotations swaggo sur les handlers principaux (auth, marketplace, live, admin) | Handlers Go | L | | DEV1-02 | `GET /swagger/*` — serveur Swagger UI intégré (swaggo/gin-swagger) | `internal/api/routes_core.go` | M | | DEV1-03 | API key management — `POST /developer/api-keys` (create), `GET /developer/api-keys` (list), `DELETE /developer/api-keys/:id` (revoke) | `internal/handlers/developer_handler.go` | M | | DEV1-04 | Migration `124_api_keys.sql` — table `api_keys` (user_id, key_hash, name, permissions, last_used_at, expires_at) | Migrations | S | | DEV1-05 | API key middleware — authentification via `X-API-Key` header en alternative au Bearer token | `internal/middleware/auth.go` | M | | DEV1-06 | Developer dashboard enrichi — gestion API keys, documentation intégrée (lien Swagger), usage stats | `apps/web/src/features/developer/` | M | | DEV1-07 | Webhooks documentation — page /developer/webhooks avec liste des events, payloads, examples | Frontend | M | | DEV1-08 | Tests — API key auth, swagger endpoint, key CRUD | Tests | M | ### Lot ADM1 — Admin Improvements | # | Tâche | Fichiers impactés | Effort | |---|-------|--------------------|--------| | ADM1-01 | Moderation queue — `GET /admin/reports` (signalements), `POST /admin/reports/:id/resolve` (action: dismiss, warn, ban) | `internal/handlers/admin_handler.go` | M | | ADM1-02 | Migration `125_reports.sql` — table `reports` (reporter_id, reported_user_id, content_type, content_id, reason, status, resolved_by, resolved_at) | Migrations | S | | ADM1-03 | Maintenance mode — env `MAINTENANCE_MODE=true`, middleware retourne 503 sur toutes les routes sauf /health et /admin | `internal/middleware/maintenance.go` (nouveau) | S | | ADM1-04 | Global announcements — `POST /admin/announcements`, `GET /announcements/active`, frontend banner | `internal/handlers/admin_handler.go`, frontend | M | | ADM1-05 | Feature flags UI — `GET /admin/feature-flags`, `PUT /admin/feature-flags/:name`, frontend toggle dans admin | Backend + frontend | M | | ADM1-06 | Frontend admin — ModerationQueueView, AnnouncementsView, FeatureFlagsView | `apps/web/src/features/admin/` | L | | ADM1-07 | Tests — moderation CRUD, maintenance mode 503, announcements, feature flags toggle | Tests | M | ### Lot QA1 — Tests & Release | # | Tâche | Fichiers impactés | Effort | |---|-------|--------------------|--------| | QA1-01 | Smoke test v0.803 | `docs/SMOKE_TEST_V0803.md` | S | | QA1-02 | Mise à jour docs | `docs/` | S | | QA1-03 | Rétrospective, archivage, placeholder v0.901, tag | `docs/`, Git | S | --- ## 4. Hors scope v0.803 | Élément | Version cible | |---------|---------------| | Wishlist marketplace | v0.901 | | Flash sales / promotions | v0.901 | | Creator analytics avancées | v0.901 | | Chat enrichi (images, GIFs) | v0.902 | | Transactional emails | v0.902 | | SOC 2 compliance | v2.0 | | GraphQL API | v2.0 | | SDK JavaScript/Python | v2.0 | | OAuth2 server | v2.0 | | IP whitelisting | v2.0 | | Copyright strike system | v2.0 | --- ## 5. Critères d'acceptation - [ ] CSP, HSTS, X-Frame-Options, X-Content-Type-Options présents dans toutes les réponses HTTP - [ ] Rate limiting global (1000/s) et per-IP (100/s) fonctionnel - [ ] Audit logs : chaque POST/PUT/DELETE crée un log avec user, action, resource, IP - [ ] GET /admin/audit-logs : liste paginée avec filtres, admin only - [ ] DELETE /users/me : soft delete, anonymisation, suppression S3, révocation sessions - [ ] OpenAPI/Swagger accessible sur /swagger/ avec tous les endpoints annotés - [ ] API keys : create, list, revoke, auth via X-API-Key header - [ ] Moderation queue : signalements listés, actions resolve (dismiss, warn, ban) - [ ] Maintenance mode : 503 sur toutes les routes sauf /health et /admin - [ ] Global announcements : créer annonce, afficher banner frontend - [ ] Feature flags : toggle UI dans admin, persiste en DB - [ ] Tag v0.803 créé --- ## 6. Risques | Risque | Mitigation | |--------|------------| | CSP trop strict casse le frontend | Mode report-only d'abord, puis enforce après validation | | Audit logs volume élevé | Retention 90 jours, partition par mois, archivage S3 | | Account deletion cascade complex | Transaction GORM, rollback si erreur, test exhaustif | | Swagger annotations laborieuses | Annoter les handlers critiques d'abord (auth, marketplace) | | Feature flags en DB vs .env | Migration progressive, .env prioritaire en dev | --- ## 7. Références - [V0_802_RELEASE_SCOPE.md](archive/V0_802_RELEASE_SCOPE.md) - [SCOPE_CONTROL.md](SCOPE_CONTROL.md) - [OWASP Security Headers](https://owasp.org/www-project-secure-headers/) - [swaggo/swag](https://github.com/swaggo/swag) - `veza-backend-api/internal/middleware/` - `veza-backend-api/internal/handlers/admin_handler.go` - `apps/web/src/features/developer/` - `apps/web/src/features/admin/`