Pourquoi Keycloak ?
Dans un ecosysteme DevOps, de nombreux services ont besoin d'authentification : GitLab, Grafana, vos applications, les APIs. Keycloak centralise tout cela.
Architecture Keycloak dans l'ecosysteme
+---------------------------------------------------------------+
| KEYCLOAK (IAM) |
| Realm: devops-platform |
| |
| Clients: Utilisateurs: Roles: |
| - gitlab - dev1@company.com - admin |
| - grafana - dev2@company.com - developer |
| - mon-app - ops1@company.com - viewer |
| - prometheus - lead@company.com - ops |
+---------------------------------------------------------------+
| | | |
OAuth2/OIDC OAuth2/OIDC OAuth2/OIDC OAuth2/OIDC
| | | |
+--------+ +---------+ +---------+ +--------+
| GitLab | | Grafana | | Mon App | | Prom. |
+--------+ +---------+ +---------+ +--------+
L'utilisateur se connecte UNE SEULE FOIS (SSO)
et accede a TOUS les services avec le meme compte.
Deployer Keycloak sur Kubernetes
# keycloak-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: keycloak
namespace: auth
spec:
replicas: 2
selector:
matchLabels:
app: keycloak
template:
metadata:
labels:
app: keycloak
spec:
containers:
- name: keycloak
image: quay.io/keycloak/keycloak:23.0
args: ["start"]
env:
- name: KC_DB
value: postgres
- name: KC_DB_URL
value: jdbc:postgresql://postgres:5432/keycloak
- name: KC_DB_USERNAME
valueFrom:
secretKeyRef:
name: keycloak-db
key: username
- name: KC_DB_PASSWORD
valueFrom:
secretKeyRef:
name: keycloak-db
key: password
- name: KC_HOSTNAME
value: auth.example.com
- name: KEYCLOAK_ADMIN
value: admin
- name: KEYCLOAK_ADMIN_PASSWORD
valueFrom:
secretKeyRef:
name: keycloak-admin
key: password
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: keycloak
namespace: auth
spec:
selector:
app: keycloak
ports:
- port: 80
targetPort: 8080
Concepts cles Keycloak
- Realm : Un espace isole avec ses propres utilisateurs, clients et roles
- Client : Une application qui utilise Keycloak pour s'authentifier
- Role : Un ensemble de permissions assignables aux utilisateurs
- SSO : Single Sign-On, une seule connexion pour tous les services
- OIDC : OpenID Connect, le protocole d'authentification
SSO en action : Un developpeur se connecte a GitLab le matin. Sans ressaisir son mot de passe, il accede aussi a Grafana, a l'application, et a tous les services proteges par Keycloak.