alliance-boreale/archives/pre-migration/docs-pile-operateur/README.md
Dan Allaire ef98fd8a3f Refonte
2026-03-09 18:23:06 -04:00

76 lines
No EOL
7.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# README - Pile C1-C5 (Opérateur de référence)
Ce dépôt est la **source de vérité** (documentation + configuration + preuves) de la **Pile opérateur de référence** pour lAlliance Boréale (couches **C1 à C5**).
Références normatives : **ADR-OPS-STACK-001** (décision) et **POL-OPS-STACK-001** (exigences + preuves).
## 1) Principes non négociables
- **Membrane** : tout accès exposé passe par **C5 (NGINX + ModSecurity)**, sans bypass vers C2/C3/C4.
- **Traçabilité** : tout changement passe par **PR + ΔLog**, et génère ses preuves.
- **Séparation IaC** : **C4 = plan de vérité** (code, PR, CI, plan) ; **C5 = plan dexécution** (runner `apply` sous contrôle de la membrane).
## 2) Table — Stack opérateur (Exposition + Preuves)
> Les “preuves” ci-dessous référencent les identifiants exigés par **POL-OPS-STACK-001** (Cx-Ey). Les détails (contenu exact attendu) sont dans la POL.
| Couche | Domaine | Composant | Exposition | Preuves attendues |
|--------|------------------------------|----------------------------|-----------------------------------------------|----------------------------------------|
| C1 | Virtualisation | Proxmox VE | Admin-only (réseau gestion) | C1-E1, C1-E3 |
| C1 | Stockage distribué | Ceph | Admin-only (réseau stockage/gestion) | C1-E2, C1-E3 |
| C1 | NAS / landing zone / backup | TrueNAS | Admin-only | C1-E4 (si activé) |
| C2 | Pare-feu / segmentation | OPNsense | Admin-only (enforcement réseau) | C2-E1, C2-E2 |
| C2 | DNS autoritatif | PowerDNS Authoritative | Interne fédération (pas tenants) | C2-E3 |
| C2 | VPN admin / interco | WireGuard | Ops-only | C2-E4 |
| C3 | SSO / IAM | Keycloak | Via C5 (portails/UI) ; admin-only direct | C3-E1 |
| C3 | Annuaire | OpenLDAP | Interne (consommé par C3) | C3 (documenter si requis) |
| C3 | Monitoring états/SLA | Icinga2 | Lecture via C5 (Icinga Web) ; checks internes | C3-E2, C3-E3 |
| C3 | UI monitoring | Icinga Web 2 | Via C5 (SSO) | C3-E2, C3-E3 |
| C3 | Dashboards audit/SLA | Icinga Web 2 BPM | Via C5 (SSO) | C3-E2 |
| C3 | Observabilité métriques | Prometheus | Interne ; consulté via Grafana | C3-E4 |
| C3 | Alerting métriques | Alertmanager | Ops-only (notifications) | C3-E4 |
| C3 | Dashboards unifiés | Grafana | Via C5 (SSO) | C3-E5 |
| C3 | Logs centralisés (référence) | Loki | Ingestion via C5 ; lecture via Grafana | C3-E6 (+ ADR-OBS-001, POL-OBS-LOG-001) |
| C4 | Forge / traçabilité | Forgejo | Via C5 (SSO) | C4-E1 |
| C4 | CI / validation | Forgejo Actions | Interne (CI) | C4-E2 |
| C4 | Registre artefacts | Harbor | Via C5 (auth) | C4-E3 |
| C4 | Secrets | Vault | Interne ; accès restreint (C3/C5) | C4-E4 |
| C4 | Référentiels IaC | OpenTofu + Ansible (code) | Via Forgejo (PR/CI) | C4-E5 |
| C5 | Reverse proxy / WAF | NGINX + ModSecurity | Public/tenant-facing (point dentrée unique) | C5-E1, C5-E2 |
| C5 | Pivot API / portail | FastAPI | Via NGINX (SSO) | C5-E3 |
| C5 | DNS récursif tenants | Unbound | Tenants uniquement (C6+) | C5-E4 |
| C5 | Runner dexécution IaC | OpenTofu + Ansible (apply) | Ops-only (membrane) | C5-E5 |
## 3) IaC : “C4 vérité / C5 exécution” (règle opérateur)
- **C4 (Forgejo + Actions)** héberge le *code* (OpenTofu/Ansible), les PR, le ΔLog, et la **validation** (lint/format/tests + `tofu plan` attaché aux PR).
- **C5 (runner contrôlé)** exécute les actions à privilèges (`tofu apply`, `ansible-playbook`) avec secrets fournis via Vault et accès réseau minimal requis.
- Toute exécution IaC doit être **traçable** : PR → job → logs dexécution → preuves déposées dans `/evidence/`.
## 4) Mode daudit (trimestriel) — 12 lignes
1. Ouvrir la période dans `/evidence/quarterly/YYYY-Qn/`.
2. Vérifier la présence de lindex `evidence/00_Evidence_Index.md` mis à jour.
3. Confirmer C2-E1 (export OPNsense) et C2-E2 (tests non-bypass) pour la période.
4. Confirmer C3-E1 (export Keycloak) et cohérence RBAC ops/audit.
5. Confirmer C3-E2 (exports BPM) couvrant au minimum les services C1C5.
6. Confirmer C3-E3 (couverture checks Icinga + historique alertes/incidents).
7. Confirmer C3-E4 (targets Prometheus + règles Alertmanager + exemple dalerte).
8. Confirmer C3-E5 (exports dashboards Grafana + sources).
9. Confirmer C3-E6 (Loki : labels/rétention + requêtes de preuve reproductibles).
10. Confirmer C4-E1..E4 (Forgejo/Actions/Harbor/Vault) avec artefacts et journaux.
11. Confirmer C4-E5 et C5-E5 (IaC : plan attaché PR + logs dapply côté C5).
12. Produire un ΔLog “Audit trimestriel” liant les preuves et conclure OK/KO.
## 5) Structure du dépôt (résumé)
- `/adr/` : décisions (dont ADR-OPS-STACK-001)
- `/pol/` : politiques (dont POL-OPS-STACK-001, POL-OBS-LOG-001)
- `/configs/` : configs versionnées (opnsense/nginx/unbound/icinga/grafana/loki/harbor/vault, etc.)
- `/iac/` : OpenTofu + Ansible (code) + inventory
- `/runbooks/` : procédures opératoires (incluant exécution IaC en C5)
- `/evidence/` : preuves datées + index (audit mécanique)
- `/dashboards/` : exports Grafana et Icinga BPM
## 6) Règle dor
Si ce nest pas **versionné**, **traçable**, et **prouvable**, ça nexiste pas dans la pile opérateur.