Fondamentaux de la gestion des identités¶
Authentification vs Autorisation¶
| Concept | Question | Protocoles |
|---|---|---|
| Authentification (AuthN) | Qui es-tu ? | OIDC, SAML, LDAP, Kerberos |
| Autorisation (AuthZ) | Qu'as-tu le droit de faire ? | OAuth 2.0 scopes, RBAC, OPA |
Ces deux concepts sont complementaires mais distincts. Un utilisateur peut etre authentifie (identité verifiee) sans etre autorise a accéder à une ressource particulière.
Protocoles d'authentification¶
OpenID Connect (OIDC)¶
Standard moderne base sur OAuth 2.0. Utilise des tokens JWT pour transmettre l'identité de manière securisee.
graph LR
User["Utilisateur"] --> App["Application"]
App --> IdP["Redirection vers IdP"]
IdP --> Login["Login + MFA"]
Login --> Code["Code d'autorisation"]
Code --> Token["Echange contre Token JWT"]
Token --> App Quand l'utiliser : applications web, APIs, services cloud. C'est le protocole par defaut pour les nouvelles integrations.
Composants cles :
| Composant | Rôle |
|---|---|
| Authorization Server | Emet les tokens (Keycloak) |
| Client | Application qui demande l'authentification |
| Resource Server | API qui valide les tokens |
| ID Token | JWT contenant l'identité de l'utilisateur |
| Access Token | JWT contenant les permissions |
| Refresh Token | Token longue duree pour renouveler l'access token |
SAML 2.0¶
Standard plus ancien, base sur XML. Encore largement utilise par les applications d'entreprise et les SaaS.
graph LR
User["Utilisateur"] --> SP["SP (Service Provider)"]
SP --> IdP["Redirection vers IdP"]
IdP --> Login --> Assertion["Assertion SAML signee"]
Assertion --> SP2["SP"] --> Session Quand l'utiliser : integration avec des SaaS qui ne supportent pas OIDC, applications d'entreprise legacy, federations inter-organisations.
LDAP / LDAPS¶
Protocole d'annuaire pour stocker et interroger les identités. Ce n'est pas un protocole d'authentification a proprement parler, mais un backend d'identités.
graph LR
App["Application"] -->|LDAP bind<br/>uid=fabien,ou=users,<br/>dc=example,dc=com| LDAP["Verification<br/>mot de passe"] Quand l'utiliser : backend d'identités pour Keycloak, integration avec des services legacy (PAM, sudo, SSH), annuaire de groupes et d'attributs.
LDAP vs LDAPS
LDAP en clair (port 389) transmet les mots de passe sans chiffrement. Toujours utiliser LDAPS (port 636) ou StartTLS pour chiffrer les communications.
Kerberos¶
Protocole d'authentification par tickets, base sur la cryptographie symetrique. Natif dans les environnements Active Directory et FreeIPA.
Quand l'utiliser : environnements Windows/AD, authentification transparente (SSO Kerberos), integration Linux via SSSD.
SCIM (System for Cross-domain Identity Management)¶
Standard de provisioning automatique des identités entre un IdP et les applications.
graph LR
RH["RH ajoute<br/>un collaborateur"] --> IdP["IdP (Keycloak)"]
IdP -->|SCIM push| Gitea
IdP -->|SCIM push| Grafana
IdP -->|SCIM push| Nextcloud Quand l'utiliser : automatiser le cycle de vie des comptes (creation, modification, suppression) dans les applications connectees.
Modèles d'autorisation¶
RBAC (Rôle-Based Access Control)¶
Le modèle le plus repandu. Les permissions sont attribuees a des rôles, les rôles sont attribues aux utilisateurs.
graph LR
Utilisateur --> Role --> Permissions Exemple :
- Utilisateur
fabien→ Rôleplatform-engineer→ Permissions[read:metrics, write:infra, admin:cicd] - Utilisateur
alice→ Rôledeveloper→ Permissions[read:metrics, read:infra, write:code]
| Avantage | Inconvénient |
|---|---|
| Simple a comprendre et a gérer | Explosion du nombre de rôles dans les grandes organisations |
| Standard supporte par tous les outils | Peu flexible pour les regles contextuelles |
| Auditabilite claire | Difficulte a exprimer les permissions temporaires |
ABAC (Attribute-Based Access Control)¶
Les decisions d'accès sont basées sur des attributs de l'utilisateur, de la ressource et du contexte.
Si (utilisateur.departement == "engineering"
ET ressource.classification <= "confidentiel"
ET heure.actuelle ENTRE 8h ET 20h)
→ AUTORISER
Quand l'utiliser : quand le RBAC ne suffit plus (regles contextuelles, horaires, localisation).
ReBAC (Relationship-Based Access Control)¶
Les decisions d'accès sont basées sur les relations entre entites (Google Zanzibar, OpenFGA).
utilisateur:fabien EST membre DE groupe:platform-team
groupe:platform-team EST proprietaire DE repo:infra
→ fabien PEUT ecrire DANS repo:infra
Quand l'utiliser : systèmes avec des relations complexes entre objets (partage de documents, organisations multi-tenant).
Authentification multi-facteurs (MFA)¶
| Facteur | Type | Exemples | Robustesse |
|---|---|---|---|
| Ce que tu sais | Connaissance | Mot de passe, PIN | Faible (phishable) |
| Ce que tu as | Possession | TOTP, cle FIDO2, push | Forte |
| Ce que tu es | Biometrie | Empreinte, visage | Forte |
Méthodes MFA recommandees¶
| Méthode | Phishing-resistant | UX | Déploiement |
|---|---|---|---|
| WebAuthn / FIDO2 | Oui | Excellente (touch) | Cle physique ou biometrie |
| TOTP | Non | Correcte (6 chiffres) | Application authenticator |
| Push notification | Partiellement | Bonne (tap) | Application mobile dédiée |
| SMS | Non | Correcte | Numero de telephone |
Eviter les SMS
Les SMS sont vulnerables aux attaques SIM swap et SS7. Privilegier WebAuthn/FIDO2 comme facteur principal, TOTP en fallback.
Cycle de vie des identités (JML)¶
Le modèle Joiner/Mover/Leaver structure les processus RH-IT :
| Phase | Événement | Actions |
|---|---|---|
| Joiner | Arrivee d'un collaborateur | Creation compte, attribution rôles par defaut, envoi credentials |
| Mover | Changement de poste/équipe | Modification rôles, revue des accès, desactivation anciens droits |
| Leaver | Départ | Desactivation immédiate, revocation tokens, archivage, transfert des données |
graph LR
A[RH: nouvel employe] --> B[IdP: creation compte]
B --> C[SCIM: provisioning apps]
C --> D[Manager: validation acces]
D --> E[Collaborateur actif]
E --> F[RH: changement poste]
F --> G[IdP: maj roles]
G --> H[SCIM: maj apps]
E --> I[RH: depart]
I --> J[IdP: desactivation]
J --> K[SCIM: deprovisioning]
K --> L[Archivage 90j puis suppression] Automatiser le JML
Le provisioning manuel est la première source d'erreurs et de comptes orphelins. Connecter le SIRH a l'IdP via SCIM permet d'automatiser 90% du cycle de vie.
Fédération d'identités¶
La fédération permet à des organisations distinctes de partager l'authentification sans partager les credentials.
| Concept | Description |
|---|---|
| Identity Provider (IdP) | Service qui detient les identités et emet les assertions |
| Service Provider (SP) | Application qui fait confiance a l'IdP |
| Trust relationship | Accord de confiance entre IdP et SP (certificats, metadata) |
| Claims / Attributes | Informations sur l'utilisateur transmises dans le token |
Cas d'usage¶
- SSO interne : un seul login pour tous les services de la DSI
- Fédération inter-organisations : partenaires, sous-traitants qui utilisent leur propre IdP
- Social login : connexion via Google, GitHub, Microsoft (pour les services exposes)
- Identity brokering : Keycloak comme broker qui aggrege plusieurs IdP upstream