Après la mise à niveau vers ClusterControl 1.8.2, vous devriez obtenir la bannière de notification suivante :
Qu'est-ce qui se passe avec ça ? Il s'agit d'un avis de dépréciation du système de gestion des utilisateurs actuel au profit du nouveau système de gestion des utilisateurs géré par le service contrôleur ClusterControl (cmon). En cliquant sur la bannière, vous serez redirigé vers la page de création d'utilisateur pour créer un nouvel utilisateur administrateur, comme décrit dans ce guide de l'utilisateur.
Dans cet article de blog, nous allons examiner le nouveau système de gestion des utilisateurs introduit dans ClusterControl 1.8.2 et voir en quoi il diffère des précédents. Juste pour clarifier, l'ancien système de gestion des utilisateurs fonctionnera toujours côte à côte avec le nouveau système d'authentification et de gestion des utilisateurs jusqu'au premier trimestre 2022. À partir de maintenant, toutes les nouvelles installations pour ClusterControl 1.8.2 et versions ultérieures seront configurées avec le nouvel utilisateur système de gestion.
Gestion des utilisateurs pré-1.8.2
ClusterControl 1.8.1 et les versions antérieures stockent les informations utilisateur et la comptabilité dans une base de données d'interface utilisateur Web appelée "dcps". Cette base de données est indépendante de la base de données cmon utilisée par le service ClusterControl Controller (cmon).
Comptes d'utilisateurs et authentification
Un compte utilisateur comprend les informations suivantes :
-
Nom
-
Fuseau horaire
-
E-mail (utilisé pour l'authentification)
-
Mot de passe
-
Rôle
-
Équipe
On utiliserait une adresse e-mail pour se connecter à l'interface graphique de ClusterControl, comme illustré dans la capture d'écran suivante :
Une fois connecté, ClusterControl recherchera l'organisation à laquelle appartient l'utilisateur, puis attribuera le contrôle d'accès basé sur les rôles (RBAC) pour accéder à un cluster et à des fonctionnalités spécifiques. Une équipe peut avoir zéro ou plusieurs clusters, tandis qu'un utilisateur doit appartenir à une ou plusieurs équipes. La création d'un utilisateur nécessite un rôle et une équipe créés au préalable. ClusterControl est livré avec une équipe par défaut appelée Admin et 3 rôles par défaut :super administrateur, administrateur et utilisateur.
Autorisation et contrôle d'accès
ClusterControl 1.8.1 et les versions antérieures utilisaient un contrôle d'accès basé sur l'interface utilisateur basé sur l'attribution de rôles. Dans un autre terme, nous avons appelé ce contrôle d'accès basé sur les rôles (RBAC). L'administrateur créerait des rôles, et chaque rôle se verrait attribuer un ensemble d'autorisations pour accéder à certaines fonctionnalités et pages. L'application des rôles se produit du côté frontal, où le service de contrôleur ClusterControl (cmon) n'a aucune idée si l'utilisateur actif a la possibilité d'accéder à la fonctionnalité car les informations ne sont jamais partagées entre ces deux moteurs d'authentification. Cela rendrait l'authentification et l'autorisation plus difficiles à contrôler à l'avenir, en particulier lors de l'ajout de fonctionnalités compatibles avec les interfaces GUI et CLI.
La capture d'écran suivante montre les fonctionnalités disponibles pouvant être contrôlées via RBAC :
L'administrateur doit simplement choisir le niveau d'accès approprié pour des fonctionnalités spécifiques, et il sera stocké dans la base de données "dcps", puis utilisé par l'interface graphique de ClusterControl pour autoriser les ressources de l'interface utilisateur aux utilisateurs de l'interface graphique. La liste d'accès créée ici n'a rien à voir avec les utilisateurs CLI.
LDAP
ClusterControl pré-1.8.1 utilisait le module PHP LDAP pour l'authentification LDAP. Il prend en charge les services d'annuaire Active Directory, OpenLDAP et FreeIPA, mais seul un nombre limité d'attributs LDAP peut être utilisé pour l'identification de l'utilisateur, tels que uid, cn ou sAMAccountName. La mise en œuvre est assez simple et ne prend pas en charge le filtrage avancé de base d'utilisateurs/groupes, le mappage des attributs et la mise en œuvre TLS.
Les informations suivantes sont nécessaires pour les paramètres LDAP :
Puisqu'il s'agit d'un service frontal, le fichier journal LDAP est stocké sous le répertoire de l'application Web, en particulier à /var/www/html/clustercontrol/app/log/cc-ldap.log. Un utilisateur authentifié sera mappé à un rôle et à une équipe ClusterControl particuliers, comme défini dans la page de mappage de groupe LDAP.
Gestion des utilisateurs post-1.8.2
Dans cette nouvelle version, ClusterControl prend en charge les deux gestionnaires d'authentification, l'authentification frontend (en utilisant l'adresse e-mail) et l'authentification backend (en utilisant le nom d'utilisateur). Pour l'authentification backend, ClusterControl stocke les informations utilisateur et la comptabilité dans la base de données cmon utilisée par le service ClusterControl Controller (cmon).
Comptes d'utilisateurs et authentification
Un compte utilisateur comprend les informations suivantes :
-
Nom d'utilisateur (utilisé pour l'authentification)
-
Adresse e-mail
-
Nom complet
-
Balises
-
Origine
-
Désactivé
-
Suspendre
-
Groupes
-
Propriétaire
-
ACL
-
Échec des connexions
-
chemin CDT
Par rapport à l'ancienne implémentation, la nouvelle gestion des utilisateurs contient plus d'informations pour un utilisateur, ce qui permet une manipulation complexe des comptes d'utilisateurs et un meilleur contrôle d'accès avec une sécurité renforcée. Un processus d'authentification des utilisateurs est désormais protégé contre les attaques par force brute et peut être désactivé pour des raisons de maintenance ou de sécurité.
On utiliserait une adresse e-mail ou un nom d'utilisateur pour se connecter à l'interface graphique de ClusterControl, comme illustré dans la capture d'écran suivante (faites attention au texte d'espace réservé pour le champ Nom d'utilisateur) :
Si l'utilisateur se connecte à l'aide d'une adresse e-mail, l'utilisateur sera authentifié via le service de gestion des utilisateurs frontend obsolète et si un nom d'utilisateur est fourni, ClusterControl utilisera automatiquement le nouveau service de gestion des utilisateurs backend géré par le service de contrôleur. Les deux authentifications fonctionnent avec deux ensembles différents d'interfaces de gestion des utilisateurs.
Autorisation et contrôle d'accès
Dans la nouvelle gestion des utilisateurs, les autorisations et les contrôles d'accès sont contrôlés par un ensemble de formes de texte de liste de contrôle d'accès (ACL) appelées lecture (r), écriture (w) et exécution (x). Tous les objets et fonctionnalités de ClusterControl sont structurés dans le cadre d'une arborescence de répertoires, nous avons appelé cette arborescence de répertoires CMON (CDT) et chaque entrée appartient à un utilisateur, un groupe et une ACL. Vous pouvez le considérer comme similaire aux autorisations de fichiers et de répertoires Linux. En fait, la mise en œuvre du contrôle d'accès de ClusterControl suit les listes de contrôle d'accès POSIX standard.
Pour donner un exemple, considérez les commandes suivantes. Nous avons récupéré la valeur Cmon Directory Tree (CDT) pour notre cluster en utilisant la ligne de commande "s9s tree" (imaginez ceci comme ls -al sous UNIX). Dans cet exemple, le nom de notre cluster est "PostgreSQL 12", comme indiqué ci-dessous (indiqué par le "c" en début de ligne) :
$ 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).
Supposons que nous ayons un utilisateur en lecture seule appelé readeruser, et que cet utilisateur appartienne à un groupe appelé readergroup. Pour attribuer une autorisation de lecture pour readeruser et readergroup, et notre chemin CDT est "/ PostgreSQL 12" (commencez toujours par un "/", similaire à UNIX), nous exécuterions :
$ 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.
Maintenant, l'utilisateur lecteur peut accéder au ClusterControl via l'interface graphique et la CLI en tant qu'utilisateur en lecture seule pour un cluster de base de données appelé "PostgreSQL 12". Notez que les exemples de manipulation ACL ci-dessus ont été tirés de la CLI ClusterControl, comme décrit dans cet article. Si vous vous connectez via l'interface graphique de ClusterControl, vous verrez la nouvelle page de contrôle d'accès suivante :
L'interface graphique de ClusterControl fournit un moyen plus simple de gérer le contrôle d'accès. Il fournit une approche guidée pour configurer les autorisations, la propriété et les groupements. Semblable à l'ancienne version, chaque cluster appartient à une équipe, et vous pouvez spécifier une équipe différente pour avoir une lecture, un administrateur ou interdire à une autre équipe d'accéder au cluster à partir des interfaces GUI ou CLI de ClusterControl.
LDAP
Dans les versions précédentes (1.8.1 et antérieures), l'authentification LDAP était gérée par le composant frontal via un ensemble de tables (dcps.ldap_settings et dcps.ldap_group_roles). À partir de ClusterControl 1.8.2, toutes les configurations et tous les mappages LDAP seront stockés dans ce fichier de configuration, /etc/cmon-ldap.cnf.
Il est recommandé de configurer les paramètres LDAP et les mappages de groupe via l'interface utilisateur de ClusterControl car toute modification de ce fichier nécessitera un rechargement du processus du contrôleur, qui est déclenché automatiquement lors de la configuration de LDAP via l'interface utilisateur. Vous pouvez également apporter des modifications directes au fichier, cependant, vous devez recharger le service cmon manuellement en utilisant les commandes suivantes :
$ systemctl restart cmon # or service cmon restart
La capture d'écran suivante montre la nouvelle boîte de dialogue Paramètres avancés LDAP :
Par rapport à la version précédente, la nouvelle implémentation LDAP est plus personnalisable pour prendre en charge les services d'annuaire standard de l'industrie comme Active Directory, OpenLDAP et FreeIPA. Il prend également en charge les mappages d'attributs afin que vous puissiez définir quel attribut représente une valeur pouvant être importée dans la base de données utilisateur de ClusterControl, comme l'e-mail, le nom réel et le nom d'utilisateur.
Pour plus d'informations, consultez le guide de l'utilisateur des paramètres LDAP.
Avantages de la nouvelle gestion des utilisateurs
Notez que la gestion actuelle des utilisateurs fonctionne toujours côte à côte avec le nouveau système de gestion des utilisateurs. Cependant, nous recommandons vivement à nos utilisateurs de migrer vers le nouveau système avant le premier trimestre 2022. Seule la migration manuelle est prise en charge pour le moment. Voir la section Migration vers la nouvelle section de gestion des utilisateurs ci-dessous pour plus de détails.
Le nouveau système de gestion des utilisateurs bénéficiera aux utilisateurs de ClusterControl de la manière suivante :
-
Gestion centralisée des utilisateurs pour ClusterControl CLI et ClusterControl GUI. Toute l'authentification, l'autorisation et la comptabilité seront gérées par le service ClusterControl Controller (cmon).
-
Configuration LDAP avancée et personnalisable. L'implémentation précédente ne prend en charge qu'un certain nombre d'attributs de nom d'utilisateur et devait être configurée à sa manière pour qu'elle fonctionne correctement.
-
Le même compte utilisateur peut être utilisé pour s'authentifier auprès de l'API ClusterControl en toute sécurité via TLS. Consultez cet article par exemple.
-
Méthodes d'authentification utilisateur sécurisées. La nouvelle gestion native des utilisateurs prend en charge l'authentification des utilisateurs à l'aide de clés privées/publiques et de mots de passe. Pour l'authentification LDAP, les liaisons et les recherches LDAP sont prises en charge via SSL et TLS.
-
Une vue cohérente de la représentation temporelle basée sur le paramètre de fuseau horaire de l'utilisateur, en particulier lors de l'utilisation à la fois de l'interface CLI et GUI pour gestion et surveillance du cluster de bases de données.
-
Protection contre les attaques par force brute, où un utilisateur peut se voir refuser l'accès au système via une suspension ou des connexions désactivées.
Migration vers la nouvelle gestion des utilisateurs
Étant donné que les deux systèmes utilisateur ont un compte utilisateur et une structure différents, il est très risqué d'automatiser la migration des utilisateurs du frontend vers le backend. Par conséquent, l'utilisateur doit effectuer la migration du compte manuellement après la mise à niveau depuis la version 1.8.1 et antérieure. Veuillez vous référer à Activer la gestion des nouveaux utilisateurs pour plus de détails. Pour les utilisateurs LDAP existants, veuillez vous reporter à la section Procédure de migration LDAP.
Nous recommandons vivement aux utilisateurs de migrer vers ce nouveau système pour les raisons suivantes :
-
Le système de gestion des utilisateurs de l'interface utilisateur (où un utilisateur se connecte à l'aide d'une adresse e-mail) sera obsolète par le fin du 1er trimestre 2022 (~1 an à partir de maintenant).
-
Toutes les fonctionnalités et améliorations à venir seront basées sur le nouveau système de gestion des utilisateurs, géré par le processus backend cmon.
-
Il est contre-intuitif d'avoir deux gestionnaires d'authentification ou plus exécutés sur un seul système.
Si vous rencontrez des problèmes et avez besoin d'aide pour la migration et la mise en œuvre du nouveau système de gestion des utilisateurs ClusterControl, n'hésitez pas à nous contacter via le portail d'assistance, le forum communautaire ou le canal Slack.
Réflexions finales
ClusterControl évolue avec le temps vers un produit plus sophistiqué. Pour soutenir la croissance, nous devons introduire de nouveaux changements majeurs pour une expérience plus riche à long terme. Attendez-vous à plus de fonctionnalités et d'améliorations du nouveau système de gestion des utilisateurs dans les prochaines versions !