Bestehende Applikationen und Services einer Infrastruktur mit minimalem Aufwand um Single-Sign-on-Authentifizierungsfunktionen zu erweitern, hat sich das Open-Source-Werkzeug Keycloak auf die Fahnen geschrieben. Die Java-basierte Identity- und Access-Management-Software bietet eine moderne Benutzerverwaltung und lässt sich problemlos in bestehende Infrastrukturen integrieren.
Unternehmen stehen vor der Herausforderung, dass sie unterschiedlichsten Anwendern Zugang zu spezifischen IT-Ressourcen verschaffen müssen. Dabei gilt es, sowohl interne als auch externe Kräfte, aber auch Kunden, Lieferanten und Geschäftspartner zu berücksichtigen. Während die einen Zugriff auf Office-Funktionen oder CRM- und ERP-Systeme benötigen, greifen andere auf Wertschöpfungsprozesse zu.
Durch die Einführung von IAM (Identity- und Access-Management) sind Zugriffsrechte zentral und automatisiert zuteilbar. Das spart eine Menge Zeit und hilft außerdem, relevante Compliance-Anforderungen zu erfüllen. IAM-Produkte dienen insbesondere der Vereinheitlichung der Zugangsberechtigungen und leisten somit einen bedeutenden Beitrag zur Steigerung der Sicherheit. Für Administratoren vereinfacht sich das Identitäten- und Zugriffsmanagement durch die Zentralisierung der Berechtigungsvergabe. Außerdem helfen IAM-Werkzeuge, die regulatorischen Anforderungen der DSGVO zu erfüllen.
Open-Source-IAM mit umfassendem Funktionsangebot
Der Markt für Identity- und Access-Management wird seit Jahren von wenigen, meist kommerziellen Produkten dominiert, die sich allerdings technologisch oft nicht am Puls der Zeit bewegen. Ein weiteres Problem stellen hohe laufende Lizenzkosten dar. Müssen Unternehmen eine große Zahl User verwalten, kommen selbst bei geringen Lizenzgebühren pro Nutzer bedeutende Summen zusammen. So sind die Kosten, die beim Einsatz kommerzieller Produkte wie AuthO oder Okta anfallen, erheblich.
Unternehmen stehen vor der Herausforderung, dass sie unterschiedlichsten Anwendern Zugang zu spezifischen IT-Ressourcen verschaffen müssen. Dabei gilt es, sowohl interne als auch externe Kräfte, aber auch Kunden, Lieferanten und Geschäftspartner zu berücksichtigen. Während die einen Zugriff auf Office-Funktionen oder CRM- und ERP-Systeme benötigen, greifen andere auf Wertschöpfungsprozesse zu.
Durch die Einführung von IAM (Identity- und Access-Management) sind Zugriffsrechte zentral und automatisiert zuteilbar. Das spart eine Menge Zeit und hilft außerdem, relevante Compliance-Anforderungen zu erfüllen. IAM-Produkte dienen insbesondere der Vereinheitlichung der Zugangsberechtigungen und leisten somit einen bedeutenden Beitrag zur Steigerung der Sicherheit. Für Administratoren vereinfacht sich das Identitäten- und Zugriffsmanagement durch die Zentralisierung der Berechtigungsvergabe. Außerdem helfen IAM-Werkzeuge, die regulatorischen Anforderungen der DSGVO zu erfüllen.
Open-Source-IAM mit umfassendem Funktionsangebot
Der Markt für Identity- und Access-Management wird seit Jahren von wenigen, meist kommerziellen Produkten dominiert, die sich allerdings technologisch oft nicht am Puls der Zeit bewegen. Ein weiteres Problem stellen hohe laufende Lizenzkosten dar. Müssen Unternehmen eine große Zahl User verwalten, kommen selbst bei geringen Lizenzgebühren pro Nutzer bedeutende Summen zusammen. So sind die Kosten, die beim Einsatz kommerzieller Produkte wie AuthO oder Okta anfallen, erheblich.
Dem hat Keycloak [1] einiges entgegenzustellen. Die Software gilt als ausgesprochen Admin-freundlich, da die Installation und die Basiskonfiguration schnell erledigt sind. Über eine komfortable Web-GUI haben IT-Verantwortliche die volle Kontrolle über das Access-Management.
Der Authentifizierungsserver greift auf SAML 2.0, OAuth 2.0 oder OpenID Connect zurück und ist somit zu anderen Identity Providern (IP) kompatibel. Zudem erlaubt Identity Brokering die einfache Anbindung an weitere IPs. Keycloak unterstützt Federated Identity, eine Technologie, die Informationen elektronischer Identitäten und Attribute aus verschiedenen Identitätsverwaltungssystemen verknüpft. So lassen sich die Daten bestehender LDAP-Server- oder Active-Directory-Installationen als Basis für die Nutzerinformationen verwenden.
Das IAM-System verfügt über eine feingranulare Rechteverwaltung, mit der Admins den Nutzerzugriff auf die relevanten Business-Applikationen komfortabel administrieren. Entgegen verschiedenen Berichten unterstützt Keycloak auch Social Login. Zudem stehen verschiedene Adapter zur Verfügung, mit denen sich die Authentifizierung und Autorisierung mit Keycloak auf spezifische Anwendungskonfigurationen beschränken lassen, was eine höhere Integrationsgeschwindigkeit und weniger Fehler zur Folge hat.
Grundsätzlich ließe sich einwenden, dass zentrale Server wie IAM ein attraktives Ziel für potenzielle Hackerangriffe sind. Doch auch für diese Risiken ist Keycloak gerüstet, denn es hat Hochverfügbarkeit und Multi-Node-Cluster-Fähigkeiten an Bord. Seine verteilte Implementierung basiert auf Infinispan, einem leistungsstarken In-Memory-Datenspeicher.
Da Keycloak nahezu alle relevanten Funktionen out of the box bietet, besteht die primäre Herausforderung beim Einsatz in der Anbindung bestehender Umgebungen, was wir uns im Folgenden detailliert anschauen.
Architektur von Keycloak
Der Vorteil des Einsatzes von Keycloak liegt in der Integration von Front-End-, mobilen und monolithischen Anwendungen in eine Microservice-Architektur. Im Fokus steht dabei der Keycloak-Realm (dazu später noch mehr), der dem Verwalten der Metadaten und Konfigurationen dient. Insbesondere in verteilten Umgebungen ist es sinnvoll, entsprechende Realms anzulegen. Grundsätzlich erlaubt Keycloak die Verwaltung von folgenden Informationen:
- Kunden (pro Anwendung)
- Konfigurationsmanagement
- Benutzerdefinierte Designs
- Events
- Föderationen
- LDAP- oder AD-Integration
- Benutzerverwaltung
Keycloak ist bei näherer Betrachtung ein dynamisches Single-Sign-on-Werkzeug sowie ein Authentifizierungs- und Autorisierungssystem, das insbesondere die Standardprotokolle OAuth 2.0, OpenID Connect und SAML-2.0 unterstützt. Damit ist sichergestellt, dass es sich problemlos in bestehende Unternehmensanwendungen wie Red Hat Ansible Tower oder SAP Business Intelligence Platform integriert. Der Autorisierungsprozess basiert auf drei Hauptprozessen, die eine feinkörnige Autorisierung für Anwendungen ermöglichen: Ressourcenmanagement, Berechtigungs- und Richtlinienverwaltung sowie Richtliniendurchsetzung.
Schnell installiert
Keycloak ist Teil des WildFly-Projekts aus dem Hause Red Hat und so konzipiert, dass sich der Einsatz einfach gestaltet. Der WildFly-Applikationsserver kann nicht nur als Identity Provider verwendet werden, sondern taugt insbesondere zur Anbindung beliebiger Java-basierter Business-Applikationen. Besonders einfach lässt sich Keycloak in einer Container-Umgebung wie Docker oder OpenShift betreiben. Steht eine Docker-Installation zur Verfügung, starten Sie die aktuelle Keycloak-Version 18.0.0 mit folgendem Befehl:
docker run -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:18.0.0 start-dev
Alternativ laden Sie sich den konfigurierten Wildfly-Application-Server [2] herunter und starten ihn mit dem Stand-alone.bat/sh-Skript. Dieser ist allerdings nur für Testumgebungen geeignet.
Der Docker-Befehl startet Keycloak auf dem lokalen Port 8080. Zunächst müssen Sie einen Admin-Benutzer anlegen. Dazu öffnen Sie "http://localhost:8080/auth/" und loggen Sie sich unter "http://localhost:8080/auth/admin" mit den zuvor angelegten Credentials in die Umgebung ein.
Bild 1: Keycloak bietet ein übersichtliches Webinterface für nahezu allen administrativen Aufgaben.
Arbeit mit Realms
Einer der zentralen Vorteile von Keycloak ist dessen Eignung für große Umgebungen. Konkret können Sie beispielsweise pro Land oder Region ein sogenanntes Realm anlegen und dabei festlegen, von wo die User zugreifen und wie sich diese autorisieren. Außerdem können Sie für jede Applikation einen sogenannten Client erzeugen, mit dem Sie beispielsweise das Autorisierungsverfahren vorgeben.
Ein Keycloak-Realm ist das Äquivalent zu einem Tenant. Es ermöglicht das Erstellen isolierter Anwendungs- und Benutzergruppen. Standardmäßig existiert in Keycloak lediglich der Master-Realm. Dieser dient der Verwaltung von Keycloak und sollte nicht für eigene Anwendungen zum Einsatz kommen. Um einen Realm zu erstellen, nutzen Sie das Dropdown-Menü in der oberen linken Ecke und klicken Sie auf "Add Realm". Weisen Sie diesem eine Bezeichnung zu und klicken Sie auf "Create". Damit ist der erste Realm angelegt und ist mit einem Klick auf das "Master"-Auswahlmenü konfigurierbar. Über die "Realm Settings" nehmen Sie weitreichende Konfigurationen vor. Jedem Realm wird ein SSL-Modus zugeordnet, der die SSL/ HTTPS-Anforderungen für die Interaktion mit dem Bereich definiert. Nur Applikationen, die diese SSL/HTTPS-Anforderungen erfüllen, können mit dem Realm interagieren.
Keycloak generiert bei der ersten Ausführung ein selbstsigniertes Zertifikat, das Sie allerdings nur zu Testzwecken verwenden sollten. Der Produktivitätseinsatz der IAM-Umgebung verlangt die Installation eines CA-signierten Zertifikats auf dem Keycloak-Server selbst oder auf einem Reverse-Proxy davor. In den Login-Einstellungen bestimmen Sie, für welche Zugriffsformen die SSL-Verschlüsselung obligatorisch ist. Eine weitere wichtige Konfiguration ist die E-Mail-Einrichtung. Hier hinterlegen Sie den SMTP-Server, damit Keycloak die Benutzer mit passwortspezifischen Informationen oder über kritische Ereignisse informieren kann.
Externe Speicher einbinden
Bevor Überlegungen angestellt wurden, ob sich das Zugriffsmanagement nicht durch ein IAM vereinfachen ließe, setzten Unternehmen bereits auf unterschiedliche Werkzeuge zur Speicherung von Anmeldeinformationen. Eine Migration von bestehenden Daten in eine Keycloak-Bereitstellung ist bislang nicht möglich – zumindest besteht bislang keine einfache Lösung, die ohne Programmierung auskommt. Allerdings können Sie bestehende Active-Directory- und LDAP-Server einbinden. Keycloak kann außerdem OTP-Funktionen bestehender Plattformen integrieren.
Die Integration von Storage-Providern erfolgt über das Master-Menü "User Federation". Um eine bestehende LDAP-Server-Konfiguration in Keycloak einzu- binden, wählen Sie im Auswahlmenü "Add Provider" den Eintrag "LDAP".
Das IAM unterscheidet dabei zwischen dem Storage- und dem Edit-Mode. Im Storage-Modus importiert Keycloak die Benutzerinformationen aus dem LDAP-System in die lokale Keycloak-Benutzer- datenbank. Passwörter werden indes nie importiert und die Kennwortvalidierung erfolgt immer auf dem LDAP-Server. Im Edit-Modus erlaubt Keycloak je nach Konfiguration Anpassungen an den Benutzerdaten. Es lässt sich außerdem so konfigurieren, dass es Benutzer automatisch mit dem LDAP-Server synchronisiert.
Mit Benutzern und Rollen hantieren
Von klassischen Benutzermanagementsystemen kennen Sie die Vorzüge von Benutzer- und Gruppenverwaltungen mit spezifischen Rechtevergaben. Entsprechende Funktionen bietet auch die Keycloak-eigene Benutzerdatenbank. Im Untermenü "Users" stehen Ihnen eine Suchfunktion und die Möglichkeit zum manuellen Anlegen neuer Benutzer zur Verfügung.
Einem angelegten User können Sie durch Editieren des Benutzereintrags eine Fülle von Eigenschaften zuweisen. Unter "Credentials" bestimmen Sie die Passworteinstellungen und welche Aktionen im Falle eines Resets notwendig sind. Auf der Registerkarte "Role Mappings" legen Sie fest, welche Client- und Realm-Rollen der User erhält. Entsprechend können Sie auch die Gruppenzugehörigkeit editieren.
Keycloak verfügt darüber hinaus auch über ein Rollensystem. Die zugehörigen Funktionen des Rollenmanagements verbergen sich hinter dem Menüeintrag "Roles". Bei einer Rolle handelt es sich um eine IAM-Identität, die Sie mit bestimmten Berechtigungen verknüpfen können. Grundsätzlich erfüllen Rollen und Gruppen einen ähnlichen Zweck, und zwar die Bündelung von Zugriffsrechten für Benutzer. Während Gruppen Benutzer zusammenfassen, definieren Rollen spezifische Anwendungsberechtigungen und Zugriffssteuerungen.
Keycloak besitzt einen globalen Namespace für Rollen und jeder Client verfügt über einen eigenen dezidierten Namespace, in dem Rollen definiert werden. Keycloak kennt außerdem Clientrollen, also Namespaces, die Clients zugeordnet werden. Im Menü "Roles" verwalten Sie neben Standardrollen auch Realm-Rollen.
Bild 2: Die Einrichtung eines ersten Realms geht – wie alles in Keycloak – leicht von der Hand.
Umgang mit Identity Providern
Eine der zentralen Aufgaben von Key-cloak ist der Umgang mit den sogenannten Identity Providern. Die Umgebung kann als Identity Broker eingesetzt werden, der die Authentifizierung an einen externen Identity Provider oder auch ein soziales Netzwerk delegiert.
Aus der Perspektive der Benutzer bieten Identity Broker eine benutzerzentrierte, zentralisierte Möglichkeit, Identitäten für Sicherheitsdomänen und Bereiche zu verwalten. Sie können ein Konto mit einer oder mehreren Identitäten von Identitätsanbietern verknüpfen oder ein Konto basierend auf den Identitätsinformationen erstellen. Dabei leitet sich ein Identitätsanbieter von einem bestimmten Protokoll ab, das zur Authentifizierung und zum Senden von Authentifizierungs- und Autorisierungsinformationen genutzt wird. Dies sind insbesondere folgende:
- Geschäftspartner, deren Benutzer auf Drittdienste zugreifen müssen.
- Integration eines Cloud-basierten Identitätsdiensts.
- Anbieter von sozialen Netzwerken.
Verwenden Sie Keycloak als Identity Broker, zwingt die Software Benutzer nicht dazu, ihre Anmeldeinformationen anzugeben, um sich in einem bestimmten Bereich zu authentifizieren. Vielmehr präsentiert die Umgebung eine Liste von Identitätsanbietern, bei denen sich die User authentifizieren können. Wenn Sie einen Standard-Identitätsanbieter konfigurieren, leitet Keycloak die Benutzer zu diesem um.
Die Basis einer Identity-Broker-Konfiguration sind die Broker selbst. Keycloak stellt diese für jeden Realm bereit und aktiviert sie standardmäßig für jede Anwendung. Die dem Realm zugewiesenen User können jeden der registrierten Identitätsanbieter verwenden, wenn sie sich bei einer Anwendung anmelden. Die Konfiguration eines Identity Brokers gestaltet sich ansonsten einfach: Im gleichnamigen Menü wählen Sie aus dem umfangreichen Auswahlmenü den gewünschten Typ aus und nehmen je nach Protokoll beziehungsweise Dienstleister spezifische Konfigurationen vor.
Einsatz der Kommandozeile
Für die Durchführung von Standardaufgaben beim Access- und Identity-Management stellt Ihnen Keycloak ein benutzerfreundliches Webinterface zur Verfügung. Daneben können Sie administrative Aufgaben über das Admin-CLI-Befehlszeilentool ausführen. Die Konsole mit den Ausführungsskripten finden Sie im "bin"-Verzeichnis. Unter Linux heißt das zugehörige Skript "kcadm.sh", unter Windows "kcadm.bat". Um die CLI von jedem beliebigen Ort im Dateisystem verwenden zu können, sollten Sie das Keycloak-Serververzeichnis im Suchpfad "PATH" hinterlegen. Unter Linux gestaltet sich dies wie folgt:
export PATH=$PATH:$KEYCLOAK_HOME/bin
kcadm.sh
Unter Windows entsprechend:
set PATH=%PATH%;%KEYCLOAK_HOME%\bin
kcadm
Mit der Admin-CLI verwalten Sie die Konfigurationsdatei "kcadm.config", die im Home-Verzeichnis des Benutzers lagert. Bei Linux-basierten Systemen lautet der vollständige Pfad "$HOME/ .keycloak/kcadm.config". In der Evaluierungsphase kann es sinnvoll sein, mit unterschiedlichen Konfigurationen zu arbeiten, um sich mit den Eigenheiten der Umgebung vertraut zu machen. Mit Hilfe der Option "--config" können Sie spezifische Konfigurationsdateien verwenden; auch der Betrieb von mehreren parallel authentifizierten Sitzungen ist dabei möglich.
Um auf der Konsolenebene einen Realm zu generieren, nutzen Sie die Optionen "realm" und "enabled". Ein Beispiel:
Da Keycloak-Realms standardmäßig deaktiviert sind, müssen Sie diese explizit mit der "enable"-Option aktivieren. Danach können Sie diese sofort zur Authentifizierung einsetzen. Um einen Überblick über die existierenden Realms zu erhalten, dient folgender Befehl:
kcadm.sh get realms
Wenn Sie sich für eine bestimmte Realm-Konfiguration interessieren, spezifizieren Sie dessen Bezeichnung:
kcadm.sh get realms/master
Sehr umfangreich sind die Befehle für den Umgang mit Rollen, Clients, Benutzern und Gruppen.
Um das Zusammenspiel von Keycloak mit einem Identity Provider zu konfigurieren, steht Ihnen ein umfangreiches Instrumentarium zur Verfügung. Die Liste der verfügbaren Identity Provider auszugeben, liefert Ihnen der "serverinfo"-Endpunkt:
kcadm.sh get serverinfo -r <Beispiel-Realm> --fields 'identi-tyProviders(*)'
Um die Liste der bereits konfigurierten Identity Provider auszugeben, verwenden Sie diesen Befehl:
kcadm.sh get identity-provider/instances -r <Beispiel-Realm> --fields alias,providerId,enabled
Neben der CLI-basierten Ausführung von typischen Befehlen eröffnen sich durch Anpassungen der Keycloak-Konfiguration eine Fülle von Möglichkeiten. Bereits vor der Ausführung der Umgebung können Sie mit Hilfe des "build"-Befehls verschiedene Optimierungen vornehmen. Darüber hinaus sind Anpassungen der Keycloak-Konfigurationsdatei "conf/key- cloak.conf" möglich.
Bild 3: Die Konfiguration der "User Federation" dient der Synchronisierung von Benutzerdaten mit Active-Directory- beziehungsweise LDAP-Servern.
Fazit
Keycloak bietet aktuell eine beachtliche Funktionalität, wird sich aber auch neuen Entwicklungen im Bereich Zugriffsmanagement stellen müssen. So werden sich in Zukunft verstärkt Mehrfaktor-Authentifizierungen durchsetzen und dabei weitere Autorisierungskanäle nutzen. Vieles deutet darauf hin, dass sich Spracherkennung und biometrische Merkmale als Authentifizierungsmethode der Zukunft etablieren. Noch ist die Implementierung solcher Funktionen in Keycloak Zukunftsmusik.
Doch das große Plus von Keycloak ist Access- und Identity-Management out-of-the-box. Das IAM-Werkzeug ist einfach zu handhaben und flexibel einsatzbar. Ein weiterer Vorteil liegt in der guten Dokumentation.