Single Sign-On mit Kerberos
1. Einleitung
Ein Single Sign-On auf die GUI von Checkmk mit Kerberos wird von Checkmk zwar nicht offiziell unterstützt, aber Sie können das recht einfach selbst einrichten. Wie das geht, zeigt Ihnen diese Anleitung.
Folgende Voraussetzungen müssen erfüllt sein, um die Konfiguration in Checkmk nachträglich auf SSO (Single Sign-On) mit Kerberos umzustellen:
- Die Apache-Version ist 2.4 oder neuer.
- Auf dem Checkmk-Server ist das Modul libapache-mod-auth-kerb (bzw. mod_auth_kerb unter RHEL/CentOS oder apache2-mod_auth_kerb unter SUSE) installiert.
- Der Kerberos-Client ist auf dem Checkmk-Server installiert und konfiguriert.
- Eine Keytab wurde erstellt und darf von dem Site-User gelesen werden.
- Der Checkmk-Server wurde als Service Principal eingerichtet.
- Der Browser der Clients ist für den Zugriff mittels Kerberos konfiguriert.
- Die Checkmk-Instanz steht auf Cookie-Auth
Der letzte Punkt stellt sicher, dass sich Nutzer ohne SSO über die reguläre Loginseite anmelden können. Sie können diese Möglichkeit auch deaktiveren. In diesem Fall gilt die Voraussetzung natürlich nicht.
2. Integration von Kerberos
Um Checkmk auf die Authentifizierung über Kerberos umzustellen, wechseln Sie als Site User in das Verzeichnis des Apache und sichern die Datei cookie_auth.conf weg. Diese wird nicht mehr benötigt.
OMD[mysite]:~$ mv etc/apache/conf.d/auth.conf /tmp/
Danach wird die Datei auth.conf gelöscht und neu geschrieben. Passen Sie die benutzten Pfade entsprechend Ihrer Umgebung an und ersetzen Sie den KrbAuthRealm und den Wert der Variable SITE entsprechend Ihrer Umgebung:
Define SITE mysite <IfModule !mod_auth_kerb.c> LoadModule auth_kerb_module /usr/lib/apache2/modules/mod_auth_kerb.so </IfModule> <Location /${SITE}> Order allow,deny Allow from all AuthType Kerberos AuthName "Check_MK Kerberos Login" KrbServiceName HTTP KrbMethodNegotiate on KrbMethodK5Passwd off KrbLocalUserMapping on KrbSaveCredentials on # Use Kerberos auth only in case there is no Check_MK authentication # cookie provided by the user Require expr %{HTTP_COOKIE} =~ /auth_/ Require expr %{REQUEST_URI} = "/${SITE}/check_mk/register_agent.py" Require expr %{QUERY_STRING} =~ /(_secret=|auth_|register_agent)/ Require valid-user # Environment specific: Path to the keytab and the realm Krb5Keytab /etc/apache2/krb5.keytab.f-mk-mon-p01 KrbAuthRealm MYCOMPANY.ORG # When Kerberos auth fails, show the login page to the user ErrorDocument 401 /${SITE}/check_mk/login.py </Location> # These files are accessible unauthenticated (login page and needed ressources) <LocationMatch /${SITE}/(omd/|check_mk/(images/.*\.png|login\.py|.*\.(css|js)))> Order allow,deny Allow from all Satisfy any </LocationMatch>
3. Auf Cookies basierende Logins
Wenn Sie nur noch Logins über SSO zulassen möchten, deaktivieren Sie das Cookie-Auth. Achten Sie darauf, dass Sie diesen Wert nur ändern können, wenn die Instanz gestoppt ist:
OMD[mysite]:~$ omd config set MULTISITE_COOKIE_AUTH off
Sie können dann entsprechend auch in der auth.conf die folgende Zeile weglassen oder auskommentieren:
# Require expr %{HTTP_COOKIE} =~ /auth_/