Compare commits

..

No commits in common. "docs/v1.x" and "main" have entirely different histories.

3 changed files with 74 additions and 63 deletions

View File

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

View File

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

View File

@ -1,54 +1,66 @@
# Cartographie du SI & Cloisonnement (Guide ANSSI) # Cartographie du SI & Cloisonnement (Guide ANSSI)
## 1. Principes Généraux & Doctrine d'Isolation ## 1. Principes Général & Doctrine d'Isolation
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. 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.
* **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 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. * **SI Général / Production (Applicatif Peakload)** : Héberge l'application client, l'API et la base de données physiologiques.
--- ---
## 2. Matrice de Cloisonnement des Services ## 2. Matrice de Cloisonnement des deux SI
```text ```text
[ Internet / Public ] [ Internet / Public ]
[ Reverse Proxy Nginx (Port 80 / 443 - TLS 1.3 / Let's Encrypt) ] [ Reverse Proxy Nginx (TLS 1.3 / WAF) ]
├────────────────────────────────────────────────────────── ├──────────────────────────────────────┐
▼ ▼ ▼ ▼
┌─────────────────────────────────────────┐ ┌─────────────────────────────────────────┐ ┌──────────────────────────────┐ ┌──────────────────────────────┐
│ SI COLLABORATIF & OUTILLAGE │ │ SI GENERAL / PRODUCTION PEAKLOAD │ │ SI GENERAL / PRODUCTION │ │ SI IT / OUTILLAGE │
├─────────────────────────────────────────┤ ├─────────────────────────────────────────┤ │ Zone Applicative Peakload │ │ Zone DevSecOps & Governance │
│ • Design : Penpot (`design.gorym.fr`) │ │ • App Web : React/Vite (`app.gorym.fr`) │ ├──────────────────────────────┤ ├──────────────────────────────┤
│ • Fichiers : OCIS (`drive.gorym.fr`) │ │ • API Engine : FastAPI/Node │ │ • App Web (React/Vite) │ │ • Forge (`git.gorym.net`) │
│ • Secrets : Vaultwarden (`vault...`) │ │ • Base BDD : PostgreSQL (Isolé) │ │ • API Engine (FastAPI/Node) │ │ • Runner CI/CD (`act_runner`)│
│ • Chat : Matrix/Element (`chat...`) │ └─────────────────────────────────────────┘ │ • BDD (PostgreSQL Rootless) │ │ • Secrets (`send/passbolt`) │
│ • Forge : Gitea (`git.gorym.fr`) │ └──────────────────────────────┘ └──────────────────────────────┘
└─────────────────────────────────────────┘
``` ```
--- ---
## 3. Matrice des Flux & Cartographie Réseau ## 3. Matrice des Flux & Cartographie Réseau
| Service | Domaine Public | Port Interne (127.0.0.1) | Protocole / Usage | | Zone | Composant | Port Interne | Exposition Publique | Protocole / Usage
| :--- | :--- | :--- | :--- | | :--- | :--- | :--- | :--- | :--- |
| **Reverse Proxy** | `*.gorym.fr` | 80, 443 | HTTPS / TLS 1.3 Strict | | **Edge** | Reverse Proxy (Nginx) | 80, 443 | Oui (gorym.net) | HTTPS (TLS 1.3 Strict) |
| **Penpot Frontend** | `design.gorym.fr` | 9001 | HTTP (Relayé Nginx / WebSockets) | | **SI IT** | Forge Gitea | 3000 | Via Proxy (git.gorym.net) | HTTP/SSH Chiffré |
| **Vaultwarden** | `vault.gorym.fr` | 8080 | HTTP Zero-Knowledge | | **SI IT** | Secrets (Passbolt/Send)| 8080 | Via Proxy (send.gorym.net) |HTTPS Zero-Knowledge |
| **Matrix Synapse** | `matrix.gorym.fr` | 8008 | HTTP / API Matrix | | **SI IT** | Chat & Visioconference (Matrix/Element) | 8008, 8081 | Via Proxy (chat.gorym.net) | HTTPS / E2EE (Chiffrement bout en bout) |
| **Element Web** | `chat.gorym.fr` | 8081 | HTTP Client Web | | **SI Prod** | Frontend Peakload | 5000 | Via Proxy (app.gorym.net) | HTTPS |
| **OCIS (Drive)** | `drive.gorym.fr` | 9200 | HTTP / WebDAV | | **SI Prod** | API Core | 8000 | Interne Podman uniquement | REST / JSON |
| **Gitea Forge** | `git.gorym.fr` | 3000 | HTTP / Git | | **SI Prod** | Base PostgreSQL |5432 | **NON (Isolé Podman)** |SQL interne chiffré |
| **Gitea Runner** | Interne | N/A | Exécution CI/CD |
| **Netdata** | `monitor.gorym.fr` | 19999 | HTTP Monitoring |
---
## 4. Mesures de SecOps & Isolation ANSSI ## 4. Mesures de SecOps & Isolation ANSSI
* **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. * *Réseaux Podman distincts :* Le SI IT et le SI Prod tournent sur deux réseaux virtuels Podman internes totalement séparés.
* **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`. * *Privilèges :* Exécution à 100 % sous mode Rootless (aucun conteneur n'est exécuté sous l'utilisateur root du VPS).
* **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. * *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).
---