Compare commits
No commits in common. "docs/v1.x" and "main" have entirely different histories.
|
|
@ -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.
|
||||||
|
|
|
||||||
|
|
@ -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 |
|
||||||
|
|
|
||||||
|
|
@ -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).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue