Neuigkeiten von trion.
Immer gut informiert.

Keycloak-Admins mit reduzierten Rechten

Keycloak

Bei der Erstinstallation von Keycloak wird im Master-Realm ein Benutzerkonto für einen globalen Administrator angelegt, der über alle Rechte verfügt. Dieser Benutzer darf neue Realms anlegen und alle Realms verwalten. Er ist ungefähr vergleichbar mit dem Superuser root unter Linux. Der Zugang erfolgt über die Admin-Konsole des Master-Realms unter <base_url>/admin bzw. <base_url>/admin/master/console.

Der Master-Realm ist ein spezieller Realm, der es Administratoren erlaubt, mehr als einen Realm auf dem System zu verwalten. Daneben verfügt aber jeder Realm, der in Keycloak erstellt wird, über eigene Admin-Konsole, von der aus dieser Realm verwaltet werden kann.

Sowohl im Master-Realm als auch in jedem anderen Realm können weitere Benutzer mit abgestuften administrativen Rechten angelegt werden.

Vorteile weiterer Admin-User mit eingeschränkten Rechten

Warum aber nicht einfach für alle Aufgaben den globalen Admin-Benutzer verwenden, der in jeder Keycloak-Instanz ohnehin schon vorhanden ist?

Die Nutzung eines globalen, hochpriviligierten Nutzerkontos für alle administrativen Aufgaben widerspricht nicht nur dem Principle of Least Privilege (PoLP), es kann auch gute fachliche Gründe geben, die Verwaltungsaufgaben aufzuteilen.

Eine differenzierte Zugriffskontrolle und die Beschränkung der Benutzung des globalen Admin-Benutzers bieten sich z.B. dann an, wenn über die Realms in Keycloak eine Mandantentrennung erfolgen soll. So können pro Mandant eigene Admin-Accounts in den jeweiligen Realms angelegt werden, die dann auch nur Objekte in diesem Realm verwalten können.

Häufig findet man auch eine organisatorische Trennung, so dass beispielsweise die Verwaltung von Benutzern und Gruppen von einer anderen Abteilung verantwortet wird als die Verwaltung von Clients oder die Definition von Regeln zur Passwortsicherheit.

Weitere Admin-Benutzer im Master-Realm

Der Master-Realm in Keycloak ist ein besonderer Realm und wird anders behandelt als andere Realms. Benutzer im Master-Realm können die Berechtigung erhalten, einen oder mehre Realms zu verwalten oder neue Realms anzulegen. Wenn ein Realm neu angelegt wird, erstellt Keycloak automatisch verschiedene Rollen im Master-Realm, die fein abgestufte Berechtigungen für den Zugriff auf diesen neuen Realm gewähren. Der Zugriff auf die Admin-Konsole und die Admin-REST-Endpunkte kann kontrolliert werden, indem diese Rollen den Benutzern im Master-Realm zugeordnet werden. Es ist möglich, mehrere Superuser zu erstellen, sowie Benutzer, die nur bestimmte Realms verwalten können.

Es gibt zwei besondere Rollen im Master-Realm ("realm roles", die Realm-übergreifend wirken):

  • admin

  • create-realm

Benutzer mit der Rolle admin sind Superuser und haben vollen Zugriff auf die Verwaltung aller Realms auf dem Server. Dies entspricht dem initial angelegten Admin-Benutzer.

Benutzer mit der Rolle create-realm sind berechtigt, neue Realms zu erstellen. Sie erhalten vollen Zugriff auf jeden neuen Realm, den sie erstellen.

Admin-Benutzern innerhalb des Master-Realms können Verwaltungsrechte für einen oder mehrere andere Realms im System gewährt werden. Jeder Realm in Keycloak wird durch einen Client im Master-Realm repräsentiert. Der Name des Mandanten ist <realmname>-realm. Für diese Clients sind jeweils Rollen auf Client-Ebene definiert, die unterschiedliche Rechte für die Verwaltung eines einzelnen Realms festlegen.

Zu diesen Rollen zählen:

  • view-realm

  • view-users

  • view-clients

  • view-events

  • manage-realm

  • manage-users

  • create-client

  • manage-clients

  • manage-events

  • view-identity-providers

  • manage-identity-providers

  • impersonation

Weisen Sie Ihren Benutzern die gewünschten Rollen zu, damit sie nur diesen bestimmten Teil der Admin-Konsole nutzen können.

Administratoren mit der Rolle manage-users können anderen Benutzern, nur die Administratorrollen zuweisen, die sie selbst auch haben. Wenn also ein Administrator die Rolle manage-users hat, aber nicht die Rolle manage-realm, kann er diese Rolle auch keinem anderen Benutzer zuweisen.

Ein Benutzer im Master-Realm, der für die Benutzerverwaltung in den beiden Realms mandant1 und mandant2 verantwortlich sein soll, bekäme also folgende Rollen zugewiesen:

admin roles mandant1 mandant2

Um die Client-Roles zuweisen zu können, muss im "Assign Roles"-Dialog der Filter von "Filter by realm roles" auf "Filter by clients" umgestellt werden:

admin roles assign

Admin-Benutzer in anderen Realms

Soll ein Benutzer nur Zugriff auf einen Realm haben, so ist es sinnvoll diesen Benutzer nicht im Master-Realm, sonderen in dem Realm, den er verwalten soll, anzulegen.

Dieses Vorgehen hat mehrere Vorteile: Es ist ausgeschlossen, dass der Benutzer versehentlich Rechte in einem anderen Realm zugewiesen bekommt. Insbesondere in einem Setup, bei dem Realms zur Mandantentrennung genutzt werden, kann dies sehr wichtig sein. Außerdem befindet sich der Benutzer im Namensraum des Realms, den er verwaltet. Es kann also in jedem Realm einen Benutzer admin mit jeweils eigenem Passwort, E-Mail-Adresse, etc. geben, ohne dass es einen Namenskonflikt gibt.

Ein Benutzer im Realm mandant1, der für die Benutzerverwaltung in diesem Realm verantwortlich sein soll, bekäme also folgende Rollen zugewiesen:

admin roles realm management

Achtung: Ein Admin-Benutzer, der nicht im Master-Real angelegt wurde, kann sich auch nicht an der Admin-Konsole des Master-Realms anmelden. Der Benutzer muss stattdessen die Real-spezifische Admin-Konsole, die unter <base_url>/admin/<realmname>/console erreichbar ist, aufrufen und sich dort anmelden.

Daraus ergibt sich ein weiterer Vorteil: Die Realm-spezifische Admin-Konsole nutzt den Login-Dialog des Realms, der gemäß der Vorgaben des Mandanten über ein Theme oder ein Logo an den Mandanten angepasst werden kann. Bei der Nutzung der Admin-Konsole des Master-Realms sieht die der Login-Dialog hingegen für alle Nutzer gleich aus.

Zusammenfassung

Es ist häufig sinnvoll in einer Keycloak-Instanz neben dem globalen Superuser weitere Admin-User mit eingeschränkten Rechten zu definieren.

Soll ein Admin-Benutzer Rechte in nur einem Realm bekommen, so empfiehlt es sich den Admin-Benutzer auch in diesem Realm anzulegen und die Realm-spezifische Admin-Konsole zu verwenden.

Soll ein Admin-Benutzer Objekte in zwei oder mehr Realms verwalten oder neue Realms anlegen können, so muss der Benutzer im Master-Realm angelegt werden und die Admin-Konsole des Master-Realms verwenden.




Zum Themen Keycloak bieten wir sowohl Beratung, Entwicklungsunterstützung als auch passende Schulungen an:

Vor der Inbetriebnahme einer Keycloak-Installation, sollte sichergestellt sein, dass das System tatsächlich bereit für den produktiven Einsatz ist und, dass alle wesentlichen Punkte bei Konfiguration, Integration und Betriebsprozessen berücksichtigt wurden. Hierbei hilft unser Production Readiness Review für Keycloak.

Auch für Ihren individuellen Bedarf können wir Workshops und Schulungen anbieten. Sprechen Sie uns gerne an.

Feedback oder Fragen zu einem Artikel - per Twitter @triondevelop oder E-Mail freuen wir uns auf eine Kontaktaufnahme!

Los geht's!

Bitte teilen Sie uns mit, wie wir Sie am besten erreichen können.