Add Release Scope, Implementation Plan, and Smoke Test for 7 versions: - v0.703: Go Live & Streaming Complet (Phase 7 Finale) - v0.801: UX/UI Polish, Accessibilite & PWA (Phase 8) - v0.802: Cloud Complet, Fichiers & Gear Avance (Phase 8) - v0.803: Securite, Compliance & Outillage Dev (Phase 8) - v0.901: Marketplace Complet & Analytics Avances (Phase 9) - v0.902: Social Complet, Chat & Notifications (Phase 9) - v0.903: Stabilisation v1.0 & Launch Readiness (Phase 9) 21 documents total (3 per version), covering all remaining features needed to reach v1.0 from v0.702.
9 KiB
9 KiB
V0.803 Release Scope — Sécurité, Compliance & Outillage Dev
Statut : Planifié 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
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
- SCOPE_CONTROL.md
- OWASP Security Headers
- swaggo/swag
veza-backend-api/internal/middleware/veza-backend-api/internal/handlers/admin_handler.goapps/web/src/features/developer/apps/web/src/features/admin/