Po aktualizacji do ClusterControl 1.8.2 powinieneś otrzymać następujący baner powiadomienia:
Co z tym? Jest to nota o deprecjacji obecnego systemu zarządzania użytkownikami na rzecz nowego systemu zarządzania użytkownikami obsługiwanego przez usługę kontrolera ClusterControl (cmon). Po kliknięciu banera zostaniesz przekierowany na stronę tworzenia użytkownika, aby utworzyć nowego administratora, jak opisano w tym podręczniku użytkownika.
W tym poście na blogu przyjrzymy się nowemu systemowi zarządzania użytkownikami wprowadzonemu w ClusterControl 1.8.2 i zobaczymy, czym różni się od poprzednich. Dla wyjaśnienia, stary system zarządzania użytkownikami będzie nadal działał równolegle z nowym systemem uwierzytelniania i zarządzania użytkownikami do pierwszego kwartału 2022 r. Od teraz wszystkie nowe instalacje dla ClusterControl 1.8.2 i nowszych będą konfigurowane z nowym użytkownikiem system zarządzania.
Zarządzanie użytkownikami przed 1.8.2
ClusterControl 1.8.1 i starsze przechowuje informacje o użytkownikach i księgowość w bazie danych internetowego interfejsu użytkownika o nazwie „dcps”. Ta baza danych jest niezależna od bazy danych cmon używanej przez usługę ClusterControl Controller (cmon).
Konta użytkowników i uwierzytelnianie
Konto użytkownika składa się z następujących informacji:
-
Nazwa
-
Strefa czasowa
-
E-mail (używany do uwierzytelniania)
-
Hasło
-
Rola
-
Zespół
Do zalogowania się do GUI ClusterControl można użyć adresu e-mail, jak pokazano na poniższym zrzucie ekranu:
Po zalogowaniu ClusterControl wyszuka organizację, do której należy użytkownik, a następnie przypisze kontrolę dostępu opartą na rolach (RBAC), aby uzyskać dostęp do określonego klastra i funkcji. Zespół może mieć zero lub więcej klastrów, podczas gdy użytkownik musi należeć do jednego lub więcej zespołów. Utworzenie użytkownika wymaga wcześniej utworzonej roli i zespołu. ClusterControl zawiera domyślny zespół o nazwie Administrator i 3 domyślne role — superadministrator, administrator i użytkownik.
Kontrola uprawnień i dostępu
ClusterControl 1.8.1 i starsze wykorzystywały kontrolę dostępu opartą na interfejsie użytkownika na podstawie przypisania ról. Innym terminem nazwaliśmy tę kontrolę dostępu opartą na rolach (RBAC). Administrator tworzyłby role, a każdej roli przypisywano zestaw uprawnień umożliwiających dostęp do określonych funkcji i stron. Egzekwowanie ról odbywa się po stronie frontonu, gdzie usługa kontrolera ClusterControl (cmon) nie ma pojęcia, czy aktywny użytkownik ma możliwość dostępu do funkcji, ponieważ informacje nigdy nie są udostępniane między tymi dwoma aparatami uwierzytelniania. Utrudniłoby to kontrolę uwierzytelniania i autoryzacji w przyszłości, zwłaszcza przy dodawaniu większej liczby funkcji, które są kompatybilne zarówno z interfejsami GUI, jak i CLI.
Poniższy zrzut ekranu przedstawia dostępne funkcje, którymi można sterować za pomocą RBAC:
Administrator musi tylko wybrać odpowiedni poziom dostępu dla określonych funkcji, który będzie przechowywany w bazie danych „dcps”, a następnie używany przez GUI ClusterControl w celu udostępnienia zasobów interfejsu użytkownika użytkownikom GUI. Utworzona tutaj lista dostępu nie ma nic wspólnego z użytkownikami CLI.
LDAP
ClusterControl w wersji wcześniejszej niż 1.8.1 używał modułu PHP LDAP do uwierzytelniania LDAP. Obsługuje usługi katalogowe Active Directory, OpenLDAP i FreeIPA, ale do identyfikacji użytkownika można użyć tylko ograniczonej liczby atrybutów LDAP, takich jak uid, cn lub sAMAccountName. Implementacja jest dość prosta i nie obsługuje zaawansowanego filtrowania bazy użytkowników/grup, mapowania atrybutów i implementacji TLS.
Poniższe informacje są potrzebne do ustawień LDAP:
Ponieważ jest to usługa frontendowa, plik dziennika LDAP jest przechowywany w katalog aplikacji internetowych, w szczególności w /var/www/html/clustercontrol/app/log/cc-ldap.log. Uwierzytelniony użytkownik zostanie zmapowany do określonej roli i zespołu ClusterControl, zgodnie z definicją na stronie mapowania grup LDAP.
Zarządzanie użytkownikami po wersji 1.8.2
W tej nowej wersji ClusterControl obsługuje zarówno procedury obsługi uwierzytelniania, uwierzytelnianie frontendu (przy użyciu adresu e-mail) oraz uwierzytelnianie backendu (przy użyciu nazwy użytkownika). W celu uwierzytelniania zaplecza, ClusterControl przechowuje informacje o użytkowniku i ewidencjonowanie danych w bazie danych cmon, która jest używana przez usługę ClusterControl Controller (cmon).
Konta użytkowników i uwierzytelnianie
Konto użytkownika składa się z następujących informacji:
-
Nazwa użytkownika (używana do uwierzytelniania)
-
Adres e-mail
-
Imię i nazwisko
-
Tagi
-
Pochodzenie
-
Wyłączone
-
Zawieś
-
Grupy
-
Właściciel
-
ACL
-
Nieudane logowanie
-
Ścieżka CDT
W porównaniu ze starą implementacją, nowe zarządzanie użytkownikami zapewnia użytkownikowi więcej informacji, co pozwala na złożoną manipulację kontem użytkownika i lepszą kontrolę dostępu przy zwiększonym bezpieczeństwie. Proces uwierzytelniania użytkownika jest teraz chroniony przed atakami typu brute-force i może zostać dezaktywowany ze względów konserwacyjnych lub bezpieczeństwa.
Do zalogowania się do GUI ClusterControl można użyć adresu e-mail lub nazwy użytkownika, jak pokazano na poniższym zrzucie ekranu (zwróć uwagę na tekst zastępczy pola nazwy użytkownika):
Jeśli użytkownik zaloguje się przy użyciu adresu e-mail, zostanie uwierzytelniony za pośrednictwem wycofującej się usługi zarządzania użytkownikami frontonu i jeśli zostanie podana nazwa użytkownika, ClusterControl automatycznie użyje nowej usługi zarządzania użytkownikami zaplecza obsługiwanej przez usługę kontrolera. Oba uwierzytelnienia działają z dwoma różnymi zestawami interfejsów zarządzania użytkownikami.
Kontrola uprawnień i dostępu
W nowym zarządzaniu użytkownikami uprawnienia i kontrola dostępu są kontrolowane przez zestaw formularzy tekstowych listy kontroli dostępu (ACL) zwanych odczytem (r), zapisem (w) i wykonaniem (x). Wszystkie obiekty i funkcje ClusterControl są ustrukturyzowane jako część drzewa katalogów, które nazwaliśmy tym drzewem katalogów CMON (CDT), a właścicielem każdego wpisu jest użytkownik, grupa i lista ACL. Możesz myśleć o tym jako podobnym do uprawnień do plików i katalogów w systemie Linux. W rzeczywistości implementacja kontroli dostępu ClusterControl jest zgodna ze standardowymi listami kontroli dostępu POSIX.
Aby umieścić przykład, rozważ następujące polecenia. Pobraliśmy wartość Cmon Directory Tree (CDT) dla naszego klastra za pomocą wiersza polecenia „s9s tree” (wyobraź sobie to jako ls -al w systemie UNIX). W tym przykładzie nazwa naszego klastra to „PostgreSQL 12”, jak pokazano poniżej (oznaczone literą „c” na początku wiersza):
$ 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).
Załóżmy, że mamy użytkownika tylko do odczytu o nazwie readeruser, który należy do grupy o nazwie readergroup. Aby przypisać uprawnienia do odczytu dla użytkownika-czytnika i grupy-czytników, a nasza ścieżka CDT to „/PostgreSQL 12” (zawsze zaczyna się od „/”, podobnie jak w systemie UNIX), uruchomilibyśmy:
$ 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.
Teraz użytkownik czytający może uzyskać dostęp do ClusterControl przez GUI i CLI jako użytkownik tylko do odczytu dla klastra bazy danych o nazwie „PostgreSQL 12”. Należy zauważyć, że powyższe przykłady manipulacji listą ACL zostały zaczerpnięte z ClusterControl CLI, zgodnie z opisem w tym artykule. Jeśli połączysz się przez ClusterControl GUI, zobaczysz następującą nową stronę kontroli dostępu:
GUI ClusterControl zapewnia prostszy sposób obsługi kontroli dostępu. Zapewnia ukierunkowane podejście do konfigurowania uprawnień, własności i grupowania. Podobnie jak w starszej wersji, każdy klaster jest własnością zespołu i możesz określić inny zespół, który będzie miał uprawnienia do odczytu, administratora lub zabroni innemu zespołowi dostępu do klastra z obu interfejsów ClusterControl GUI lub CLI.
LDAP
W poprzednich wersjach (1.8.1 i starszych) uwierzytelnianie LDAP było obsługiwane przez komponent frontendu za pomocą zestawu tabel (dcps.ldap_settings i dcps.ldap_group_roles). Począwszy od ClusterControl 1.8.2, wszystkie konfiguracje i mapowania LDAP będą przechowywane w tym pliku konfiguracyjnym /etc/cmon-ldap.cnf.
Zaleca się skonfigurowanie ustawień LDAP i mapowań grup za pomocą interfejsu użytkownika ClusterControl, ponieważ wszelkie zmiany w tym pliku będą wymagały ponownego załadowania do procesu kontrolera, co jest wyzwalane automatycznie podczas konfigurowania LDAP za pośrednictwem interfejsu użytkownika. Możesz również dokonać bezpośrednich modyfikacji pliku, jednak musisz ręcznie ponownie załadować usługę cmon za pomocą następujących poleceń:
$ systemctl restart cmon # or service cmon restart
Poniższy zrzut ekranu przedstawia nowe okno dialogowe Ustawienia zaawansowane LDAP:
W porównaniu z poprzednią wersją, nowa implementacja LDAP jest bardziej dostosowana do obsługi standardowych usług katalogowych, takich jak Active Directory, OpenLDAP i FreeIPA. Obsługuje również mapowania atrybutów, dzięki czemu można ustawić, który atrybut reprezentuje wartość, którą można zaimportować do bazy danych użytkowników ClusterControl, taką jak adres e-mail, prawdziwe imię i nazwisko oraz nazwa użytkownika.
Aby uzyskać więcej informacji, zapoznaj się z podręcznikiem użytkownika ustawień LDAP.
Zalety nowego zarządzania użytkownikami
Pamiętaj, że obecne zarządzanie użytkownikami nadal działa równolegle z nowym systemem zarządzania użytkownikami. Jednak zdecydowanie zalecamy naszym użytkownikom migrację do nowego systemu przed pierwszym kwartałem 2022 r. Obecnie obsługiwana jest tylko migracja ręczna. Zobacz sekcję Migracja do nowego zarządzania użytkownikami poniżej, aby uzyskać szczegółowe informacje.
Nowy system zarządzania użytkownikami przyniesie korzyści użytkownikom ClusterControl w następujący sposób:
-
Scentralizowane zarządzanie użytkownikami dla ClusterControl CLI i ClusterControl GUI. Całe uwierzytelnianie, autoryzacja i rozliczanie będą obsługiwane przez usługę ClusterControl Controller (cmon).
-
Zaawansowana i dostosowywana konfiguracja LDAP. Poprzednia implementacja obsługuje tylko kilka atrybutów nazwy użytkownika i musiała zostać skonfigurowana na swój własny sposób, aby działała poprawnie.
-
To samo konto użytkownika może być używane do bezpiecznego uwierzytelniania w ClusterControl API przez TLS. Sprawdź na przykład ten artykuł.
-
Bezpieczne metody uwierzytelniania użytkowników. Nowe natywne zarządzanie użytkownikami obsługuje uwierzytelnianie użytkowników przy użyciu zarówno kluczy prywatnych/publicznych, jak i haseł. W przypadku uwierzytelniania LDAP powiązania i wyszukiwania LDAP są obsługiwane przez SSL i TLS.
-
Spójny widok reprezentacji czasu w oparciu o ustawienie strefy czasowej użytkownika, szczególnie w przypadku korzystania z interfejsu CLI i GUI do zarządzanie i monitorowanie klastra bazy danych.
-
Ochrona przed atakami typu brute force, w których użytkownikowi można odmówić dostępu do systemu poprzez zawieszenie lub wyłączenie logowania.
Migracja do nowego zarządzania użytkownikami
Ponieważ oba systemy użytkowników mają różne konta użytkownika i strukturę, zautomatyzowanie migracji użytkowników z frontendu do backendu jest bardzo ryzykowną operacją. Dlatego użytkownik musi ręcznie przeprowadzić migrację konta po uaktualnieniu z wersji 1.8.1 i starszych. Aby uzyskać szczegółowe informacje, zapoznaj się z rozdziałem Włączanie zarządzania nowymi użytkownikami. W przypadku istniejących użytkowników LDAP zapoznaj się z sekcją Procedura migracji LDAP.
Zdecydowanie zalecamy użytkownikom migrację do tego nowego systemu z następujących powodów:
-
System zarządzania użytkownikami interfejsu użytkownika (w którym użytkownik logowałby się przy użyciu adresu e-mail) zostanie przestarzały przez koniec pierwszego kwartału 2022 r. (~1 rok od teraz).
-
Wszystkie nadchodzące funkcje i ulepszenia będą oparte na nowym systemie zarządzania użytkownikami, obsługiwanym przez proces zaplecza cmon.
-
Nie intuicyjne jest posiadanie dwóch lub więcej programów obsługi uwierzytelniania działających w jednym systemie.
Jeśli napotkasz problemy i potrzebujesz pomocy w migracji i wdrożeniu nowego systemu zarządzania użytkownikami ClusterControl, nie wahaj się skontaktować z nami za pośrednictwem portalu wsparcia, forum społeczności lub kanału Slack.
Ostateczne myśli
ClusterControl z czasem ewoluuje w bardziej wyrafinowany produkt. Aby wesprzeć rozwój, musimy wprowadzić nowe duże zmiany, aby w dłuższej perspektywie zapewnić bogatsze wrażenia. Oczekuj więcej funkcji i ulepszeń nowego systemu zarządzania użytkownikami w nadchodzących wersjach!