WIP: docs(gouvernance): mise à jour cartographie ANSSI, architecture outils et PSSI #3

Draft
M7s wants to merge 1 commits from docs/v1.x into main
3 changed files with 62 additions and 73 deletions

View File

@ -1,4 +1,4 @@
# 🛡️ Principes de Souveraineté Technologique & PSSI Gorym (ex-RYM)
# 🛡️ Principes de Souveraineté Technologique & PSSI Gorym
> **Classification** : Document Officiel — Due Diligence / ISO 27001
> **Portée** : Infrastructure, Applications & Gouvernance de la Donnée
@ -9,7 +9,7 @@
Le projet exclut rigoureusement l'usage de toute brique logicielle, SaaS ou infrastructurelle soumise à des juridictions extra-européennes restrictives :
* ❌ **États-Unis** : Exclusion totale (Zero Cloud Act, FISA 702, surveillance de masse).
* ❌ **États-Unis** : Exclusion totale (Zero Cloud Act, FISA 702, surveillance de masse, Adobe/Figma Cloud, Google Workspace, Slack).
* ❌ **Chine** : Absence de transparence et risque de dépendance stratégique.
* ❌ **Royaume-Uni** : Post-Brexit (hors cadre strict RGPD / UE).
* ❌ **Russie / Moyen-Orient** : Risques d'ingérence et de rupture de service.
@ -18,26 +18,27 @@ Le projet exclut rigoureusement l'usage de toute brique logicielle, SaaS ou infr
## 2. Cartographie de la Stack Technique "100 % EU & Open-Source"
Toute solution intégrée est développée, maintenue et hébergée au sein de l'Union Européenne :
Toute solution intégrée est développée, maintenue et hébergée au sein de l'Union Européenne (France/Allemagne) :
* **Système d'Exploitation** : Debian GNU/Linux (Communauté décentralisée, base européenne).
* **Infrastructure & Hébergement** : VPS dédiés situés en France (OVHcloud).
* **Gestion des Secrets & PGP** : Passbolt (`secrets.gorym.net` - Luxembourg/EU).
* **Espace Cloud & Documents** : OwnCloud Infinite Scale (`cloud.gorym.fr` - Allemagne/EU).
* **Code, CI/CD & Versionnage** : Gitea (`git.gorym.net` - Gouvernance compatible UE).
* **Gestion de Projet (HQ)** : Kanboard (`hq.gorym.fr` - Open-Source UE).
* **Observabilité & Monitoring** : Netdata (`monitor.gorym.net` - Grèce/EU).
* **Infrastructure & Hébergement** : VPS dédiés situés en France (OVHcloud, IP `213.32.20.132`).
* **Design & Prototypage** : Penpot (`design.gorym.fr` - Open-Source MPL 2.0).
* **Gestion des Secrets & MDP** : Vaultwarden (`vault.gorym.fr` - Chiffrement Zero-Knowledge).
* **Espace Cloud & Documents** : OwnCloud Infinite Scale / OCIS (`drive.gorym.fr` - Allemagne/EU).
* **Code, CI/CD & Versionnage** : Gitea (`git.gorym.fr` - Open-Source UE).
* **Communication Chiffrée** : Matrix Synapse + Element (`chat.gorym.fr` - Chiffrement E2EE).
* **Observabilité & Monitoring** : Netdata (`monitor.gorym.fr` - Grèce/EU).
---
## 3. Politiques de Sécurité de l'Information (PSSI — Alignment ISO 27001)
### A. Control des Accès & Gestion des Clés (ISO 27001 — A.9)
* **Identité Numérique** : Attribution stricte d'une identité nominative `@gorym.net`.
### A. Contrôle des Accès & Gestion des Clés (ISO 27001 — A.9)
* **Identité Numérique** : Attribution stricte d'une identité nominative `@gorym.fr`.
* **Zero Plain-Text Secrets** : Interdiction formelle de transmettre des mots de passe ou tokens par courriel/chat.
* **Chiffrement Assymétrique** : Utilisation exclusive du coffre-fort Passbolt avec chiffrement PGP/GPG (clés 4096 bits / ECDSA).
* **Coffre-fort centralisé** : Stockage exclusif des accès, clés d'application (`PENPOT_SECRET_KEY`) et secrets de bases de données dans Vaultwarden.
### B. Traçabilité & Approche GitOps (ISO 27001 — A.12 & A.14)
* **Zero Modification en Production** : Aucune intervention manuelle directe sur les serveurs.
* **Zero Modification en Production** : Interdiction d'intervenir manuellement en mode ad-hoc sur les bases ou conteneurs sans documentation.
* **Auditabilité** : Toute modification d'infrastructure ou de code est effectuée via des commits traçables, signés et validés par Pull Request sur Gitea.
* **Injection Sécurisée en CI/CD** : Les secrets sont extraits dynamiquement lors de l'exécution des runners via CLI Passbolt.
* **Persistance & Résilience** : Configuration des services Podman pour redémarrer automatiquement en cas de reboot du serveur (`podman-restart`).

View File

@ -1,29 +1,29 @@
### 📄 2. `techniques/ARCHITECTURE_OUTILS.md`
# Architecture des Outils & Stratégie Souveraine
## 1. Vision Métier & Ergonomie "Non-Tech"
Pour garantir une adoption fluide par l'ensemble de l'équipe (profils techniques et non-techniques) sans multiplier les outils :
* **Zéro CRM/Usine à gaz complexe** : Le suivi de projet et la gouvernance se font directement via l'interface web de Gitea (`git.gorym.net`).
* **Validation en 1-clic** : La relecture et la validation des documents/code se font via le bouton **"Approuver"** de l'interface web, sans aucune ligne de commande.
* **Unified Domain** : L'ensemble des services métiers et techniques sont regroupés sous l'écosystème unifié `*.gorym.net`.
* **Forge & Projets** : Le suivi de projet, la gouvernance et les revues de code se font directement via l'interface web de Gitea (`git.gorym.fr`).
* **Validation en 1-clic** : La relecture et la validation du code ou de la documentation se font via le bouton **"Approuver"** de l'interface web Gitea.
* **Prototypage & Design Collaboratif** : Utilisation de Penpot (`design.gorym.fr`), alternative directe et souveraine à Figma/Adobe, permettant aux profils UX/UI et Produit de collaborer sans friction.
* **Unified Domain** : L'ensemble des services métiers, collaboratifs et techniques sont regroupés sous l'écosystème unifié `*.gorym.fr`.
---
## 2. Stack Technique Souveraine (EU Compliance)
Afin d'éliminer toute dépendance aux Cloud Act US (Vercel, Supabase SaaS, Anthropic) :
Afin d'éliminer toute dépendance aux Cloud Act US (Vercel, Supabase SaaS, Adobe Creative Cloud, Slack, Google Drive) :
| Couche Applicative | Stack Cible Souveraine | Remplacement Souverain |
| :--- | :--- | :--- |
| **Hébergement Frontend** | React 18 / Vite (Nginx Podman) | Remplacement de Vercel public par le VPS Debian Podman. |
| **Orchestration & Runtime** | **Podman (Dev/Mono) -> Cluster k3s (Prod)** | Alternatif souverain léger à Docker et aux services Kubernetes Cloud gérés (EKS/GKE). |
| **Backend & API** | Node.js Express / Python FastAPI | Remplacement des fonctions Vercel Serverless. |
| **Base de Données** | PostgreSQL (Rootless Podman) | Auto-hébergement local du script `supabase-military.sql`. |
| **Secrets & Passwords** | Passbolt / Bitwarden Send | Hôte sur `send.gorym.net` (Zero-Knowledge). |
| **IA & Audio (Horizon)** | API Souveraines / Modèles Open-Source | Transition progressive depuis Claude/ElevenLabs vers des modèles UE. |
| **Communication & Chat** | **Matrix(Synapse) + Client Element | Alternative souveraine E2EE (chiffrée de bout en bout) à Slack, Mattermost & Teams |
| **Hébergement & Proxy** | Debian GNU/Linux + Nginx + Certbot | Reverse proxy HTTPS (TLS 1.3) hébergé sur VPS OVH (France). |
| **Orchestration & Runtime** | **Podman (`podman-compose`)** | Moteur OCI souverain avec gestion unifiée de la stack applicative. |
| **Design & UI/UX** | **Penpot** (`design.gorym.fr`) | Remplacement d'Adobe XD / Figma par Penpot (Postgres 15 + Valkey 8.1 + Exporter). |
| **Stockage & Fichiers** | **OwnCloud Infinite Scale / OCIS** (`drive.gorym.fr`) | Remplacement de Google Drive / OneDrive par OCIS (Go/Microservices). |
| **Secrets & Coffre-fort** | **Vaultwarden** (`vault.gorym.fr`) | Remplacement de Bitwarden Cloud / Passbolt (Chiffrement Zero-Knowledge). |
| **Communication & Chat** | **Matrix (Synapse) + Element** (`chat.gorym.fr`) | Alternative E2EE (chiffrement de bout en bout) à Slack, Teams & Discord. |
| **Forge Code & CI/CD** | **Gitea + Gitea Runner** (`git.gorym.fr`) | Alternative souveraine à GitHub / GitLab SaaS. |
| **Observabilité** | **Netdata** (`monitor.gorym.fr`) | Monitoring local léger et souverain. |
---
@ -32,5 +32,5 @@ Afin d'éliminer toute dépendance aux Cloud Act US (Vercel, Supabase SaaS, Anth
| Périmètre | Marc Lasserre (Tech/DevSecOps) | Marlène Marigny (Product/Stratégie) |
| :--- | :--- | :--- |
| **Infra & SecOps** | Maintien Podman, CI/CD, Nginx, Backups | Utilisation des endpoints applicatifs |
| **Gouvernance** | Rédaction technique, règles GPG, PSSI | Validation web des PR, gestion de la Roadmap |
| **Product & App** | Intégration SecOps du code React/API | Design, fonctionnalités métier, Dépôt de code sur Gitea |
| **Gouvernance** | Rédaction technique, règles PGP, PSSI | Validation web des PR, gestion de la Roadmap |
| **Product & App** | Intégration SecOps du code React/API | Design sur Penpot, fonctionnalités métier, Dépôt sur Gitea |

View File

@ -1,66 +1,54 @@
# Cartographie du SI & Cloisonnement (Guide ANSSI)
## 1. Principes Général & Doctrine d'Isolation
## 1. Principes Généraux & Doctrine d'Isolation
Conformément aux recommandations de l'ANSSI, le Système d'Information (SI) du projet est cloisonné en deux périmètres strictement étanches pour limiter la surface d'attaque et contenir tout risque de propagation.
Conformément aux recommandations de l'ANSSI, le Système d'Information (SI) du projet est cloisonné pour limiter la surface d'attaque et contenir tout risque de propagation.
* **SI IT & Outillage (DevSecOps / Administration)** : Héberge la forge, la CI/CD, les secrets et la documentation cadre.
* **SI Général / Production (Applicatif Peakload)** : Héberge l'application client, l'API et la base de données physiologiques.
* **SI IT & Outillage (DevSecOps / Collaboratif)** : Héberge la forge, la CI/CD, le coffre-fort de secrets, l'outil de design et la messagerie chiffrée.
* **SI Général / Production (Applicatif Peakload)** : Héberge l'application client, l'API et la base de données.
---
## 2. Matrice de Cloisonnement des deux SI
## 2. Matrice de Cloisonnement des Services
```text
[ Internet / Public ]
[ Reverse Proxy Nginx (TLS 1.3 / WAF) ]
[ Reverse Proxy Nginx (Port 80 / 443 - TLS 1.3 / Let's Encrypt) ]
├──────────────────────────────────────┐
▼ ▼
┌──────────────────────────────┐ ┌──────────────────────────────┐
│ SI GENERAL / PRODUCTION │ │ SI IT / OUTILLAGE │
│ Zone Applicative Peakload │ │ Zone DevSecOps & Governance │
├──────────────────────────────┤ ├──────────────────────────────┤
│ • App Web (React/Vite) │ │ • Forge (`git.gorym.net`) │
│ • API Engine (FastAPI/Node) │ │ • Runner CI/CD (`act_runner`)│
│ • BDD (PostgreSQL Rootless) │ │ • Secrets (`send/passbolt`) │
└──────────────────────────────┘ └──────────────────────────────┘
├──────────────────────────────────────────────────────────┐
▼ ▼
┌─────────────────────────────────────────┐ ┌─────────────────────────────────────────┐
│ SI COLLABORATIF & OUTILLAGE │ │ SI GENERAL / PRODUCTION PEAKLOAD │
├─────────────────────────────────────────┤ ├─────────────────────────────────────────┤
│ • Design : Penpot (`design.gorym.fr`) │ │ • App Web : React/Vite (`app.gorym.fr`) │
│ • Fichiers : OCIS (`drive.gorym.fr`) │ │ • API Engine : FastAPI/Node │
│ • Secrets : Vaultwarden (`vault...`) │ │ • Base BDD : PostgreSQL (Isolé) │
│ • Chat : Matrix/Element (`chat...`) │ └─────────────────────────────────────────┘
│ • Forge : Gitea (`git.gorym.fr`) │
└─────────────────────────────────────────┘
```
---
## 3. Matrice des Flux & Cartographie Réseau
| Zone | Composant | Port Interne | Exposition Publique | Protocole / Usage
| :--- | :--- | :--- | :--- | :--- |
| **Edge** | Reverse Proxy (Nginx) | 80, 443 | Oui (gorym.net) | HTTPS (TLS 1.3 Strict) |
| **SI IT** | Forge Gitea | 3000 | Via Proxy (git.gorym.net) | HTTP/SSH Chiffré |
| **SI IT** | Secrets (Passbolt/Send)| 8080 | Via Proxy (send.gorym.net) |HTTPS Zero-Knowledge |
| **SI IT** | Chat & Visioconference (Matrix/Element) | 8008, 8081 | Via Proxy (chat.gorym.net) | HTTPS / E2EE (Chiffrement bout en bout) |
| **SI Prod** | Frontend Peakload | 5000 | Via Proxy (app.gorym.net) | HTTPS |
| **SI Prod** | API Core | 8000 | Interne Podman uniquement | REST / JSON |
| **SI Prod** | Base PostgreSQL |5432 | **NON (Isolé Podman)** |SQL interne chiffré |
| Service | Domaine Public | Port Interne (127.0.0.1) | Protocole / Usage |
| :--- | :--- | :--- | :--- |
| **Reverse Proxy** | `*.gorym.fr` | 80, 443 | HTTPS / TLS 1.3 Strict |
| **Penpot Frontend** | `design.gorym.fr` | 9001 | HTTP (Relayé Nginx / WebSockets) |
| **Vaultwarden** | `vault.gorym.fr` | 8080 | HTTP Zero-Knowledge |
| **Matrix Synapse** | `matrix.gorym.fr` | 8008 | HTTP / API Matrix |
| **Element Web** | `chat.gorym.fr` | 8081 | HTTP Client Web |
| **OCIS (Drive)** | `drive.gorym.fr` | 9200 | HTTP / WebDAV |
| **Gitea Forge** | `git.gorym.fr` | 3000 | HTTP / Git |
| **Gitea Runner** | Interne | N/A | Exécution CI/CD |
| **Netdata** | `monitor.gorym.fr` | 19999 | HTTP Monitoring |
---
## 4. Mesures de SecOps & Isolation ANSSI
* *Réseaux Podman distincts :* Le SI IT et le SI Prod tournent sur deux réseaux virtuels Podman internes totalement séparés.
* *Privilèges :* Exécution à 100 % sous mode Rootless (aucun conteneur n'est exécuté sous l'utilisateur root du VPS).
* *Base de données isolée :* PostgreSQL n'a aucun port exposé sur l'extérieur. Seule l'API interne du pod Prod peut communiquer avec lui.
---
## 5. Trajectoire d'Orchestration Haute Disponibilité (k3s Cluster)
Afin de garantir la scalabilité, la résilience et la haute disponibilité (HA) du SI Général/Production sans aucune dépendance aux orchestrateurs Cloud propriétaires :
* **Runtime de proximité / Dev** : Les services sont conteneurisés sous **Podman** (mode Rootless, respect strict des normes OCI).
* **Orchestration de Production (k3s)** : Le déploiement s'appuie sur un cluster **k3s** (distribué, léger, certifié CNCF) auto-hébergé sur des instances VPS souveraines européennes.
* **Isolation par Namespaces Kubernetes** :
* `namespace: rym-core` (API, Moteur ML, Traitement VRC/Santé)
* `namespace: rym-db` (PostgreSQL / Redis isolés avec NetworkPolicies strictes)
* `namespace: rym-ingress` (Ingress Controller Nginx / TLS 1.3)
* **Sécurité des Pods (PSS)** : Application des règles *Restricted Pod Security Standards* de Kubernetes (interdiction des privilèges root, contraintes de capabilités Linux).
---
* **Boucle locale stricte (`127.0.0.1`)** : Aucun conteneur applicatif n'expose directement ses ports sur `0.0.0.0` (IP publique). Tout le trafic passe exclusivement par le reverse proxy Nginx.
* **Orchestration unifiée** : Les conteneurs sont orchestrés via Podman (`podman-compose`) et démarrés automatiquement au boot du système via `systemctl enable podman-restart`.
* **Bases de données isolées** : Les bases de données (PostgreSQL 15 de Penpot, Valkey/Redis) et les volumes de données ne sont pas accessibles depuis l'extérieur.