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 -> Enterprise applications -> New application -> Create your own application.
3. Ajoutez le nom de votre application et sélectionnez l'option Integrate any other application.... Ensuite, cliquez sur Create.

Configuration de l'authentification unique
1. Dans la page de votre application, allez à Configurer l'authentification unique et cliquez sur Commencer. 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 de 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. Différents noms d'attributs peuvent être utilisés, toutefois, ils doivent correspondre à 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 les groupes à Zabbix :

Il est important, dans cette revendication, que les noms des groupes (plutôt que les ID de groupe) soient transmis à Zabbix par l'Source attribute sélectionné. Sinon, le provisionnement 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 de l'interface Zabbix.
Définissez les permissions 644 sur ce fichier 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, allez dans les paramètres SAML et renseignez les options de configuration en fonction de la configuration d'Entra ID :

| Champ Zabbix | Champ de configuration dans Entra ID | Valeur d'exemple |
|---|---|---|
| IdP entity ID | Microsoft Entra identifier | |
| SSO service URL | Login URL | |
| SLO service URL | Logout URL | |
| SP entity ID | Identifier (Entity ID) | |
| Username attribute | Custom attribute (claim) | user_email |
| Group name attribute | Custom attribute (claim) | groups |
| User name attribute | Custom attribute (claim) | user_name |
| User last name attribute | Custom attribute (claim) | 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 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 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 SCIM des utilisateurs
1. Dans 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 API Zabbix avec les permissions 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 via SCIM à Zabbix.
Pour ce faire, cliquez sur Mappings, puis sur Provision Microsoft Entra ID Users.

En bas de la liste Attribute Mapping, सक्रियez 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 :

Une fois tous les mappages ajoutés, enregistrez la liste des mappages.

4. Comme prérequis au provisionnement des utilisateurs dans Zabbix, vous devez avoir configuré des utilisateurs et des groupes dans Entra ID.
Pour ce faire, accédez au 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 aller dans le menu Users and groups de votre application et les ajouter à l'application.
6. Allez dans le menu Provisioning de votre application, puis cliquez sur Start provisioning pour provisionner les utilisateurs vers Zabbix.
Notez que la requête PATCH Users dans Entra ID ne prend pas en charge les changements de média.
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
]
];