Files
memegoat/documentation/content/docs/security.mdx
Mathis HERRIOT 99a350aa05 docs: overhaul and expand technical documentation
Revamped the documentation structure and content to enhance usability and organization. Added detailed sections on architecture, pipeline, security, API reference, deployment steps, compliance, and supported modules. Introduced new visuals like cards, accordions, and callouts for improved readability and navigation.
2026-01-08 15:29:56 +01:00

38 lines
2.5 KiB
Plaintext

---
title: Sécurité
description: Mesures de sécurité implémentées
---
## 🔐 Sécurité
### Protection des Données (At Rest)
- **Chiffrement PGP Natif** : Les données identifiantes (PII) comme l'email, le nom d'affichage et le **secret 2FA** sont chiffrées dans PostgreSQL via `pgcrypto` (`pgp_sym_encrypt`).
<Callout type="warn" title="Sécurité des Clés">
Les clés de déchiffrement ne sont jamais stockées en base de données. Elles sont injectées via les variables d'environnement au démarrage du service.
</Callout>
- **Hachage aveugle (Blind Indexing)** : Pour permettre la recherche et l'unicité sur les données chiffrées (comme l'email), un hash non réversible (SHA-256) est stocké séparément (`email_hash`).
- **Hachage des mots de passe** : Utilisation d'**Argon2id** (via `@node-rs/argon2`), configuré selon les recommandations de l'ANSSI pour résister aux attaques par force brute et par table de correspondance.
### Sécurité des Communications (In Transit)
- **TLS 1.3** : Assuré par le reverse proxy **Caddy** avec renouvellement automatique des certificats Let's Encrypt.
- **Protocoles d'Authentification** :
- **Sessions (iron-session)** : Utilisation de cookies sécurisés, `HttpOnly`, `Secure` et `SameSite: Strict`. Les tokens (JWT) sont stockés dans ces cookies chiffrés côté serveur, empêchant tout accès via JavaScript (XSS).
- **API Keys** : Les clés API sont hachées en base de données (**SHA-256**) via la colonne `key_hash`. Seul un préfixe est conservé en clair pour l'identification.
### Infrastructure & Surveillance
<Cards>
<Card title="Antivirus (ClamAV)" description="Scan systématique de tous les fichiers entrants avant stockage." />
<Card title="Sentry" description="Suivi des erreurs en temps réel avec respect strict du RGPD." />
<Card title="Rate Limiting" description="Protection contre le brute-force et le DoS via NestJS Throttler." />
<Card title="RBAC" description="Contrôle d'accès granulaire basé sur les rôles et permissions." />
</Cards>
- **CORS Policy** : Restriction stricte des origines autorisées, configurée dynamiquement selon l'environnement.
- **Security Headers** : Utilisation de `helmet` pour activer les protections standards des navigateurs (XSS, Clickjacking, etc.).
- **Audit Logs** : Traçabilité complète des actions sensibles via la table `audit_logs`. Elle enregistre l'action, l'entité concernée, les détails au format JSONB, ainsi que l'IP hachée et le User-Agent pour l'imputabilité.