MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Neue Benutzer- und LDAP-Verwaltung in ClusterControl 1.8.2

Nach dem Upgrade auf ClusterControl 1.8.2 sollten Sie das folgende Benachrichtigungsbanner erhalten:

Was hat es damit auf sich? Es ist eine Abwertungsmitteilung des aktuellen Benutzerverwaltungssystems zugunsten des neuen Benutzerverwaltungssystems, das vom ClusterControl-Controllerdienst (cmon) verwaltet wird. Wenn Sie auf das Banner klicken, werden Sie zur Seite zur Benutzererstellung weitergeleitet, um einen neuen Administratorbenutzer zu erstellen, wie in diesem Benutzerhandbuch beschrieben.

In diesem Blogbeitrag werden wir uns das neue Benutzerverwaltungssystem ansehen, das in ClusterControl 1.8.2 eingeführt wurde, und sehen, wie es sich von den vorherigen unterscheidet. Nur zur Verdeutlichung, das alte Benutzerverwaltungssystem wird bis zum 1. Quartal 2022 noch Seite an Seite mit dem neuen Benutzerauthentifizierungs- und -verwaltungssystem arbeiten. Von nun an werden alle neuen Installationen für ClusterControl 1.8.2 und höher mit dem neuen Benutzer konfiguriert Verwaltungssystem.

Benutzerverwaltung vor 1.8.2

ClusterControl 1.8.1 und älter speichert die Benutzerinformationen und die Abrechnung in einer Web-UI-Datenbank namens "dcps". Diese Datenbank ist unabhängig von der cmon-Datenbank, die vom ClusterControl Controller-Dienst (cmon) verwendet wird.

Benutzerkonten und Authentifizierung

Ein Benutzerkonto besteht aus folgenden Informationen:

  • Name

  • Zeitzone

  • E-Mail (wird zur Authentifizierung verwendet)

  • Passwort

  • Rolle

  • Team

Man würde eine E-Mail-Adresse verwenden, um sich bei der ClusterControl-GUI anzumelden, wie im folgenden Screenshot gezeigt:

Sobald Sie angemeldet sind, sucht ClusterControl nach der Organisation, zu der der Benutzer gehört, und weist dann die rollenbasierte Zugriffskontrolle (RBAC) zu, um auf einen bestimmten Cluster und Funktionen zuzugreifen. Ein Team kann null oder mehr Cluster haben, während ein Benutzer einem oder mehreren Teams angehören muss. Das Erstellen eines Benutzers erfordert eine zuvor erstellte Rolle und ein Team. ClusterControl enthält ein Standardteam namens Admin und 3 Standardrollen – Super Admin, Admin und User.

Berechtigungs- und Zugriffskontrolle

ClusterControl 1.8.1 und älter verwendet eine UI-basierte Zugriffskontrolle basierend auf Rollenzuweisung. Mit einem anderen Begriff haben wir dies als rollenbasierte Zugriffskontrolle (RBAC) bezeichnet. Der Administrator würde Rollen erstellen, und jeder Rolle würde eine Reihe von Berechtigungen für den Zugriff auf bestimmte Funktionen und Seiten zugewiesen. Die Rollenerzwingung erfolgt auf der Front-End-Seite, wo der ClusterControl-Controllerdienst (cmon) keine Ahnung hat, ob der aktive Benutzer auf die Funktionalität zugreifen kann, da die Informationen nie zwischen diesen beiden Authentifizierungsmodulen geteilt werden. Dies würde die Kontrolle der Authentifizierung und Autorisierung in Zukunft erschweren, insbesondere wenn weitere Funktionen hinzugefügt werden, die sowohl mit der GUI- als auch der CLI-Oberfläche kompatibel sind.

Der folgende Screenshot zeigt die verfügbaren Funktionen, die über RBAC gesteuert werden können:

Der Administrator muss nur die relevante Zugriffsebene für bestimmte Funktionen auswählen, und sie wird in der "dcps"-Datenbank gespeichert und dann von der ClusterControl-GUI verwendet, um UI-Ressourcen für die GUI-Benutzer zuzulassen. Die hier erstellte Zugriffsliste hat nichts mit den CLI-Benutzern zu tun.

LDAP

ClusterControl vor 1.8.1 verwendete das PHP-LDAP-Modul für die LDAP-Authentifizierung. Es unterstützt Active Directory, OpenLDAP und FreeIPA-Verzeichnisdienste, aber nur eine begrenzte Anzahl von LDAP-Attributen kann für die Benutzeridentifikation verwendet werden, wie uid, cn oder sAMAccountName. Die Implementierung ist ziemlich einfach und unterstützt keine erweiterte Benutzer-/Gruppenbasisfilterung, Attributzuordnung und TLS-Implementierung.

Die folgenden Informationen sind für die LDAP-Einstellungen erforderlich:

Da es sich um einen Frontend-Dienst handelt, wird die LDAP-Protokolldatei unter der Web-App-Verzeichnis, insbesondere unter /var/www/html/clustercontrol/app/log/cc-ldap.log. Ein authentifizierter Benutzer wird einer bestimmten ClusterControl-Rolle und einem bestimmten Team zugeordnet, wie auf der LDAP-Gruppenzuordnungsseite definiert.

Benutzerverwaltung nach 1.8.2

In dieser neuen Version unterstützt ClusterControl beide Authentifizierungs-Handler, die Frontend-Authentifizierung (unter Verwendung der E-Mail-Adresse) und die Backend-Authentifizierung (unter Verwendung des Benutzernamens). Für die Backend-Authentifizierung speichert ClusterControl die Benutzerinformationen und die Abrechnung in der cmon-Datenbank, die vom ClusterControl-Controller-Dienst (cmon) verwendet wird.

Benutzerkonten und Authentifizierung

Ein Benutzerkonto besteht aus folgenden Informationen:

  • Benutzername (wird zur Authentifizierung verwendet)

  • E-Mail-Adresse

  • Vollständiger Name

  • Tags

  • Ursprung

  • Deaktiviert

  • Unterbrechen

  • Gruppen

  • Eigentümer

  • ACL

  • Fehlgeschlagene Anmeldungen

  • CDT-Pfad

Im Vergleich zur alten Implementierung verfügt die neue Benutzerverwaltung über mehr Informationen für einen Benutzer, was eine komplexe Manipulation von Benutzerkonten und eine bessere Zugriffskontrolle mit erhöhter Sicherheit ermöglicht. Ein Benutzerauthentifizierungsprozess ist jetzt vor Brute-Force-Angriffen geschützt und kann aus Wartungs- oder Sicherheitsgründen deaktiviert werden.

Man würde eine E-Mail-Adresse oder einen Benutzernamen verwenden, um sich bei der ClusterControl-GUI anzumelden, wie im folgenden Screenshot gezeigt (achten Sie auf den Platzhaltertext für das Feld Benutzername):

Wenn sich der Benutzer mit einer E-Mail-Adresse anmeldet, wird der Benutzer authentifiziert über den veralteten Frontend-Benutzerverwaltungsdienst und wenn ein Benutzername angegeben wird, verwendet ClusterControl automatisch den neuen Backend-Benutzerverwaltungsdienst, der vom Controller-Dienst verwaltet wird. Beide Authentifizierungen funktionieren mit zwei unterschiedlichen Sätzen von Benutzerverwaltungsschnittstellen.

Berechtigungs- und Zugriffskontrolle

In der neuen Benutzerverwaltung werden Berechtigungen und Zugriffskontrollen durch eine Reihe von Textformularen der Zugriffssteuerungsliste (ACL) mit den Bezeichnungen Lesen (r), Schreiben (w) und Ausführen (x) gesteuert. Alle ClusterControl-Objekte und -Funktionalitäten sind als Teil eines Verzeichnisbaums strukturiert, wir haben diesen CMON-Verzeichnisbaum (CDT) genannt, und jeder Eintrag gehört einem Benutzer, einer Gruppe und einer ACL. Sie können es sich ähnlich wie Datei- und Verzeichnisberechtigungen unter Linux vorstellen. Tatsächlich folgt die ClusterControl-Zugriffssteuerungsimplementierung den standardmäßigen POSIX-Zugriffssteuerungslisten.

Um ein Beispiel zu geben, betrachten Sie die folgenden Befehle. Wir haben den Cmon Directory Tree (CDT)-Wert für unseren Cluster mithilfe der Befehlszeile „s9s tree“ abgerufen (stellen Sie sich dies als ls -al in UNIX vor). In diesem Beispiel lautet unser Clustername „PostgreSQL 12“, wie unten gezeigt (gekennzeichnet durch das „c“ am Anfang der Zeile):

$ s9s tree --list --long
MODE        SIZE OWNER                      GROUP  NAME
crwxrwx---+    - system                     admins PostgreSQL 12
srwxrwxrwx     - system                     admins localhost
drwxrwxr--  1, 0 system                     admins groups
urwxr--r--     - admin                      admins admin
urwxr--r--     - dba                        admins dba
urwxr--r--     - nobody                     admins nobody
urwxr--r--     - readeruser                 admins readeruser
urwxr--r--     - s9s-error-reporter-vagrant admins s9s-error-reporter-vagrant
urwxr--r--     - system                     admins system
Total: 22 object(s) in 4 folder(s).

Angenommen, wir haben einen schreibgeschützten Benutzer namens readeruser und dieser Benutzer gehört zu einer Gruppe namens readergroup. Um Leseberechtigungen für readeruser und readergroup zuzuweisen, und unser CDT-Pfad ist „/PostgreSQL 12“ (immer mit einem „/“ beginnend, ähnlich wie bei UNIX), würden wir Folgendes ausführen:

$ s9s tree --add-acl --acl="group:readergroup:r--" "/PostgreSQL 12"
Acl is added.
$ s9s tree --add-acl --acl="user:readeruser:r--" "/PostgreSQL 12"
Acl is added.

Nun kann der Leserbenutzer auf das ClusterControl per GUI und CLI als Nur-Lese-Benutzer für einen Datenbankcluster namens "PostgreSQL 12" zugreifen. Beachten Sie, dass die obigen ACL-Manipulationsbeispiele aus der ClusterControl-CLI stammen, wie in diesem Artikel beschrieben. Wenn Sie sich über die ClusterControl-GUI verbinden, sehen Sie die folgende neue Zugriffssteuerungsseite:

ClusterControl GUI bietet eine einfachere Möglichkeit, die Zugriffskontrolle zu handhaben. Es bietet einen geführten Ansatz zum Konfigurieren der Berechtigungen, des Eigentums und der Gruppierungen. Ähnlich wie bei der älteren Version gehört jeder Cluster einem Team, und Sie können einem anderen Team einen Lese- oder Administratorzugriff zuweisen oder einem anderen Team den Zugriff auf den Cluster über die GUI- oder CLI-Schnittstellen von ClusterControl verbieten.

LDAP

In den vorherigen Versionen (1.8.1 und älter) wurde die LDAP-Authentifizierung von der Frontend-Komponente über eine Reihe von Tabellen (dcps.ldap_settings und dcps.ldap_group_roles) gehandhabt. Ab ClusterControl 1.8.2 werden alle LDAP-Konfigurationen und Zuordnungen in dieser Konfigurationsdatei /etc/cmon-ldap.cnf gespeichert.

Es wird empfohlen, die LDAP-Einstellung und Gruppenzuordnungen über die ClusterControl-Benutzeroberfläche zu konfigurieren, da alle Änderungen an dieser Datei ein Neuladen des Controller-Prozesses erfordern, der automatisch ausgelöst wird, wenn LDAP über die Benutzeroberfläche konfiguriert wird. Sie können die Datei auch direkt ändern, müssen jedoch den cmon-Dienst manuell neu laden, indem Sie die folgenden Befehle verwenden:

$ systemctl restart cmon # or service cmon restart

Der folgende Screenshot zeigt den neuen Dialog Erweiterte LDAP-Einstellungen:

Im Vergleich zur vorherigen Version ist die neue LDAP-Implementierung besser anpassbar, um branchenübliche Verzeichnisdienste wie Active Directory, OpenLDAP und FreeIPA zu unterstützen. Es unterstützt auch Attributzuordnungen, sodass Sie festlegen können, welches Attribut einen Wert darstellt, der in die ClusterControl-Benutzerdatenbank importiert werden kann, z. B. E-Mail, echter Name und Benutzername.

Weitere Informationen finden Sie im Benutzerhandbuch zu den LDAP-Einstellungen.

Vorteile der neuen Benutzerverwaltung

Beachten Sie, dass die aktuelle Benutzerverwaltung immer noch Seite an Seite mit dem neuen Benutzerverwaltungssystem arbeitet. Wir empfehlen unseren Benutzern jedoch dringend, vor Q1 2022 auf das neue System zu migrieren. Derzeit wird nur die manuelle Migration unterstützt. Einzelheiten finden Sie im Abschnitt „Migration zur Verwaltung neuer Benutzer“ weiter unten.

Das neue Benutzerverwaltungssystem bietet ClusterControl-Benutzern folgende Vorteile:

  • Zentralisierte Benutzerverwaltung für ClusterControl CLI und ClusterControl GUI. Die gesamte Authentifizierung, Autorisierung und Abrechnung erfolgt durch den ClusterControl Controller-Dienst (cmon).

  • Erweiterte und anpassbare LDAP-Konfiguration. Die vorherige Implementierung unterstützt nur eine Reihe von Benutzernamenattributen und musste auf ihre eigene Weise konfiguriert werden, damit sie richtig funktioniert.

  • Dasselbe Benutzerkonto kann verwendet werden, um sich sicher über TLS bei der ClusterControl-API zu authentifizieren. Sehen Sie sich zum Beispiel diesen Artikel an.

  • Sichere Benutzerauthentifizierungsmethoden. Die neue native Benutzerverwaltung unterstützt die Benutzerauthentifizierung mit privaten/öffentlichen Schlüsseln und Passwörtern. Für die LDAP-Authentifizierung werden die LDAP-Bindungen und Lookups über SSL und TLS unterstützt.

  • Eine konsistente Ansicht der Zeitdarstellung basierend auf der Zeitzoneneinstellung des Benutzers, insbesondere wenn sowohl die CLI- als auch die GUI-Schnittstelle für verwendet werden Verwaltung und Überwachung von Datenbankclustern.

  • Schutz vor Brute-Force-Angriffen, bei denen einem Benutzer der Zugriff auf das System durch Suspendierung oder deaktivierte Anmeldungen verweigert werden kann.

Migration zur neuen Benutzerverwaltung

Da beide Benutzersysteme unterschiedliche Benutzerkonten und -strukturen haben, ist es ein sehr riskanter Vorgang, die Benutzermigration vom Frontend zum Backend zu automatisieren. Daher muss der Benutzer die Kontomigration nach dem Upgrade von 1.8.1 und älter manuell durchführen. Einzelheiten finden Sie unter Aktivieren der neuen Benutzerverwaltung. Für bestehende LDAP-Benutzer lesen Sie bitte den Abschnitt LDAP-Migrationsverfahren.

Wir empfehlen Benutzern aus folgenden Gründen dringend, auf dieses neue System umzusteigen:

  • Das UI-Benutzerverwaltungssystem (bei dem sich ein Benutzer mit einer E-Mail-Adresse anmeldet) wird vom veraltet sein Ende Q1 2022 (~1 Jahr ab jetzt).

  • Alle kommenden Funktionen und Verbesserungen basieren auf dem neuen Benutzerverwaltungssystem, das vom cmon-Backend-Prozess verwaltet wird.

  • Es widerspricht der Intuition, zwei oder mehr Authentifizierungs-Handler auf einem einzigen System laufen zu lassen.

Wenn Sie Probleme haben und Hilfe bei der Migration und Implementierung des neuen ClusterControl-Benutzerverwaltungssystems benötigen, zögern Sie nicht, uns über das Support-Portal, das Community-Forum oder den Slack-Kanal zu kontaktieren.

Abschließende Gedanken

ClusterControl entwickelt sich im Laufe der Zeit zu einem anspruchsvolleren Produkt. Um das Wachstum zu unterstützen, müssen wir neue große Änderungen für eine langfristig reichhaltigere Erfahrung einführen. Erwarten Sie weitere Funktionen und Verbesserungen des neuen Benutzerverwaltungssystems in den kommenden Versionen!