12 Configuration de SAML avec Microsoft Entra ID

Vue d'ensemble

Cette section fournit des directives pour configurer l’authentification unique et l’approvisionnement des utilisateurs dans Zabbix à partir de Microsoft Entra ID (anciennement Microsoft Azure Active Directory) à l’aide de l’authentification SAML 2.0.

Configuration de Microsoft Entra ID

Création d’une application

1. Connectez-vous au centre d’administration Microsoft Entra à l’adresse Microsoft Entra ID. À des fins de test, vous pouvez créer un compte d’essai gratuit dans Microsoft Entra ID.

2. Dans le centre d’administration Microsoft Entra, sélectionnez Applications -> Applications d’entreprise -> Nouvelle application -> Créez votre propre application.

3. Ajoutez le nom de votre application et sélectionnez l’option Intégrer toute autre application.... Ensuite, cliquez sur Créer.

Configuration de l’authentification unique

1. Sur la page de votre application, accédez à Set up single sign on et cliquez sur Get started. Sélectionnez ensuite SAML.

2. Modifiez Basic SAML Configuration :

  • Dans Identifier (Entity ID), définissez un nom unique pour identifier votre application auprès de Microsoft Entra ID, par exemple zabbix ;
  • Dans Reply URL (Assertion Consumer Service URL), définissez le point de terminaison d’authentification unique Zabbix : https://<path-to-zabbix-ui>/index_sso.php?acs :

Notez que "https" est requis. Pour que cela fonctionne avec Zabbix, il est nécessaire d’ajouter la ligne suivante à conf/zabbix.conf.php :

$SSO['SETTINGS'] = ['use_proxy_headers' => true];

3. Modifiez Attributes & Claims. Vous devez ajouter tous les attributs que vous souhaitez transmettre à Zabbix (user_name, user_lastname, user_email, user_mobile, groups).

Les noms des attributs sont arbitraires. Des noms d’attributs différents peuvent être utilisés ; toutefois, il est nécessaire qu’ils correspondent à la valeur du champ respectif dans les paramètres SAML de Zabbix.

  • Cliquez sur Add new claim pour ajouter un attribut :

  • Cliquez sur Add a group claim pour ajouter un attribut permettant de transmettre des groupes à Zabbix :

Dans cette revendication, il est important que les noms des groupes (et non les ID des groupes) soient transmis à Zabbix par l’attribut Source attribute sélectionné. Sinon, l’approvisionnement JIT des utilisateurs ne fonctionnera pas correctement.

4. Dans SAML Certificates, téléchargez le certificat Base64 fourni par Entra ID et placez-le dans conf/certs de l’installation du frontend Zabbix.

Définissez les permissions 644 sur celui-ci en exécutant :

chmod 644 entra.cer

5. Utilisez les valeurs de Set up <your app name> dans Entra ID pour configurer l’authentification SAML de Zabbix (voir la section suivante) :

Configuration de Zabbix

1. Dans Zabbix, accédez aux paramètres SAML et renseignez les options de configuration en fonction de la configuration Entra ID :

Champ Zabbix Champ de configuration dans Entra ID Valeur d'exemple
ID d'entité IdP Identifiant Microsoft Entra
URL du service SSO URL de connexion
URL du service SLO URL de déconnexion
ID d'entité SP Identifiant (ID d'entité)
Attribut du nom d'utilisateur Attribut personnalisé (revendication) user_email
Attribut du nom du groupe Attribut personnalisé (revendication) groups
Attribut du prénom de l'utilisateur Attribut personnalisé (revendication) user_name
Attribut du nom de famille de l'utilisateur Attribut personnalisé (revendication) user_lastname

2. Ajoutez le certificat Base64 fourni par Entra ID.

Si $SSO['CERT_STORAGE'] = 'database' est défini dans zabbix.conf.php, vous pouvez coller le texte du certificat ou téléverser le fichier du certificat dans l'interface web lors de la configuration SAML — aucun fichier n'est requis sur le système de fichiers.

Si $SSO['CERT_STORAGE'] = 'file' est défini dans zabbix.conf.php, le certificat doit être disponible sur le système de fichiers (par défaut dans ui/conf/certs ou dans le chemin configuré dans zabbix.conf.php) et l'interface web ne stockera pas les certificats dans la base de données. Notez que si $SSO['CERT_STORAGE'] n'est pas défini ou est commenté, le stockage dans des fichiers est supposé et les certificats sont lus depuis ui/conf/certs.

Il est également nécessaire de configurer le mappage des groupes d'utilisateurs. Le mappage des médias est facultatif.

3. Cliquez sur le bouton Update pour enregistrer ces paramètres.

Provisionnement des utilisateurs SCIM

1. Sur la page de votre application Entra ID, ouvrez la page Provisioning depuis le menu principal. Cliquez sur Get started, puis sélectionnez le mode de provisionnement automatique :

  • Dans Tenant URL, définissez la valeur suivante : https://<path-to-zabbix-ui>/api_scim.php
  • Dans Secret token, saisissez un jeton d'API Zabbix avec des permissions de Super admin.
  • Cliquez sur Test connection pour vérifier si la connexion est établie.

2. Vous pouvez maintenant ajouter tous les attributs qui seront transmis avec SCIM à Zabbix. Pour cela, cliquez sur Mappings, puis sur Provision Microsoft Entra ID Users.

En bas de la liste Attribute Mapping, activez Show advanced options, puis cliquez sur Edit attribute list for customappsso.

En bas de la liste des attributs, ajoutez vos propres attributs avec le type 'String' :

Enregistrez la liste.

3. Vous pouvez maintenant ajouter des mappages pour les attributs ajoutés. En bas de la liste Attribute Mapping, cliquez sur Add New Mapping et créez les mappages comme indiqué ci-dessous :

Lorsque tous les mappages ont été ajoutés, enregistrez la liste des mappages.

4. Comme prérequis au provisionnement des utilisateurs dans Zabbix, vous devez avoir des utilisateurs et des groupes configurés dans Entra ID.

Pour cela, accédez à Microsoft Entra admin center, puis ajoutez des utilisateurs/groupes dans les pages Users et Groups correspondantes.

5. Une fois les utilisateurs et les groupes créés dans Entra ID, vous pouvez accéder au menu Users and groups de votre application et les ajouter à l'application.

6. Accédez au menu Provisioning de votre application, puis cliquez sur Start provisioning pour provisionner les utilisateurs dans Zabbix.

Notez que la requête PATCH des utilisateurs dans Entra ID ne prend pas en charge les modifications des médias.

Signature des requêtes d'authentification

Il est possible de configurer Entra ID pour valider la signature des requêtes d'authentification signées.

Pour que cela fonctionne, créez des clés publique/privée :

openssl req -x509 -newkey rsa:4096 -keyout /usr/share/zabbix/conf/certs/request-sign.key -out /usr/share/zabbix/conf/certs/request-sign.pem -sha256 -days 1825 -nodes

Attribuez les permissions :

chown apache /usr/share/zabbix/conf/certs/request-sign.key 
chmod 400 /usr/share/zabbix/conf/certs/request-sign.key

Mettez à jour la configuration du frontend Zabbix en ajoutant :

$SSO['SP_KEY'] = 'conf/certs/request-sign.key';
$SSO['SP_CERT'] = 'conf/certs/request-sign.crt';

Dépannage

Des problèmes d'authentification peuvent survenir avec les navigateurs MicroSoft Edge lorsqu'un utilisateur, essayant de se connecter à Zabbix via SAML, est déjà connecté avec le profil MicroSoft Edge. Un signe de ce problème est que l'utilisateur peut être en mesure de se connecter à Zabbix en utilisant MicroSoft Edge en mode privé.

Pour éviter les problèmes d'authentification dans ce cas, il peut être nécessaire de définir requestedAuthnContext sur "false" dans le fichier de configuration du frontend Zabbix (zabbix.conf.php).

$SSO['SETTINGS'] = [
    'security' => [
        'requestedAuthnContext' => false
    ]
];