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.

Konfiguration

Die konfiguration erfolgt im opsiconfd-Service. Hierbei sind die folgenden Parameter zu setzen:

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-idp-slo-url

(optional) Die URL des Single Logout (SLO) des Identitätsanbieters (IdP).

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.

  • Bearbeiten Sie die Grundlegende SAML-Konfiguration

  • Tragen Sie als Entitäts-ID die ID Ihres opsi-Configservers (z.B. opsi.company.com) ein.

  • Unter Antwort-URL tragen Sie die folgende URL Ihres opsi-Servers ein: https://<adresse-configserver>:4447/auth/saml/callback/login.

  • Speichern Sie die Konfiguration.

  • Laden Sie das SAML-Zertifikate im Base64-Format herunter und hinterlegen Sie es als saml-idp-x509-cert in der Konfiguration.

  • Tragen Sie den unter Microsoft Entra-Bezeichner angezeigten Wert als saml-idp-entity-id in der Konfiguration ein.

  • Übernehmen Sie die URL für Anmeldung als saml-idp-sso-url in die Konfiguration.

  • Optional: Tragen Sie die Abmelde-URL als saml-idp-slo-url in die Konfiguration ein.

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 nune 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

In der Keycloak Admin Console sind folgende Schritte durchzuführen:

Realm Einstellungen übernehmen
  • Navigieren Sie zu Einstellungen ⇒ Realm settings.

  • Klicken Sie auf den Link SAML 2.0 Identity Provider Metadata

  • Tragen Sie den unter <EntityDescriptor entityID="">_ angezeigten Wert als saml-idp-entity-id in der Konfiguration ein.

  • Kopieren Sie den unter <X509Certificate> angezeigten Wert und hinterlegen Sie ihn als saml-idp-x509-cert in der Konfiguration.

  • Tragen Sie die unter <SingleSignOnService Binding="HTTP-POST"> angezeigte URL als saml-idp-sso-url in der Konfiguration ein.

  • Optional: Tragen Sie die unter <SingleLogoutService Binding="HTTP-POST"> angezeigte URL als saml-idp-slo-url in der Konfiguration ein.

Client anlegen
  • Navigieren Sie zu ManageClients und klicken Sie auf Create Client

  • Wählen Sie SAML als Client type aus.

  • Tragen Sie unter Client ID die ID Ihres opsi-Configservers (z.B. opsi.company.com) ein.

  • Speichern Sie den Client.

Client konfigurieren
  • Bearbeiten Sie den Client erneut indem Sie ihn unter Client list anklicken.

  • Tragen Sie unter Access settingsRoot URL die URL Ihres opsi-Servers ein: `https://<adresse-configserver>:4447.

  • Die gleiche URL tragen Sie unter Home URL ein.

  • Unter Valid redirect URIs fügen Sie die URL `https://<adresse-configserver>:4447/* hinzu.

  • Den gleichen Wert tragen Sie auch unter Valid post logout redirect URIs ein.

  • Deaktivieren Sie Client signature required unter KeysSigning keys config.

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.