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éer 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. Dans la page de votre application, allez dans 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 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, mais 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
Assurez-vous que conf/zabbix.conf.php contient la ligne :
$SSO['IDP_CERT'] = 'conf/certs/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 |
Il est également nécessaire de configurer le mappage des groupes d'utilisateurs. Le mappage des médias est facultatif.
Cliquez sur Update pour enregistrer ces paramètres.
Provisionnement des utilisateurs SCIM
1. Dans la page de votre application Entra ID, ouvrez le menu principal et accédez à la page Provisioning. 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 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 :

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 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 aller dans le 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 vers Zabbix.
Notez que la requête PATCH Users dans Entra ID ne prend pas en charge les modifications en cours 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, en 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 de l'interface Zabbix (zabbix.conf.php).
$SSO['SETTINGS'] = [
'security' => [
'requestedAuthnContext' => false
]
];