2 LDAP

Aperçu

L’authentification LDAP externe peut être utilisée pour vérifier les noms d’utilisateur et les mots de passe.

L’authentification LDAP de Zabbix fonctionne au moins avec Microsoft Active Directory et OpenLDAP.

Si seule la connexion LDAP est configurée, l’utilisateur doit également exister dans Zabbix, toutefois son mot de passe Zabbix ne sera pas utilisé. Si l’authentification réussit, Zabbix fera correspondre un nom d’utilisateur local avec l’attribut de nom d’utilisateur renvoyé par LDAP.

Provisionnement des utilisateurs

Il est possible de configurer le provisionnement JIT (just-in-time) des utilisateurs LDAP. Dans ce cas, il n'est pas nécessaire qu'un utilisateur existe déjà dans Zabbix. Le compte utilisateur peut être créé lorsque l'utilisateur se connecte à Zabbix pour la première fois.

Lorsqu'un utilisateur LDAP saisit son identifiant LDAP et son mot de passe, Zabbix vérifie sur le serveur LDAP par défaut si cet utilisateur existe. Si l'utilisateur existe et ne possède pas encore de compte dans Zabbix, un nouvel utilisateur est créé dans Zabbix et l'utilisateur peut se connecter.

Un utilisateur créé via le provisionnement JIT est associé au serveur LDAP (annuaire) défini comme serveur par défaut au moment de sa création. La modification ultérieure du serveur LDAP par défaut ne change pas et ne met pas à jour le serveur LDAP lié aux utilisateurs déjà provisionnés.

Si le provisionnement JIT est activé, un groupe d'utilisateurs pour les utilisateurs déprovisionnés doit être spécifié dans l'onglet Authentication.

Le provisionnement JIT permet également de mettre à jour les comptes utilisateurs provisionnés en fonction des modifications dans LDAP. Par exemple, si un utilisateur est déplacé d'un groupe LDAP à un autre, l'utilisateur sera également déplacé d'un groupe à un autre dans Zabbix ; si un utilisateur est supprimé d'un groupe LDAP, l'utilisateur sera également supprimé du groupe dans Zabbix et, s'il n'appartient à aucun autre groupe, ajouté au groupe d'utilisateurs pour les utilisateurs déprovisionnés. Les comptes utilisateurs provisionnés sont mis à jour en fonction de la période de provisionnement configurée ou lorsque l'utilisateur se connecte à Zabbix.

Notez que le provisionnement en arrière-plan est effectué par l'interface Zabbix lorsque l'utilisateur interagit avec elle ou a au moins une page de l'interface ouverte dans le navigateur. Il n'existe pas de processus d'arrière-plan dédiés au provisionnement des utilisateurs.

LDAP prend en charge trois méthodes de liaison à l'annuaire pour l'authentification et les recherches :

  • Liaison anonyme — aucun Bind DN / Bind password n'est fourni et le serveur LDAP autorise les requêtes anonymes.
  • Utilisateur de liaison dédié (compte de service) — un compte LDAP spécifique est défini dans Bind DN / Bind password et est utilisé par Zabbix pour la recherche et le provisionnement. Il s'agit de l'option recommandée et la plus flexible, car Zabbix peut effectuer des recherches et le provisionnement en arrière-plan sans les identifiants des utilisateurs finaux.
  • Liaison directe de l'utilisateur — Zabbix effectue la liaison à l'aide des identifiants saisis par l'utilisateur lors de la connexion (aucun Bind DN / Bind password configuré) ; cela se configure en incluant un espace réservé tel que uid=%{user} dans le DN de base. Dans ce mode, Zabbix n'a accès au mot de passe de l'utilisateur que pendant la connexion interactive. Par conséquent, les actions de provisionnement qui nécessitent une authentification auprès de LDAP en dehors de la session de connexion de l'utilisateur (par exemple, l'utilisation du bouton Provision now ou l'exécution du provisionnement en arrière-plan lorsque l'utilisateur n'est pas activement connecté) ne peuvent pas s'authentifier et ne fonctionneront donc pas. Le provisionnement et les mises à jour pour la liaison directe de l'utilisateur n'ont lieu qu'au moment où l'utilisateur se connecte.

Plusieurs serveurs

Plusieurs serveurs LDAP peuvent être définis, si nécessaire. Par exemple, un serveur différent peut être utilisé pour authentifier un autre groupe d’utilisateurs. Une fois les serveurs LDAP configurés, dans la configuration des groupes d’utilisateurs, il devient possible de sélectionner le serveur LDAP requis pour le groupe d’utilisateurs concerné.

Si un utilisateur appartient à plusieurs groupes d’utilisateurs et à plusieurs serveurs LDAP, le premier serveur de la liste des serveurs LDAP triés par nom par ordre croissant sera utilisé pour l’authentification.

Configuration

Paramètres de configuration :

Parameter Description
Enable LDAP authentication Cochez la case pour activer l'authentification LDAP.
Enable JIT provisioning Cochez la case pour activer le provisionnement JIT.
Servers Cliquez sur Add pour configurer un serveur LDAP (voir Configuration du serveur LDAP ci-dessous).
Case-sensitive login Décochez la case pour désactiver la sensibilité à la casse lors de la connexion pour les noms d'utilisateur (activée par défaut).
La désactivation de la sensibilité à la casse permet, par exemple, de se connecter en tant que "admin" même si l'utilisateur Zabbix est "Admin" ou "ADMIN".
Veuillez noter que si la sensibilité à la casse est désactivée et qu'il existe plusieurs utilisateurs Zabbix avec des noms d'utilisateur similaires (par exemple, Admin et admin), la connexion de ces utilisateurs sera toujours refusée avec le message d'erreur suivant : "Authentication failed: supplied credentials are not unique."
Provisioning period Définissez la période de provisionnement, c'est-à-dire la fréquence à laquelle l'utilisateur connecté sera provisionné pendant l'utilisation de l'interface.

Configuration du serveur LDAP

Paramètres de configuration du serveur LDAP :

Paramètre Description
Nom Nom du serveur LDAP dans la configuration de Zabbix.
Hôte Nom d’hôte, adresse IP ou URI du serveur LDAP. Exemples : ldap.example.com, 127.0.0.1, ldap://ldap.example.com
Pour un serveur LDAP sécurisé, utilisez le protocole ldaps et le nom d’hôte. Exemple : ldaps://ldap.example.com
Avec OpenLDAP 2.x.x et les versions ultérieures, une URI LDAP complète de la forme ldap://hostname:port ou ldaps://hostname:port peut être utilisée.
Port Port du serveur LDAP. La valeur par défaut est 389.
Pour une connexion LDAP sécurisée, le numéro de port est généralement 636.
Non utilisé lors de l’utilisation d’URI LDAP complètes.
DN de base Chemin de base vers les comptes utilisateur sur le serveur LDAP :
ou=Users,ou=system (pour OpenLDAP),
DC=company,DC=com (pour Microsoft Active Directory)
uid=%{user},dc=example,dc=com (pour la liaison directe de l’utilisateur, voir la remarque ci-dessous)
Attribut de recherche Attribut du compte LDAP utilisé pour la recherche :
uid (pour OpenLDAP),
sAMAccountName (pour Microsoft Active Directory)
DN de liaison Compte LDAP utilisé pour effectuer la liaison et les recherches sur le serveur LDAP, exemples :
uid=ldap_search,ou=system (pour OpenLDAP),
CN=ldap_search,OU=user_group,DC=company,DC=com (pour Microsoft Active Directory)
La liaison anonyme est également prise en charge. Notez que la liaison anonyme peut potentiellement exposer la configuration du domaine à des utilisateurs non autorisés (informations sur les utilisateurs, ordinateurs, serveurs, groupes, services, etc.). Pour des raisons de sécurité, désactivez les liaisons anonymes sur les hôtes LDAP et utilisez plutôt un accès authentifié.
Mot de passe de liaison Mot de passe LDAP du compte utilisé pour effectuer la liaison et les recherches sur le serveur LDAP.
Description Description du serveur LDAP.
Configurer le provisionnement JIT Cochez cette case pour afficher les options liées au provisionnement JIT.
Configuration des groupes Sélectionnez la méthode de configuration des groupes :
memberOf - en recherchant les utilisateurs et leur attribut d’appartenance aux groupes
groupOfNames - en recherchant les groupes via l’attribut member
Notez que memberOf est préférable, car cette méthode est plus rapide ; utilisez groupOfNames si votre serveur LDAP ne prend pas en charge memberOf ou si le filtrage des groupes est requis.
Attribut du nom du groupe Indiquez l’attribut à partir duquel récupérer le nom du groupe pour tous les objets de l’attribut memberOf (voir le champ Attribut d’appartenance de l’utilisateur au groupe)
Le nom du groupe est nécessaire pour le mappage des groupes d’utilisateurs.
Attribut d’appartenance de l’utilisateur au groupe Indiquez l’attribut qui contient les informations sur les groupes auxquels appartient l’utilisateur (par exemple, memberOf).
Par exemple, l’attribut memberOf peut contenir des informations telles que : memberOf=cn=zabbix-admin,ou=Groups,dc=example,dc=com
Ce champ est disponible uniquement pour la méthode memberOf.
Attribut du prénom de l’utilisateur Indiquez l’attribut qui contient le prénom de l’utilisateur.
Attribut du nom de famille de l’utilisateur Indiquez l’attribut qui contient le nom de famille de l’utilisateur.
Mappage des groupes d’utilisateurs Mappez un modèle de groupe d’utilisateurs LDAP à un groupe d’utilisateurs et à un rôle utilisateur Zabbix.
Cette configuration est nécessaire pour déterminer le groupe d’utilisateurs et le rôle que l’utilisateur provisionné obtiendra dans Zabbix.
Cliquez sur Ajouter pour ajouter un mappage.
Le champ Modèle de groupe LDAP prend en charge les caractères génériques (voir la remarque ci-dessous). Le nom du groupe doit correspondre à un groupe existant.
Si un utilisateur LDAP correspond à plusieurs groupes d’utilisateurs Zabbix, il devient membre de tous ces groupes.
Si un utilisateur correspond à plusieurs rôles utilisateur Zabbix, il obtient celui qui possède le niveau d’autorisation le plus élevé parmi eux.
Mappage des types de média Mappez les attributs média LDAP de l’utilisateur (par exemple, l’adresse e-mail) aux médias utilisateur Zabbix pour l’envoi des notifications (la valeur de l’attribut est utilisée comme champ Envoyer à du média).
Configuration avancée Cliquez sur l’en-tête Configuration avancée pour afficher les options de configuration avancées (voir ci-dessous).
StartTLS Cochez cette case pour utiliser l’opération StartTLS lors de la connexion au serveur LDAP. La connexion échouera si le serveur ne prend pas en charge StartTLS.
StartTLS ne peut pas être utilisé avec les serveurs qui utilisent le protocole ldaps.
Filtre de recherche Définissez une chaîne personnalisée lors de l’authentification d’un utilisateur dans LDAP. Les paramètres fictifs suivants sont pris en charge :
%{attr} - nom de l’attribut de recherche (uid, sAMAccountName)
%{user} - valeur du nom d’utilisateur à authentifier
Par exemple, pour effectuer une recherche sensible à la casse dans un environnement LDAP ou Microsoft Active Directory insensible à la casse, la chaîne peut être définie comme suit :
(%{attr}:caseExactMatch:=%{user}).
Si le filtre n’est pas personnalisé, LDAP utilise la valeur par défaut : (%{attr}=%{user}).

Pour configurer un serveur LDAP pour la liaison directe de l’utilisateur, ajoutez l’attribut uid=%{user} au paramètre DN de base (par exemple, uid=%{user},dc=example,dc=com) et laissez les paramètres BindDN et Mot de passe de liaison vides. Lors de l’authentification, le paramètre fictif %{user} est remplacé par le nom d’utilisateur saisi lors de la connexion.
Avec la liaison directe de l’utilisateur, Zabbix n’a accès aux identifiants de l’utilisateur que pendant la connexion interactive. Par conséquent, les tâches de provisionnement qui s’exécutent sans connexion interactive (par exemple, le bouton Provisionner maintenant ou la méthode API user.provision) ignorent les utilisateurs qui s’authentifient à l’aide de la liaison directe de l’utilisateur, car Zabbix ne peut pas effectuer la liaison en leur nom. Utilisez une liaison anonyme ou un utilisateur de liaison dédié (compte de service) si vous avez besoin que le provisionnement et les recherches LDAP fonctionnent depuis l’interface sans que l’utilisateur final soit connecté.

Dans le champ Modèle de groupe LDAP, le caractère générique * se comporte comme .* dans les expressions régulières et correspond à zéro caractère ou plus. Par exemple, le modèle *Demo*Admin correspond aux groupes LDAP WebDemoSuperAdmin et WebDemoAdmin. Le modèle doit correspondre à l’intégralité du nom du groupe ; ainsi, Demo*Admin (sans le * initial) ne correspond à aucun de ces groupes.

Les champs suivants sont spécifiques à « groupOfNames » en tant que méthode de Configuration des groupes :

Paramètre Description
DN de base des groupes Chemin de base vers les groupes sur le serveur LDAP.
Attribut du nom du groupe Indiquez l’attribut à partir duquel récupérer le nom du groupe dans le chemin de base spécifié pour les groupes.
Le nom du groupe est nécessaire pour le mappage des groupes d’utilisateurs.
Attribut des membres du groupe Indiquez l’attribut qui contient les informations sur les membres du groupe dans LDAP (par exemple, member).
Attribut de référence Indiquez l’attribut de référence pour le filtre de groupe (voir le champ Filtre de groupe).
Utilisez ensuite %{ref} dans le filtre de groupe pour récupérer les valeurs de l’attribut spécifié ici.
Filtre de groupe Indiquez le filtre permettant de récupérer le groupe dont l’utilisateur est membre.
Par exemple, (member=uid=%{ref},ou=Users,dc=example,dc=com) correspondra à « User1 » si l’attribut member du groupe est uid=User1,ou=Users,dc=example,dc=com et renverra le groupe dont « User1 » est membre.

En cas de problème avec les certificats, pour faire fonctionner une connexion LDAP sécurisée (ldaps), vous devrez peut-être ajouter une ligne TLS_REQCERT allow au fichier de configuration /etc/openldap/ldap.conf. Cela peut réduire la sécurité de la connexion au catalogue LDAP.

Il est recommandé de créer un compte LDAP distinct (DN de liaison) pour effectuer la liaison et les recherches sur le serveur LDAP avec des privilèges minimaux dans LDAP, plutôt que d’utiliser de véritables comptes utilisateur (utilisés pour se connecter à l’interface Zabbix).
Cette approche offre davantage de sécurité et ne nécessite pas de modifier le Mot de passe de liaison lorsque l’utilisateur modifie son propre mot de passe sur le serveur LDAP.
Dans le tableau ci-dessus, il s’agit du nom de compte ldap_search.

Test de l'accès

Le bouton Test permet de tester l'accès de l'utilisateur :

Parameter Description
Login Nom d'utilisateur LDAP à tester (prérempli avec le nom d'utilisateur actuel du frontend Zabbix). Ce nom d'utilisateur doit exister sur le serveur LDAP.
Zabbix n'activera pas l'authentification LDAP s'il n'est pas en mesure d'authentifier l'utilisateur de test.
User password Mot de passe de l'utilisateur LDAP à tester.