Skip to main content

Keycloak

Inventory › Keycloak gestiona el Keycloak amb què les aplicacions inicien sessió. No es copia res a Horizon: cada pàgina llegeix Keycloak en directe i cada canvi es desa a Keycloak al moment. Els viewer llegeixen, els operator modifiquen.

A Sora, Keycloak el desplega FluxCD dins del clúster, buit. Tot el que hi ha dins (realms, clients, usuaris, ...) es configura des d'aquí.

Connexió​

A Admin › Infrastructure › Keycloak s'indica la seva adreça, el realm d'administració (normalment master) i l'usuari i la contrasenya d'un administrador. Amb FluxCD, l'administrador inicial és al secret keycloak-initial-admin:

kubectl -n keycloak-system get secret keycloak-initial-admin -o jsonpath='{.data.username}' | base64 -d
kubectl -n keycloak-system get secret keycloak-initial-admin -o jsonpath='{.data.password}' | base64 -d

La contrasenya es fa servir una única vegada: Horizon crea el seu propi client confidencial (horizon-admin) amb el rol admin, en guarda només el secret i a partir d'aleshores hi accedeix únicament amb ell.

  • Verify comprova que Keycloak respon, que el client inicia sessió i que pot llistar els realms.
  • Renew secret genera un secret nou i el desa en el mateix pas.
  • Recreate client torna a crear el client si s'ha esborrat a Keycloak.
  • L'administrador per defecte es pot desactivar des d'aquí, un cop el client d'Horizon funciona.

Realms​

La llista mostra cada realm amb el seu estat i quants rols, clients, persones i aplicacions conté. New realm en crea un de nou, per defecte amb les polítiques d'autenticació recomanades.

Als ajustos de cada realm:

  • Nom visible i estat.
  • Els seus endpoints OpenID (configuració, issuer, authorization, token, userinfo, logout), cadascun amb el seu botó de copiar.
  • Les polítiques d'autenticació comparades amb el valor recomanat (contrasenya de 30 caràcters amb número i símbol, protecció contra força bruta, OTP, passkeys, ...), aplicables una a una o totes juntes.
  • El correu, amb un botó per enviar una prova.
  • El tema, entre els instal·lats (com el tema moon que desplega FluxCD).

Rols, scopes, clients i persones​

  • Rols i scopes: cada rol amb quantes persones el tenen, i cada scope amb el rol al qual està associat. Un scope nou crea per defecte un rol amb el seu mateix nom.
  • Clients: cada client fa servir un de dos fluxos: Authorization Code amb PKCE (una persona des del navegador, client públic) o Client Credentials (un servei, client confidencial). El secret d'un client confidencial es pot copiar sense mostrar-lo o regenerar.
  • Persones: cerca, alta (nom, cognoms i email), rols, accions requerides al següent inici de sessió i contrasenyes generades que es mostren una única vegada.

Aplicacions​

Una aplicació descriu en un manifest KeycloakApplication tot el que necessita d'un realm: clients, rols, scopes, rols de client i, si cal, les seves pròpies persones (per exemple, la dels tests d'integració). El manifest viu al repositori de l'aplicació.

apiVersion: horizon/v1
kind: KeycloakApplication
name: sachiko
displayName: Sachiko
version: 1.4.0

variables:
- name: host
description: Where Sachiko is served
required: true

roles:
- name: sachiko:viewer
- name: sachiko:admin

scopes:
- name: sachiko:viewer
role: sachiko:viewer
- name: sachiko:admin
role: sachiko:admin

Importar-la (des de Git o pujant el fitxer) són tres passos: el manifest, els valors que demana i una revisió que mostra, abans de canviar res, cada element tal com quedarà i què li passarà (crear, adoptar, canviar, mantenir o eliminar).

  • Tornar a importar una versió superior actualitza l'aplicació. Una versió inferior es rebutja.
  • Cada aplicació mostra si Keycloak continua tenint el que declara; Apply again restaura el que s'hagi canviat a mà.
  • Remove esborra de Keycloak tot el que té l'aplicació. Let go l'oblida a Horizon i ho deixa tot a Keycloak.

El contracte complet és a keycloak-application.md.