2026-02-24 00:32:04 +00:00
# V0.803 Release Scope — Sécurité, Compliance & Outillage Dev
2026-03-03 08:25:34 +00:00
**Statut** : Livré
2026-02-24 00:32:04 +00:00
**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/`