Berechtigungen

In diesem Kapitel geht es um die Benutzer- und Gruppenverwaltung auf dem opsi-Server. Es erklärt, welche Accounts und Gruppen in der Voreinstellung mit administrativen Rechten ausgestattet sind und wie Sie eigene Konten für die Verwaltung des opsi-Servers anlegen. Außerdem erklärt das Kapitel, wie Sie einen opsi-Server in eine Windows-Domäne einbinden, wie Sie einen Verzeichnisdienst zur Authentifizierung nutzen und eine Zwei-Faktor-Authentifizierung für den Server einrichten.

Benutzer und Gruppen

opsi verwendet die folgenden Benutzer- und Gruppenaccounts:

  • opsiconfd: ein Konto für den gleichnamigen Systemdienst opsiconfd (siehe Kapitel Der Dienst opsiconfd); Account muss Mitglied der Gruppen opsiadmin und opsifileadmins sein

  • pcpatch: ein Account, den die opsi-Clients für den Zugriff via CIFS (Samba) auf das opsi-Depot verwenden; muss Mitglied in der Gruppe opsifileadmins sein (siehe Abschnitt Passwort für Benutzer pcpatch)

Zum Verwalten lokaler Benutzer und Gruppena auf dem opsi-Server nutzen Sie die Linux-Standardwerkzeuge useradd, usermod, groupadd, groupmod usw. (siehe Abschnitt Admin-Account anlegen). Alternativ binden Sie den opsi-Configserver an eine bestehende Windows-Domäne (siehe Abschnitt opsi-Server in Windows-Domäne einbinden) oder an LDAP/Active Directory (siehe Abschnitt Authentifizierung gegen einen Verzeichnisdienst (LDAP/AD)) an.

Zum Steuern von Berechtigungen verwendet opsi die folgenden Gruppen:

  • opsiadmin: Mitglieder dieser Gruppe können administrativ auf den opsi-Service zugreifen, das heißt, sie erhalten vollen Zugriff über die Management-Oberfläche opsi-configed, das opsi-WebGUI, die opsiconfd-Admin-Seite usw.

  • opsifileadmins: Mitglieder dieser Gruppe können administrativ auf opsi-Dateien (Depot, Repository, Workbench) zugreifen.

  • opsireadonly: Mitglieder dieser Gruppe können nur lesend auf den opsi-Service zugreifen.

Den Namen dieser Gruppen können Sie in der Konfigurationsdatei /etc/opsi/opsi.conf im Abschnitt groups ändern:

[groups]
fileadmingroup = "opsifileadmins"
admingroup = "opsiadmin"
readonly = "opsireadonlys"

Admin-Account anlegen

Um lokale Benutzer und Gruppen auf dem opsi-Configserver anzulegen, nutzen Sie die Linux-Standardwerkzeuge. Das folgende Beispiel richtet einen neuen Benutzer namens adminuser ein und fügt diesen dann den beiden Gruppen opsiadmin und opsifileadmins hinzu. Damit erhält der Benutzer dann vollen administrativen Zugriff auf den opsi-Server.

Bei der vorkonfigurierten virtuellen Maschine und in unserem Docker-Container gibt es den Account adminuser bereits. Sie können die hier gezeigten Schritte aber zum Hinzufügen weiterer Accounts verwenden.

Zuerst legen Sie das neue Konto über den Befehl useradd an:

sudo useradd -m -s /bin/bash adminuser

Anschließend setzen Sie für den neuen Account ein Unix-Passwort (System):

sudo passwd adminuser

Soll der Benutzer auch Dateizugriff per CIFS (Samba) erhalten, setzen Sie dafür ebenfalls ein Passwort:

sudo smbpasswd -a adminuser
Verwenden Sie in den Passwörtern kein §-Zeichen!

Als Nächstes fügen Sie den neuen Benutzer den Gruppen opsiadmin und opsifileadmins hinzu:

usermod -aG opsiadmin,opsifileadmins adminuser

Geben Sie den Befehl id ein, um zu überprüfen, dass der Account adminuser existiert und den beiden Gruppen angehört:

id adminuser
# uid=1000(adminuser) gid=1000(opsiadmin) groups=1000(opsiadmin),999(opsifileadmins)

Passwort für Benutzer pcpatch

Da die opsi-Clients diesen Account für die Authentifizierung verwenden, muss der opsi-Configserver das Passwort kennen. Zu diesem Zweck ist das Kennwort verschlüsselt in der Datei /etc/opsi/passwd abgelegt. Bei der Installation eines opsi-Configservers wird automatisch ein Zufallskennwort gesetzt, das Sie in der Regel nicht ändern müssen.

Das Passwort können Sie mit dem Kommandozeilentool opsi-admin ändern (siehe Abschnitt opsi-admin):

opsiconfd setup --set-depot-user-password

Nach dem Drücken der Taste [Eingabe] erscheint ein Passwort-Prompt, und Sie können das Kennwort eintippen.

Das Passwort wird zusätzlich für den lokalen Unix- und Samba-Account geändert. Handelt es sich um einen Domänen-Account, müssen Sie das neue Passwort dort ebenfalls von Hand neu setzen.

opsi-Server in Windows-Domäne einbinden

Statt mit lokalen Unix- und Samba-Accounts zu arbeiten, können Sie einen opsi-Server auch in eine Windows- bzw. Samba-4-Domäne einbinden. Dazu legen Sie in der Domäne die beiden Gruppen opsiadmin und opsifileadmins an.

Wenn Sie die Gruppen anders nennen oder bestehende Gruppen verwenden möchten, dann ändern Sie die Namen auch in der Konfigurationsdatei /etc/opsi/opsi.conf entsprechend.

Außerdem legen Sie den Benutzer pcpatch als Mitglied der Gruppe opsifileadmins sowie den Benutzer opsiconfd als Mitglied der Gruppen opsiadmin und opsifileadmins an.

Entfernen Sie dann die beiden Gruppen opsiadmin und opsifileadmins aus den lokalen Unix-Gruppen (Befehl groupdel) und die lokalen Unix-Accounts opsiconfd und pcpatch (Befehl userdel).

Nehmen Sie dann den opsi-Server in die Windows-Domäne auf. Schlagen Sie in der Dokumentation der eingesetzten Linux-Distribution nach, welche Schritte dazu jeweils erforderlich sind.

Nach dem Domain Join führen Sie die folgenden zwei Befehle aus:

opsiconfd setup
opsi-set-rights
Weitere Informationen zu den beiden Kommandos lesen Sie in den beiden Abschnitten opsiconfd setup und opsi-set-rights.

Setzen Sie abschließend das Passwort für den Benutzer pcpatch neu (siehe Abschnitt Passwort für Benutzer pcpatch).

Authentifizierung gegen einen Verzeichnisdienst (LDAP/AD)

In der Voreinstellung nutzt opsi PAM (Pluggable Authentication Modules) zu Authentifizierung für verschiedene Dienste und Anwendungen. Das funktioniert mit lokalen Benutzern und Gruppen, aber auch, wenn der opsi-Server in eine Domäne eingebunden ist. Alternativ können Sie dafür auch Verzeichnisdienste wie LDAP (Lightweight Directory Access Protocol) oder AD (Active Directory) einsetzen. In dem Fall speichert der Verzeichnisdienst Benutzerkonten, Gruppen und anderen Identitätsinformationen an zentraler Stelle und ermöglicht die Authentifizierung und Autorisierung von Benutzern über verschiedene Dienste und Anwendungen.

Die Samba-Authentifizierung ist davon unabhängig. Die in diesem Abschnitt vorgestellte Herangehensweise eignet sich daher hauptsächlich für opsi-Umgebungen, in denen die Administratoren nicht per Samba, sondern per WebDAV auf die opsi-Shares zugreifen. Beim Betrieb eines opsi-Servers unter Docker ist das immer der Fall.
Um einen LDAP-Server bzw. ein Active Directory anstelle von PAM für die Authentifizierung zu nutzen, ist die opsi-Erweiterung opsi directory connector erforderlich.

Konfiguration

Die Konfiguration findet über die Datei /etc/opsi/opsi.conf im Abschnitt [ldap_auth] statt. Egal, ob Sie opsi an AD/Samba 4 oder LDAP anbinden, in beiden Fällen definieren Sie die Adresse des Verzeichnisdienstes hinter ldap_url. Die URL hat den folgenden Aufbau:

ldap[s]://<Adresse-des-LDAP-Servers>[:port]/<base-dn>

Außerdem können Sie hinter der Option bind_user den Benutzername für die Authentifizierung am LDAP/AD definieren; die Platzhalter {username} und {base} sind dabei erlaubt. Im Normalfall ist die Angabe der ldap_url jedoch ausreichend.

Beispiel zur Anbindung an ein Active Directory bzw. Samba 4:

[ldap_auth]
ldap_url = "ldaps://ad.company.de/dc=ad,dc=company,dc=de"
bind_user = "{username}@ad.company.de"

Beispiel zur Anbindung an einen OpenLDAP-Dienst:

[ldap_auth]
ldap_url = "ldaps://ldap.company.org:636/dc=company,dc=org"
bind_user = "uid={username},dc=Users,{base}"
Mit dem Kommando opsiconfd test ldap_auth können Sie die Verbindung zum LDAP-Server und unterschiedliche Konfigurationen einfach testen.

Nachdem Sie die Änderungen in der Konfigurationsdatei gespeichert haben, starten Sie den Dienst opsiconfd neu.

Beachten Sie, dass die hinter admingroup definierte Gruppe in der Datei /etc/opsi/opsi.conf auch im Verzeichnisdienst existieren muss.

Zwei-Faktor-Authentifizierung

Der opsi-Server unterstützt die Zwei-Faktor-Authentifizierung und nutzt dazu den TOTP-Algorithmus. Time-based One-time Password ist ein Standardverfahren zur Zwei-Faktor-Authentifizierung (2FA), bei dem ein Einmalpasswort generiert wird. Dieses besteht aus sechs Ziffern und wird zusätzlich zur Anmeldung am opsi-Server benötigt.

Um die Zwei-Faktor-Authentifizierung einzurichten, benötigen Sie die opsi-Erweiterung WAN/VPN.

Generelle Einrichtung

Um die Zwei-Faktor-Authentifizierung zu aktivieren, konfigurieren Sie den Dienst opsiconfd entsprechend siehe Abschnitt Konfiguration). Passen Sie die Konfigurationsdatei /etc/opsi/opsiconfd.conf an und definieren Sie hinter der Option multi-factor-auth einen der folgenden Werte:

  • inactive: Die Zwei-Faktor-Authentifizierung ist inaktiv (Standard). Das gilt auch für Benutzer mit konfiguriertem TOTP.

  • totp_optional: Die Zwei-Faktor-Authentifizierung über TOTP ist optional. Benutzer mit aktiviertem TOTP müssen dieses verwenden.

  • totp_mandatory: TOTP ist zwingend erforderlich. Benutzer ohne aktiviertes TOTP können sich nicht mehr anmelden.

Nachdem Sie Ihre Änderungen hinzugefügt haben, rufen Sie den Befehl opsiconfd reload auf.

Benutzer-spezifische Einrichtung

Die Einrichtung erfolgt über den Reiter Users der Admin-Seite. Klicken Sie auf den Button Generate new secret and activate TOTP, um serverseitig ein Secret zu generieren und die Zwei-Faktor-Authentifizierung für den jeweiligen Benutzer zu aktivieren.

Den angezeigten QR-Code können Sie dann mit einer App wie etwa 2FA Authenticator (2FAS) (Android und iOS) scannen. Die App generiert daraufhin alle 30 Sekunden ein neues Einmalpasswort, das der Benutzer dann bei der Authentifizierung an das normale Kennwort anhängen muss.

Auf dem Reiter _Users_ können Sie die Zwei-Faktor-Authentifizierung einrichten.
Abbildung 1. Auf dem Reiter Users können Sie die Zwei-Faktor-Authentifizierung einrichten.
Wenn Sie erneut auf den Button Generate new secret and activate TOTP klicken, erzeugen Sie ein neues Secret. Der bisherige QR-Code des Benutzers verliert damit seine Gültigkeit.

Um die Zwei-Faktor-Authentifizierung für einen Account zu deaktivieren, klicken Sie auf Deactivate MFA.

Autorisierung über SAML

SAML 2.0 (Security Assertion Markup Language) ist ein offener Standard, der Domain-übergreifendes Single Sign-on (SSO) ermöglicht. Benutzer werden über einen Identitätsanbieter (IdP) authentifiziert und erhalten dadurch Zugriff auf Dienste von Serviceprovidern (SP). Der opsi-Service kann als Serviceprovider (SP) konfiguriert werden, um Benutzer über SAML zu authentifizieren. Hierbei werden als Identitätsanbieter (IdP) Microsoft Entra ID und Keycloak unterstützt.

Dieses Modul ist momentan eine kostenpflichtige Erweiterung.

Konfiguration

Die Konfiguration erfolgt im opsiconfd-Service. Hierfür werden die folgenden Parameter verwendet:

saml-idp-entity-id

Die Entity-ID des Identitätsanbieters (IdP).

saml-idp-x509-cert

Das Zertifikat des Identitätsanbieters (IdP) im Base64-Format.

saml-idp-sso-url

Die URL des Single Sign-on (SSO) des Identitätsanbieters (IdP).

saml-sp-client-signature

Signatur des Serviceproviders (SP) aktivieren (client signing / encrypted assertions)?

saml-sp-x509-cert

Das Zertifikat des Serviceproviders (SP) im Base64-Format.

saml-sp-private-key

Der private Schlüssel des Serviceproviders (SP) im Base64-Format.

saml-role-group-mappings

Zuordnung von SAML-Rollen zu opsi-Gruppen im Format <role> = <group>.

Am einfachsten funktioniert die Konfiguration über das Kommando opsiconfd setup --configure-saml. Das Kommando führt Sie durch die Konfiguration und speichert die Einstellungen in der Datei /etc/opsi/opsiconfd.conf.

Microsoft Entra ID

Im Microsoft Entra Admin Center sind folgende Schritte durchzuführen:

Microsoft Entra SAML Toolkit App anlegen
  • Navigieren Sie zu IdentitätAnwendungenUnternehmensanwendungenAlle Anwendungen

  • Klicken Sie auf Neue Anwendung

  • Suchen Sie im Katalog nach Microsoft Entra SAML Toolkit und klicken Sie auf die angezeigte App.

  • Geben Sie einen Namen für die App ein, z.B. opsi SAML.

  • Klicken Sie auf Anlegen.

  • Die neu angelegte App wird nun unter Alle Anwendungen angezeigt.

Konfiguration der SAML-App
  • Klicken Sie auf die neu angelegte App opsi SAML um sie zu bearbeiten.

  • Wählen Sie dem Menü-Punkt Einmaliges Anmelden (SSO) aus.

  • Wählen Sie SAML aus.

  • Kopieren Sie die URL, die bei App Federation Metadata Url angezeigt wird.

  • Öffnen Sie eine Konsole auf dem opsi-Configserver.

  • Führen Sie das Kommando opsiconfd setup --configure-saml aus.

  • Bei der Aufforderung Enter SAML IdP XML metadata URL of filename: geben Sie die zuvor kopierte URL.

  • Es folgt die Ausgabe der opsiconfd Service-Provider-Metadaten.

  • Speichern Sie diese XML-Daten in einer Datei ab.

  • Klicken Sie auf Upload metadata file.

  • Laden Sie die zuvor gespeicherte Datei hoch.

  • Im folgenden Dialog muss die Sign on URL noch manuell ausgefüllt werden. Kopieren Sie dazu den Wert aus Reply URL und entfernen Sie das Suffix /callback/login.

  • Speichern Sie die SAML-Konfiguration.

Verification certificates

  • Bearbeiten Sie nun die Verification certificates.

  • Setzen Sie das Häkchen bei Require verification certificates.

  • Speichern Sie den Wert zwischen den Tags <ds:X509Certificate> und </ds:X509Certificate> aus den XML-Daten von weiter oben in einer Datei mit der Endung .crt.

  • Importieren Sie diese Datei über den Button Upload certificate.

  • Speichern Sie die Konfiguration.

App-Rolle erstellen

Die App-Rolle opsiadmin wird benötigt, um Benutzer administrativ am opsi-Service anzumelden.

  • Navigieren Sie nun zu IdentitätAnwendungenApp-RegistrierungenAlle Anwendungenopsi SAML

  • Fügen Sie sich als Eigentümer unter VerwaltungEigentümer ein.

  • Wählen Sie App-Rollen aus

  • Klicken Sie auf App-Rolle erstellen

  • Geben Sie opsiadmin als Wert ein

  • Den Anzeigenamen können Sie frei wählen (z.B. opsiadmin)

  • Setzen Sie das Häkchen bei App-Rolle aktivieren

  • Speichern Sie die App-Rolle mit einem Klick auf Anwenden

Benutzer zuweisen

Benutzer, die sich administrativ am opsi-Service anmelden sollen, müssen nun der App-Rolle opsiadmin zugewiesen werden.

  • Navigieren Sie dafür wieder zu IdentitätAnwendungenUnternehmensanwendungenAlle Anwendungen

  • Wählen Sie wieder die App opsi SAML aus.

  • Klicken Sie auf Benutzer und GruppenBenutzer/Gruppe hinzufügen

  • Wählen Sie nun einen Benutzer oder eine Gruppe aus und weisen Sie ihm/ihr die Rolle opsiadmin zu.

Änderungen übernehmen

Nachdem Sie alle Änderungen an der Konfigurationsdatei vorgenommen haben, starten Sie den Dienst opsiconfd neu.

Keycloak

Melden Sie sich administrativ an der Keycloak Admin Console an. Navigieren Sie zu ConfigureRealm Settings. Unter Endpoints finden Sie einen Link zu SAML 2.0 Identity Provider Metadata. Kopieren Sie diese URL.

Öffnen Sie ein Terminal auf dem opsi-Configserver. Führen Sie das Kommando opsiconfd setup --configure-saml aus.

Bei der Aufforderung Enter SAML IdP XML metadata URL of filename: geben Sie die URL aus der Keycloak-Admin-Konsole ein.

Es folgt die Ausgabe der opsiconfd Service-Provider-Metadaten. Speichern Sie diese XML-Daten in einer Datei ab.

Navigieren Sie in der Keycloak-Admin-Konsole zu ManageClients und klicken Sie auf Import Client. Im folgenden Dialog importieren Sie als Resource file die zuvor gespeicherte Datei. Klicken Sie auf Save um die Client-Konfiguration zu speichern.

Rolle erstellen

Die App-Rolle opsiadmin wird benötigt, um Benutzer administrativ am opsi-Service anzumelden.

  • Legen Sie eine neue Rolle opsiadmin an. Sie können diese Rolle global im Realm ManageRealm roles anlegen oder spezifisch für den Client unter Roles.

  • Sie können die Rolle jetzt einzelnen Benutzern oder Gruppen zuweisen.

Änderungen übernehmen

Nachdem Sie alle Änderungen an der Konfigurationsdatei vorgenommen haben, starten Sie den Dienst opsiconfd neu.

Zuordnung von SAML-Rollen zu opsi-Gruppen

Im Standardfall werden die vom IdP übermittelten Rollen eins zu eins den opsi-Gruppen zugeordnet. Sie können jedoch auch eine individuelle Zuordnung von SAML-Rollen zu opsi-Gruppen vornehmen. Die Zuordnung erfolgt über den Parameter saml-role-group-mappings in der Konfiguration. Die Zuordnung erfolgt im Format <role> = <group>, wobei <role> die Rolle des IdP und <group> die opsi-Gruppe ist. Ein Beispiel:

saml-role-group-mappings = ["CN=it-1271,OU=groups,O=acme,C=corp = opsiadmin", "CN=it-1341,OU=groups,O=acme,C=corp = opsiadmin"]