Nach einer erfolgten Spacewalk-Installation erfolgt der Login erstmal über lokal definierte Benutzerkonten – Berechtigungen werden über lokale Zuordnungen vergeben. Insbesondere in größeren Systemlandschaften mit Anforderungen wie beispielsweise Single Sign-On ist das eher impraktikabel.
Glücklicherweise unterstützen Spacewalk und Red Hat Satellite 5 die Authentifizierung über FreeIPA bzw. Red Hat Identity Management. Seit Spacewalk 2.3 bzw. Red Hat Satellite 5.7 gibt es mit spacewalk-setup-ipa-authentication ein Skript, welches die Konfiguration der einzelnen Komponenten (SSSD, Apache, Tomcat, SELinux) vollständig übernimmt. Vorher mussten die einzelnen Schritte manuell ausgeführt werden.
Vorbereitungen
Vorab muss innerhalb FreeIPA ein entsprechender Kerberos-Service unter Angabe des FQDNs des Spacewalk-Servers erstellt werden. Dies erfolgt über die FreeIPA Web-Oberfläche mit Klicks auf Identität > Dienste > Hinzufügen:

Alternativ ist die Anpassung auch von einem registrierten System mit installiertem ipa-Kommando und dem Kerberos-Tickets eines Administrators möglich:
# kinit admin # ipa service-add HTTP/spacewalk-fqdn
Anschließend empfiehlt es sich für die benötigten Accounts und deren Berechtigungen entsprechende Gruppen in FreeIPA anzulegen. Hierzu sind Klicks auf Identität > Benutzergruppen > Hinzufügen nötig. Spacewalk unterstützt die folgenden Rollen:
Administrative Rollen (systemweit)
- Organisationsadministrator
- Spacewalk-Administrator
Rollen
- Aktivierungsschlüssel-Administrator (pro Organisation)
- Konfigurationsadministrator (Client-Konfigurationsdateien)
- Channel-Administrator
- Systemgruppen-Administrator
Später werden die FreeIPA-Gruppen entsprechenden Rollen innerhalb Spacewalk zugewiesen. Je nach Einsatzszenario kann es sinnvoll mehrere Gruppen anzulegen – beispielsweise eine Gruppe für alle Spacewalk-weiten Administratoren:

Alternativ gibt es hierfür auch wieder ein entsprechendes ipa-Kommando:
# ipa group-add spacewalk-admins --desc "Spacewalk administrators"
Konfiguration
Auf dem Spacewalk-System wird nun die IPA-Authentifizierung konfiguriert:
# spacewalk-setup-ipa-authentication Enabling authentication against [pinkepank.stankowic.loc]. Retrieving HTTP/ service keytab into [/etc/httpd/conf/http.keytab] ... Keytab successfully retrieved and stored in: /etc/httpd/conf/http.keytab changed ownership of `/etc/httpd/conf/http.keytab' to apache Configuring PAM service [spacewalk]. Will install additional packages ... ** /etc/sssd/sssd.conf has been backed up to sssd.conf-swsave Updated sssd configuration. Turning SELinux boolean [httpd_dbus_sssd] on ... ... done. Turning SELinux boolean [allow_httpd_mod_auth_pam] on ... ... done. Configuring Apache modules. ** /etc/tomcat6/server.xml has been backed up to server.xml-swsave.ipa Stopping sssd: [ OK ] Starting sssd: [ OK ] Stopping tomcat6: [ OK ] Starting tomcat6: [ OK ] Stopping httpd: [ OK ] Starting httpd: httpd: [ OK ] Waiting for tomcat to be ready ... Authentication against [pinkepank.stankowic.loc] sucessfully enabled. As admin, at Admin > Users > External Authentication, select Default organization to autopopulate new users into.
Anschließend muss noch konfiguriert werden, welcher Organization Benutzer angehören sollen, die sich noch nicht über FreeIPA in Spacewalk angemeldet haben. Hierzu sind Klicks in der Spacewalk-Oberfläche auf Admin > Benutzer > Externe Authentifizierung nötig.

Wenn die Organisationen innerhalb Spacewalk mit denen in FreeIPA übereinstimmen, kann der Haken „Von IPA weitergegebenen Namen von Organisationseinheit verwenden“ aktiviert werden. Falls die Organisationen nicht übereinstimmen kann eine Standard-Organisation unter „Standardmäßige Organisation“ konfiguriert werden. In jeden Fall muss der Haken „Aufgrund der externen Authentifizierungskonfiguration temporär gewährte Rollen bewahren“ gesetzt sein, da ansonsten in FreeIPA definierte Gruppenzugehörigkeiten keine Rechtevergabe in Spacewalk auslösen.
Die jeweiligen Gruppenzugehörigkeiten werden im Reiter Group Role Mapping definiert:

Je nach Spacewalk-Patchlevel kann es notwendig sein, den Dienst neu zu starten, bevor die Authentifizierung funktioniert:
# spacewalk-service restart
