Wiki pédagogique : accueil + navigation + unité-pilote « Identité & SSO »
commit
afb1e4d8cc
3 changed files with 169 additions and 0 deletions
37
Home.md
Normal file
37
Home.md
Normal 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
Identité-et-SSO.md
Normal file
97
Identité-et-SSO.md
Normal 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.
|
||||
35
_Sidebar.md
Normal file
35
_Sidebar.md
Normal 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/`
|
||||
Loading…
Reference in a new issue