Authentik

authentik

Authentik tritt gegen die anderen Identitätsanbieter Lösungen wie Azure/Entra ID, Keycloak, Okta und Ping an.

Gerade auch im Homelab vereinfacht eine zentrale Benutzer und Rollenverwaltung die Administration.

Da ich Authentik noch einmal neu aufgebaut habe, möchte ich hier auf die am Anfang einzurichtenden Punkte hinweisen. In meinem Setup verwende ich:

  • k8s auf Talos
  • Authentik mit helm installiert im Namensraum authentik
  • Traefik mit Ingress
  • Traefik mit Gateway API
  • Tailscale

Das Erste, was man nach der Installation von Authentik tun sollte ist die initiale Einrichtung durchzuführen. Dann muss man sicherstellen, dass der Outpost erreichbar ist - was durch Settings –> Brands –> Domain.

Wenn man das nicht korrekt setzt, bekommen man die wildesten Probleme bei Forward Auth und manchmal auch OIDC/OAuth. An dieser Stelle kann man auch noch die Standard Flows anpassen.

Authentik Brands

Forward Auth

Forward Auth ist einfach eine durch einen Proxy zwischengeschaltete Authentifizierung mit Authentik. Das ermöglicht unter anderem den Schutz von Webseiten, die keine eigene Benutzeranmeldung / Rechteverwaltung haben. Manche Webseiten können die per Header / Cookies übergebenen Daten sogar für eine Anmeldung verwenden - wobei ich in einem solchen Fall eher zu OIDC/OAuth greifen würde.

Um eine Forward Auth anzulegen muss in Authentik eine Anwendung mit Provider erstellt werden. Die UI-Einstellungen / URL sollte man setzen.

Authentik Anwendung

Dazu wählt man Prox Provider als Provider aus:

Authentik Anwendung

In der Provider Konfiguration muss man sich für den impliziten (keine weitere Abfrage) oder expliziten (eine Abfrage, ob die Anmeldung gewünscht ist) Autorisierung-Flow entscheiden. Ausserdem wird hier die Art konfiguriert - am Besten wählt man “Forward Auth (einzelne Anwendung)”.

Achtung! “Authentifizierung weiterleiten (Domänenenebene)” unterstützt keine Anwendungsberechtigungen - daher ist es für mich irrelevant. Es würde einen Vorteil bringen, wenn alle auf alles Zugriff haben sollen - und das mit einer Anwendung und einem Provider.

In meinem Fall setze ich nun also Authentik als URL zur Authentifizierung und Cookie Domain auf home.lab:

Authentik Anwendung

Unter Bindings konfigurieren kann man nun entweder nichts eintragen (alle Benutzer sind erlaubt) oder man passt die Zugriffsrechte an:

Authentik Anwendung

Am Ende bekommt man noch eine Zusammenfassung:

Authentik Anwendung

Ein bischen was für die Optik - hier findet man gute SVG Icons für die Anwendungen: Dashboard Icons

Härtung

Ein minimaler Ansatz zur Härtung von Authentik ist über NetworkPolicy allen Ingress und Egress aus dem eigenen Namensraum zu verbieten.

bash
kubectl apply -n authentik -f - << EOF
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny
  namespace: authentik
spec:
  podSelector: {}
  policyTypes:
    - Ingress
    - Egress
EOF