alliance-boreale/docs/10-architecture/10 - Stack opérateur de référence (C1-C5).md

152 lines
5.3 KiB
Markdown
Raw Normal View History

2026-01-29 09:46:17 -05:00
# ADR-OPS-STACK-001 — Pile opérateur de référence (C1C5)
**Version :** 1.1
**Date :** 26 janvier 2026
**Statut :** Adopté (référence vivante)
**Portée :** Opérateurs (C1C5), Gouvernance, Audit interne/externe
---
## 1. Contexte
LAlliance Boréale requiert une pile logicielle “Opérateur” stable, reproductible et audit-ready pour opérer les couches **C1 à C5** :
- **C1** : capacité (compute) et stockage primaire
- **C2** : segmentation, edge, DNS autoritatif, accès opérateurs
- **C3** : identité et observabilité (SLA, métriques, logs)
- **C4** : forge, traçabilité, CI, artefacts, secrets (plan de vérité)
- **C5** : pivot/membrane (point dentrée unique) et exécution contrôlée (plan dexécution)
Cette standardisation vise :
- réduction de la variabilité inter-opérateurs,
- amélioration de lauditabilité (preuves uniformes),
- simplification du déploiement et de lexploitation,
- cohérence stricte avec le principe de membrane (C5).
---
## 2. Décision
La pile logicielle suivante est adoptée comme **Pile opérateur de référence** (C1C5).
### 2.1 Stack par couche (C1C5)
**C1 — Compute & Storage**
- Proxmox VE
- Ceph
- TrueNAS
**C2 — Segmentation, Edge, DNS autoritatif, Accès ops**
- OPNsense
- PowerDNS Authoritative
- WireGuard
**C3 — IAM & Observabilité**
- Keycloak
- OpenLDAP
- Icinga2 + Icinga Web 2 + BPM
- Prometheus + Alertmanager
- Grafana
- Loki
**C4 — Forge, CI, Artefacts, Secrets (plan de vérité)**
- Forgejo
- Forgejo Actions (CI de validation)
- Harbor
- Vault
- Référentiels IaC : OpenTofu (modules) + Ansible (playbooks/inventaires)
**C5 — Pivot / membrane (plan dexécution)**
- NGINX + ModSecurity
- FastAPI
- Unbound
- Exécution IaC : runner contrôlé (OpenTofu + Ansible)
---
## 3. Règles darchitecture associées
### 3.1 Membrane (point dentrée unique)
- **NGINX + ModSecurity (C5)** constitue le **point dentrée unique** pour les accès utilisateurs/tenants vers les services exposés (portails, APIs, consultation dashboards).
- Les composants internes (C2C4) ne sont pas exposés directement aux tenants.
### 3.2 Cloisonnement “adjacent-only” (principe opérateur)
- Le cloisonnement réseau impose une logique “default deny” et une segmentation par couches.
- Tout contournement de C5 (bypass) est considéré comme une non-conformité sauf exception formalisée.
### 3.3 Traçabilité (PR + ΔLog)
- Toute modification (config, infra, politiques, runbooks) est versionnée dans Forgejo via PR.
- Chaque PR doit être reliée à une entrée ΔLog (trace de décision et de preuve).
### 3.4 Séparation IaC : référentiel vs exécution (invariant)
Cette séparation est un invariant (sécurité + gouvernance), pas une convention de mots :
- **C4 (plan de vérité)** : contient et gouverne le **code IaC** (OpenTofu/Ansible), la validation CI (format/lint/tests/plan), et la traçabilité (PR/ΔLog).
- **C5 (plan dexécution)** : exécute les actions à privilèges (ex. `tofu apply`, `ansible-playbook`) via un **runner contrôlé**, afin de :
- concentrer les privilèges au niveau de la membrane,
- imposer des contrôles uniformes (RBAC, quotas, journalisation),
- empêcher quune compromission de la forge/CI se transforme automatiquement en compromission infra.
> Note : le runner dexécution peut être techniquement un “Forgejo Actions runner”, mais son **positionnement réseau et ses droits** le rattachent à C5 (membrane).
---
## 4. Conséquences
### 4.1 Bénéfices
- Standardisation : onboarding opérateur accéléré.
- Auditabilité : preuves minimales uniformes (BPM, Grafana, Loki, exports OPNsense).
- Réduction de la surface dattaque : exécution IaC contrôlée et centralisée en C5.
- Exploitabilité : séparation claire entre observabilité (C3) et exposition (C5).
### 4.2 Obligations
- Discipline de changements : PR + ΔLog obligatoires.
- Preuves : collecte structurée et indexée selon la politique `POL-OPS-STACK-001`.
- Maintien : versions supportées, runbooks, et exécutions IaC traçables.
---
## 5. Critères dacceptation
La pile est considérée **en place** pour un opérateur lorsque :
1) Tous les composants (C1C5) sont déployés et accessibles conformément au principe de membrane.
2) Le cloisonnement réseau est démontré (OPNsense + tests de non-bypass).
3) SSO (Keycloak) protège les portails (Grafana, Icinga Web) via C5.
4) Les preuves minimales `POL-OPS-STACK-001` existent, datées et indexées.
5) Les changements IaC sont gouvernés en C4, et exécutés via C5 avec traçabilité complète.
---
## 6. Gouvernance des changements
Toute modification à la pile opérateur de référence exige :
- PR + ΔLog,
- mise à jour des runbooks et des preuves attendues,
- ADR additionnel si changement de composant ou de rôle.
---
## 7. Références internes
- POL-OPS-STACK-001 — Conformité pile opérateur (C1C5) — preuves attendues
- ADR-OBS-001 — Loki comme backend de logs de référence
- POL-OBS-LOG-001 — Contrat de journalisation (Logs) — Référence Loki
---
## 8. ΔLog (à compléter au commit)
- Décision : Adoption de la pile opérateur de référence (C1C5)
- Auteur(s) : __________________
- Référence PR : __________________
- Date dentrée : __________________