Document opérationnel - Définir les standards techniques obligatoires et recommandés pour garantir l'interopérabilité entre membres de l'Alliance Boréale.
Some checks are pending
CI / yaml-lint (push) Waiting to run
CI / ssot-export (push) Waiting to run
CI / tests (push) Waiting to run
CI / docs (push) Waiting to run

This commit is contained in:
Dan Allaire 2025-10-26 23:51:58 -04:00
parent 40852f7931
commit 59abf2d0ca

View file

@ -0,0 +1,399 @@
# 📄 Document 6 : Standards d'Interopérabilité Technique
**Version :** 1.0
**Date :** 26 octobre 2025
**Statut :** Document opérationnel
**Objet :** Définir les standards techniques obligatoires et recommandés pour garantir l'interopérabilité entre membres de l'Alliance Boréale.
**Compatibilité :** Conforme aux documents `00_Modele_8_couches_v3.md`, `00_Nomenclature_v3.md` et `00_Glossaire_v3.md`.
---
## 🌱 Préambule
> L'interopérabilité n'est pas une contrainte technique — c'est une **garantie de liberté**.
> Chaque protocole ouvert est une porte de sortie, chaque standard mature est une promesse de pérennité.
Ce document s'inscrit dans le principe de **portabilité des tenants** (§1.2 de `00_Nomenclature_v3.md`) et respecte le principe **adjacent-only** (§2.1 de `00_Modele_8_couches_v3.md`).
---
## 🧬 1. Philosophie de l'interopérabilité
### 1.1 Principes directeurs
Conformément au **Glossaire v3** (Famille C — Lexique cognitif), l'Alliance adopte les principes suivants :
| Principe | Signification | Référence |
|----------|--------------|-----------|
| **Protocoles ouverts avant tout** | Standards publics, documentés, implémentables librement | Modèle v3 §5.1 |
| **Préférence pour standards matures** | RFCs, W3C, spécifications éprouvées | Glossaire v3 |
| **Éviter les silos technologiques** | Refus de toute solution propriétaire sans alternative | Règlement v3 §II |
| **Faciliter la migration des utilisateurs** | Portabilité garantie (export complet testable) | Nomenclature v3 §1.2 |
### 1.2 Hiérarchie des standards
```
Obligatoire → Implémentation requise pour conformité minimale
Recommandé → Implémentation fortement encouragée
Optionnel → Valeur ajoutée, non requis pour le label
```
---
## 🔐 2. Identité fédérée (Single Sign-On)
**Couche concernée :** C3 (Gouvernance) → C5 (Pivot) → C6 (Services tenant)
### 2.1 Standards requis (Obligatoires)
Conformément à `00_Nomenclature_v3.md` §1.2.4 (Identité & DNS fédérés) :
| Standard | Version minimale | Usage |
|----------|------------------|-------|
| **OpenID Connect** | 1.0 | Authentification fédérée (recommandé) |
| **SAML 2.0** | 2.0 | Authentification fédérée (accepté) |
| **OAuth 2.0** | 2.1 | Autorisation pour APIs |
### 2.2 Implémentations recommandées
| Solution | Type | Justification |
|----------|------|---------------|
| **Keycloak** | IdP complet | Référence recommandée, mature, open source |
| **Authelia** | Proxy auth | Léger, adapté aux petites structures |
| **Authentik** | IdP moderne | Alternative viable, interface moderne |
**Exigence minimale :** Publication des métadonnées de fédération (.well-known/openid-configuration)
### 2.3 Attributs minimaux échangés
Conformément au principe de **minimisation des données** (Cadre Conformité v3 §2.3) :
```yaml
attributs_obligatoires:
- sub: Identifiant unique (UUID ou équivalent)
- email: Adresse courriel de contact
- name: Nom d'affichage
attributs_optionnels:
- groups: Appartenance à des groupes/rôles
- picture: Avatar utilisateur
```
### 2.4 Respect du principe adjacent-only
**IMPORTANT :** Les tenants (C6-C8) **ne communiquent jamais directement** avec l'IdP fédéré (C3).
Toutes les authentifications passent par **C5 (Pivot)**.
```
Flux correct :
Tenant C6 → C5 (Pivot) → C3 (IdP Keycloak) → C5 → C6
Flux interdit :
Tenant C6 ──X──> C3 (accès direct)
```
---
## 📧 3. Courriel
**Couche concernée :** C2 (Réseau/DNS) + C6 (Services)
### 3.1 Standards obligatoires
| Standard | RFC | Fonction |
|----------|-----|----------|
| **SMTP** | RFC 5321 | Envoi de messages |
| **IMAP / POP3** | RFC 3501 / 1939 | Réception de messages |
| **DKIM** | RFC 6376 | Signature des messages |
| **SPF** | RFC 7208 | Validation expéditeur |
| **DMARC** | RFC 7489 | Politique de validation |
| **TLS** | RFC 8314 | Chiffrement transport (STARTTLS obligatoire) |
### 3.2 Fonctionnalités recommandées
| Fonctionnalité | Standard | Justification |
|----------------|----------|---------------|
| **S/MIME** | RFC 8551 | Chiffrement bout-à-bout |
| **PGP/GPG** | RFC 4880 | Alternative chiffrement E2E |
| **Listes de diffusion** | — | Mailman 3, Sympa (facilite la coopération) |
| **Antispam collaboratif** | — | Rspamd, SpamAssassin (mutualisation possible) |
### 3.3 Configuration DNS minimale
Conformément à `00_Nomenclature_v3.md` §4 (Plan d'adressage) :
```dns
; Exemple pour membre.alliance-boreale.ca
membre.alliance-boreale.ca. IN MX 10 mail.membre.alliance-boreale.ca.
membre.alliance-boreale.ca. IN TXT "v=spf1 mx -all"
_dmarc.membre.alliance-boreale.ca. IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@membre.ca"
default._domainkey.membre.ca. IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCS..."
```
---
## 📁 4. Partage de fichiers et collaboration
**Couche concernée :** C6 (Services tenant)
### 4.1 Protocoles ouverts obligatoires
| Protocole | RFC/Standard | Usage |
|-----------|--------------|-------|
| **WebDAV** | RFC 4918 | Partage de fichiers web |
| **CalDAV** | RFC 4791 | Calendriers partagés |
| **CardDAV** | RFC 6352 | Carnets d'adresses |
| **SFTP/SCP** | — | Transfert sécurisé fichiers |
### 4.2 Solutions recommandées
| Solution | Type | Justification |
|----------|------|---------------|
| **Nextcloud** | Suite complète | Référence recommandée (fichiers + calendriers + contacts) |
| **Seafile** | Stockage fichiers | Alternative performante |
| **ownCloud** | Suite complète | Alternative viable |
**Exigence :** Support **obligatoire** de WebDAV pour la portabilité des données.
### 4.3 Partage public
- Liens de partage temporaires (avec expiration configurable)
- Protection par mot de passe optionnelle
- Limitation du nombre de téléchargements
---
## 🎥 5. Visioconférence
**Couche concernée :** C6 (Services tenant)
### 5.1 Standards et protocoles
| Standard | Usage | Statut |
|----------|-------|--------|
| **Jitsi Meet** | Visioconférence web | Recommandé |
| **SIP/RTP** | Protocole téléphonie | Pour interopérabilité |
| **WebRTC** | Communication temps réel | Sous-jacent à Jitsi |
### 5.2 Exigences
- ✅ Hébergement local (pas de relais cloud propriétaire)
- ✅ Chiffrement bout-à-bout optionnel (selon sensibilité)
- ✅ Enregistrement possible (avec consentement explicite des participants)
- ❌ Interdiction de solutions propriétaires sans alternative (Zoom, Teams)
**Conformité éthique :** Respect du principe de **sobriété numérique** (Glossaire v3) — privilégier audio seul si vidéo non nécessaire.
---
## 💬 6. Messagerie instantanée
**Couche concernée :** C6 (Services tenant)
### 6.1 Protocole requis
| Protocole | Version | Statut |
|-----------|---------|--------|
| **Matrix** | 1.0+ | Obligatoire (protocole fédéré) |
**Justification :** Matrix est le seul protocole de messagerie instantanée mature, fédéré et chiffré E2E par défaut.
### 6.2 Implémentation
| Composant | Solution recommandée |
|-----------|---------------------|
| Serveur | **Synapse** (référence) ou Dendrite, Conduit |
| Client web | Element Web |
| Clients mobiles | Element Android/iOS, FluffyChat |
### 6.3 Fonctionnalités requises
- ✅ Chiffrement E2E (Olm/Megolm) activé par défaut
- ✅ Fédération activée avec autres membres Alliance
- ✅ Salons publics pour coordination inter-membres
- ⚠️ Bridges optionnels (IRC, XMPP, Signal) pour interopérabilité externe
### 6.4 Configuration fédérée
Conformément au principe **adjacent-only**, la fédération Matrix passe par **C5 (Pivot)** :
```yaml
# Exemple délégation DNS (.well-known/matrix/server)
{
"m.server": "matrix.pivot.membre.alliance-boreale.ca:8448"
}
```
---
## 🔨 7. Forge logicielle et gestion de projets
**Couche concernée :** C4 (Forge mutualisée)
### 7.1 Solutions recommandées
Conformément à `00_Modele_8_couches_v3.md` §2 (C4 = Métabolisme commun — Forge mutualisée) :
| Solution | Type | Statut |
|----------|------|--------|
| **Forgejo** | Forge Git | Préféré (fork communautaire de Gitea) |
| **Gitea** | Forge Git | Accepté |
| **GitLab CE** | Forge complète | Accepté (plus lourd) |
### 7.2 Interopérabilité
**Exigences minimales :**
- ✅ Git comme base (push/pull standard entre forges)
- ✅ APIs REST documentées (OpenAPI/Swagger)
- ✅ Webhooks pour intégration CI/CD
- ✅ Support des clés SSH et GPG
- ✅ Gestion des artefacts (packages, conteneurs)
### 7.3 Intégration avec C3 (Gouvernance)
Conformément au `02_Reglement_v3.md` §IV (Processus et flux décisionnels) :
- Toutes les décisions de gouvernance → versionnées dans la forge C4
- Politiques OPA (Open Policy Agent) → stockées et signées dans C4
- Traçabilité complète via Git history
---
## 📊 8. Monitoring et observabilité
**Couche concernée :** C5 (Pivot — collecte) + C3 (Gouvernance — agrégation)
### 8.1 Métriques partagées (Obligatoire)
Conformément à `00_Nomenclature_v3.md` §1.2.5 (Observabilité scindée) :
| Composant | Standard | Usage |
|-----------|----------|-------|
| **Prometheus** | OpenMetrics | Collecte métriques |
| **Grafana** | — | Visualisation |
| **Node Exporter** | — | Métriques système (CPU, RAM, disque) |
**Règle de séparation :**
```
Métriques infrastructure (C1-C4) → Propriété fédération
Métriques applicatives (C6-C8) → Propriété tenant (exportables)
```
### 8.2 Logs centralisés (Optionnel)
| Standard | Usage | Justification |
|----------|-------|---------------|
| **JSON structuré** | Format logs | Parsing automatisé |
| **Syslog (RFC 5424)** | Transport | Interopérabilité |
**Important :** Respect de la vie privée — anonymisation obligatoire des données personnelles dans les logs.
### 8.3 Traces distribuées (Recommandé)
- OpenTelemetry (pour systèmes complexes multi-services)
- Export au format OTLP
---
## 🔄 9. Exceptions et évolutions
### 9.1 Processus de dérogation
Conformément au `02_Reglement_v3.md` §IV (Processus décisionnels) :
**Un membre peut demander une exception** à un standard obligatoire si :
1. Justification technique solide (incompatibilité avérée)
2. Plan de migration vers le standard (délai raisonnable)
3. Documentation de l'alternative utilisée
**Décision :** Cercle Technique (consentement sociocratique)
**Validité :** 12 mois maximum, réévaluation obligatoire
### 9.2 Revue annuelle des standards
- **Périodicité :** Revue annuelle obligatoire (trimestre 1 de chaque année)
- **Déclencheurs :**
- Obsolescence d'un standard (fin de vie RFC)
- Émergence de nouvelle technologie mature
- Demande motivée d'un membre
- **Processus :**
1. Proposition documentée
2. Période de discussion (30 jours)
3. Décision Cercle Technique
4. Mise à jour du présent document (v+1)
### 9.3 Intégration de nouveaux protocoles
**Critères d'acceptation :**
- ✅ Standard ouvert (RFC, W3C ou équivalent)
- ✅ Implémentations libres disponibles (≥2)
- ✅ Maturité démontrée (≥2 ans d'existence)
- ✅ Alignement avec les valeurs boréales (Glossaire v3 — Famille C)
---
## 📜 10. Annexe : Matrice de conformité
### 10.1 Niveaux de conformité du Label
Correspondance avec `03_Cadre_Conformite_v3.md` §2.4 (Interopérabilité & Fédération) :
| Niveau Label | Exigences interopérabilité |
|--------------|---------------------------|
| **Bronze** | SSO + Courriel standards + 1 service ouvert au choix |
| **Argent** | Bronze + WebDAV + Matrix |
| **Or** | Argent + Forge Git interopérable + Monitoring Prometheus |
| **Platine** | Or + Visio Jitsi + Traces distribuées |
### 10.2 Checklist d'auto-évaluation
```markdown
□ SSO (OpenID Connect ou SAML) configuré et testé
□ Courriel : DKIM + SPF + DMARC actifs
□ Partage fichiers : WebDAV accessible
□ Messagerie : Serveur Matrix fédéré
□ Forge : Git avec APIs REST documentées
□ Monitoring : Métriques Prometheus exportées
□ DNS : Enregistrements fédération publiés
□ Documentation : Standards implémentés listés publiquement
```
---
## 📖 11. Références documentaires
| Document | Section pertinente | Usage dans ce doc |
|----------|-------------------|------------------|
| `00_Modele_8_couches_v3.md` | §2 (Anatomie), §5 (Symbiose) | Architecture C3-C4-C5-C6 |
| `00_Nomenclature_v3.md` | §1.2 (Portabilité), §4 (Réseau) | Principes adjacency, DNS |
| `00_Glossaire_v3.md` | Famille B (Technique), Famille C (Valeurs) | Terminologie |
| `02_Reglement_v3.md` | §IV (Processus décisionnels) | Exceptions, dérogations |
| `03_Cadre_Conformite_v3.md` | §2.4 (Interopérabilité) | Critères Label |
| `Carte_Equivalence_Standards.md` | §3 (Matrice d'équivalence) | Standards externes |
---
## 📜 ΔLog — Création v1.0 (26-10-2025)
- Création du document selon plan TODO.md §Document 6
- Alignement strict avec documents 00_* (Modèle, Nomenclature, Glossaire)
- Intégration principe adjacent-only pour tous les flux
- Respect séparation fédéré/tenant (observabilité scindée)
- Références croisées avec Règlement v3 et Cadre Conformité v3
- Checklist d'auto-évaluation pour Label
---
## 🌌 Signature Boréale
> *Un protocole ouvert est une promesse tenue.*
> *Un standard mature est un pont entre générations.*
> *L'interopérabilité n'est pas une option — c'est notre liberté collective.*
---
**Fin du document**