wiki : socle pédagogique + unité-pilote « Identité & SSO »

Set-OPS comme compagnon pédagogique : chaque service = une lentille sur un
fondamental TIC, méthodes génériques (on apprend OIDC, pas Keycloak).

Socle (source versionnée dans wiki/, à publier dans le wiki Forgejo) :
- Home : cadrage (moteur souverain ET outil d'apprentissage) ;
- _Sidebar : navigation (~15 unités, pilote active, reste à venir) ;
- Identité-et-SSO : unité-pilote, moule à 4 temps (concept → Set-OPS →
  transférable → à toi de jouer) avec exercices casse-répare.

Le wiki pointe vers docs/ (anti-dérive), ne le recopie pas.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Daniel Allaire 2026-07-04 14:59:10 -04:00
parent a943fa6222
commit 3964a712b1
4 changed files with 187 additions and 0 deletions

37
wiki/Home.md Normal file
View file

@ -0,0 +1,37 @@
# Set-OPS — moteur souverain **et** compagnon pédagogique
Bienvenue. **Set-OPS** est le moteur Ansible qui déploie un **écosystème numérique souverain
complet** (Alliance Boréale · *tout est libre*). Mais c'est aussi, et volontairement, un **outil
pédagogique** : il instancie *pour de vrai* la quasi-totalité des **fondamentaux des TIC**, avec
des **méthodes 100 % génériques**.
## Deux usages, un seul système
- **Exploiter** : monter et opérer un écosystème réel (PKI, identité, courriel, DNS, observabilité,
supervision, sauvegardes…).
- **Apprendre** : chaque service est une **lentille sur un fondamental**. Tu n'apprends pas
« Keycloak » — tu apprends le **SSO/OIDC**. Pas « step-ca » — la **PKI**. Ces savoirs se
**transfèrent partout** (Active Directory, Okta, Vault, n'importe quel DNS…).
## Comment ce wiki est organisé
| Section | Contenu |
|---|---|
| **Unités d'apprentissage** | Un fondamental TIC par page, toujours selon le même moule (ci-dessous). |
| **Opérations (runbooks)** | Procédures : ajouter un service, déployer un nœud, restaurer une sauvegarde… |
| **Glossaire** | Les concepts-clés (liaisons/bindings, le plancher, idempotence…). |
| **Référence technique** | Le *détail du « comment »* vit **dans le dépôt** (`docs/`, README des rôles) — ce wiki y **pointe**, ne le **recopie pas** (pour éviter la dérive). |
## Le moule d'une unité d'apprentissage
Chaque unité suit **quatre temps** :
> **1. Le concept** *(générique, indépendant de tout produit)*
> **2. Comment Set-OPS le fait** *(le vrai, observable dans le lab)*
> **3. Pourquoi c'est transférable** *(les équivalents ailleurs)*
> **4. À toi de jouer** *(observe · interroge · casse · répare)*
## Par où commencer
👉 **[Identité & SSO](Identité-et-SSO)** — l'unité-pilote (authentification, annuaire, SSO, fédération).
---
*Deux axes sont enseignés partout : le **QUOI** (les concepts) et le **COMMENT** (les méthodes de
métier : déclaratif, idempotent, vérifier-avant-déployer, restaurer-pour-prouver, durcir). C'est la
culture d'un artisan du numérique souverain.*

97
wiki/Identité-et-SSO.md Normal file
View file

@ -0,0 +1,97 @@
# Identité & SSO
> **Unité d'apprentissage** — une lentille sur un fondamental des TIC.
> Moule : ① le concept → ② comment Set-OPS le fait → ③ pourquoi c'est transférable → ④ à toi de jouer.
---
## ① Le concept *(générique)*
**Authentification vs autorisation** — deux questions distinctes, souvent confondues :
- *Authentifier* = **qui es-tu ?** (prouver son identité, ex. mot de passe).
- *Autoriser* = **as-tu le droit ?** (permissions une fois identifié).
**L'annuaire** = la **source de vérité** des identités. Un seul endroit où existent les comptes ;
tout le reste s'y réfère. Une identité, un mot de passe — partout.
**SSO (Single Sign-On)** = **une** authentification donne accès à **N** services, sans se
reconnecter à chacun.
**OIDC / OAuth2** = le **protocole standard** du SSO web. L'application ne voit jamais ton mot de
passe : elle **délègue** la connexion à un *fournisseur d'identité* (IdP), qui lui renvoie un
**jeton** signé prouvant qui tu es.
**Fédération** = un système d'identité en **délègue** un autre (ex. l'IdP lit les comptes depuis
l'annuaire, sans les recopier).
---
## ② Comment Set-OPS le fait *(le vrai, dans le lab)*
Trois pièces, un rôle chacun :
| Pièce | Rôle | Concept incarné |
|---|---|---|
| **OpenLDAP** (`serveur_openldap`) | l'**annuaire** — la source de vérité. `testmail` y vit. | annuaire |
| **Keycloak** (`serveur_keycloak`) | le **fournisseur d'identité** (IdP) SSO. Il **fédère** OpenLDAP (lit les comptes en LDAP, lecture seule). | SSO, OIDC, fédération |
| **oauth2-proxy** (`serveur_oauth2_proxy`) | une **passerelle** OIDC pour les apps **sans** OIDC natif. | motif *proxy d'authentification* |
Les applications se branchent de deux façons :
- **OIDC natif** — Grafana, Forgejo → bouton « *Se connecter avec Chezlepro* ».
- **Sans OIDC** — Icinga Web 2 → placé **derrière oauth2-proxy**, qui fait l'OIDC à sa place.
**Le flux, quand `testmail` ouvre Grafana :**
```
Navigateur ──> Grafana : "connecte-moi"
Grafana ──> redirige vers Keycloak (IdP)
Keycloak ──> demande le mot de passe ; le VÉRIFIE contre OpenLDAP (fédération)
Keycloak ──> renvoie au navigateur un CODE
Navigateur──> Grafana échange le code contre un JETON signé
Grafana ──> crée la session : "tu es testmail" ✔
```
Résultat : **une identité** (`testmail`, un seul mot de passe LDAP) ouvre **le courriel, Grafana,
Forgejo et Icinga**. Change le mot de passe une fois, il change partout.
---
## ③ Pourquoi c'est transférable
Tu n'as pas appris « Keycloak ». Tu as appris **l'annuaire + OIDC + la fédération + le motif
passerelle**. Le même schéma existe partout :
| Set-OPS | Équivalents ailleurs |
|---|---|
| OpenLDAP | Active Directory · FreeIPA · 389-DS |
| Keycloak | Entra ID (ex-Azure AD) · Okta · Authentik · Zitadel |
| oauth2-proxy | tout reverse-proxy OIDC (Traefik ForwardAuth, Pomerium…) |
| Fédération LDAP→IdP | AD → ADFS/Entra ; annuaire → n'importe quel IdP |
Change les produits, le **schéma reste**. C'est ça, un savoir générique.
---
## ④ À toi de jouer
> Prérequis : accès au lab (VPN), `/etc/hosts` pointant les services sur l'edge.
1. **Vis le SSO.** Ouvre `https://grafana.lab.chezlepro.internal` → « *Se connecter avec
Chezlepro* » → `testmail`. Puis ouvre Forgejo, puis Icinga : **tu n'es reconnecté nulle part**.
2. **Observe le flux.** Rouvre Grafana en navigation privée, ouvre les outils dév (F12 → Réseau) :
repère la **redirection vers Keycloak**, puis le **retour avec un `code=`**. C'est ① en action.
3. **Interroge l'annuaire (la source de vérité).** Sur un nœud avec `ldap-utils` :
```bash
ldapsearch -x -H ldaps://id-ldap-01.lab.chezlepro.internal \
-b ou=people,dc=lab,dc=chezlepro,dc=internal '(uid=testmail)'
```
Tu vois l'entrée que Keycloak **fédère** — il ne l'a pas recopiée.
4. **Casse & répare (la fédération).** Dans la console admin Keycloak → *User Federation*
désactive le fournisseur LDAP. Reconnecte-toi : **échec** (l'IdP ne voit plus l'annuaire).
Réactive : ça remarche. Tu viens de *sentir* la dépendance **requise** entre l'IdP et l'annuaire.
---
## Pour aller plus loin *(référence technique — dépôt)*
- Rôles : `roles/serveur_openldap`, `roles/serveur_keycloak`, `roles/serveur_oauth2_proxy`.
- Passerelle générique : `roles/serveur_oauth2_proxy/` (README) — placer du SSO devant *toute* app.
- Thème de connexion (identité Alliance) : `roles/serveur_keycloak/files/themes/alliance-boreale/`.
- Concept de liaison **requise** (IdP ⟶ annuaire) : `docs/bindings-conception.md` §11.

18
wiki/README.md Normal file
View file

@ -0,0 +1,18 @@
# wiki/ — source du wiki pédagogique
Ce dossier est la **source versionnée** du wiki Set-OPS (accueil, unités d'apprentissage,
runbooks, glossaire). Il est **publié** dans le wiki Forgejo du dépôt (`.wiki.git`) — le dépôt
reste la source, le wiki Forgejo la vue browsable et web-éditable.
- `Home.md` — page d'accueil (cadrage : moteur souverain **et** compagnon pédagogique).
- `_Sidebar.md` — navigation.
- `Identité-et-SSO.md`**unité-pilote** (le moule : concept → Set-OPS → générique → à toi de jouer).
**Moule d'une unité** : ① le concept (générique) · ② comment Set-OPS le fait (le vrai) ·
③ pourquoi c'est transférable · ④ à toi de jouer (observe/interroge/casse/répare).
**Principe** : le wiki *enseigne* et *oriente* ; il **pointe** vers `docs/` et les README de rôles
pour le détail technique — il ne les **recopie pas** (anti-dérive).
**Publication** (à faire une fois le socle validé) : cloner le dépôt wiki Forgejo et y pousser ces
pages (les noms de fichiers `Titre-Avec-Tirets.md` deviennent « Titre Avec Tirets » dans l'UI).

35
wiki/_Sidebar.md Normal file
View file

@ -0,0 +1,35 @@
### Set-OPS
[🏠 Accueil](Home)
**Unités d'apprentissage**
*Fondations*
- [Identité & SSO](Identité-et-SSO) ✅
- PKI & confiance *(à venir)*
- DNS & résolution de noms *(à venir)*
*Communication*
- Reverse-proxy & TLS *(à venir)*
- Courriel (SMTP/IMAP) *(à venir)*
*Données*
- Bases de données *(à venir)*
- Cache *(à venir)*
- Sauvegardes (3-2-1) *(à venir)*
*Observabilité*
- Métriques & journaux *(à venir)*
- Supervision & impact *(à venir)*
*Socle & méthode*
- Virtualisation & clonage *(à venir)*
- Sécurité & durcissement *(à venir)*
- Infra as Code & idempotence *(à venir)*
- Liaisons (bindings) *(à venir)*
**Opérations**
- Runbooks *(à venir)*
**Repères**
- Glossaire *(à venir)*
- Référence technique → dépôt `docs/`