14 Configuration SAML avec OneLogin
Vue d’ensemble
Cette section fournit des directives pour configurer l’authentification unique et le provisionnement des utilisateurs dans Zabbix depuis OneLogin à l’aide de l’authentification SAML 2.0.
Configuration OneLogin
Création d'une application
1. Connectez-vous à votre compte sur OneLogin. À des fins de test, vous pouvez créer un compte développeur gratuit dans OneLogin.
2. Dans l'interface web OneLogin, accédez à Applications → Applications.
3. Cliquez sur "Add App" et recherchez l'application appropriée. Les instructions de cette page sont basées sur l'exemple d'application SCIM Provisioner with SAML (SCIM v2 Enterprise, full SAML).
4. Pour commencer, vous pouvez personnaliser le nom d'affichage de votre application. Vous pouvez également ajouter l'icône et les détails de l'application. Ensuite, cliquez sur Save.
Configuration de SSO/SCIM provisioning
1. Dans Configuration -> Détails de l'application, définissez le point de terminaison de connexion unique Zabbix http://<zabbix-instance-url>/zabbix/index_sso.php?acs comme valeur de ces champs :
- ACS (Consumer) URL Validator
- ACS (Consumer) URL
Notez l'utilisation de "http" et non de "https", afin que le paramètre acs ne soit pas supprimé dans la requête.

Il est également possible d'utiliser "https".
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];
Laissez les autres options avec leurs valeurs par défaut.
2. Dans Configuration -> Connexion API, définissez les valeurs suivantes :
- SCIM Base URL :
https://<zabbix-instance-url>/zabbix/api_scim.php - SCIM JSON Template : doit contenir tous les attributs personnalisés que vous souhaitez transmettre à Zabbix via SCIM, tels que
user_name,user_lastname,user_emailetuser_mobile:
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"userName": "{$parameters.scimusername}",
"name": {
"familyName": "{$user.lastname}",
"givenName": "{$user.firstname}"
},
"user_name": "{$user.firstname}",
"user_lastname": "{$user.lastname}",
"user_mobile": "{$user.phone}",
"user_email": "{$user.email}"
}
Les noms des attributs sont arbitraires. Différents noms d'attributs peuvent être utilisés, mais il est nécessaire qu'ils correspondent à la valeur du champ respectif dans les paramètres SAML de Zabbix.
Notez que pour que le provisioning des utilisateurs fonctionne, OneLogin doit recevoir en réponse un attribut 'name' avec 'givenName' et 'familyName', même si cela n'était pas requis par le fournisseur de services. Il est donc nécessaire de le spécifier dans le schéma, dans la partie de configuration de l'application.
- SCIM Bearer Token : saisissez un jeton API Zabbix avec les permissions Super admin.
Cliquez sur Enable pour activer la connexion.

3. Dans la page Provisioning, activez l'option Provisioning :

4. La page Parameters contient une liste de paramètres par défaut :
- Assurez-vous que 'scimusername' correspond à la valeur de connexion utilisateur dans OneLogin (par ex. e-mail) ;
- Cochez l'option Include in User Provisioning pour le paramètre 'Groups' ;
- Cliquez sur "+" pour créer les paramètres personnalisés requis pour les assertions SAML et le provisioning des utilisateurs, tels que
user_name,user_lastname,user_emailetuser_mobile:

Lors de l'ajout d'un paramètre, assurez-vous de cocher à la fois les options Include in SAML assertion et Include in User Provisioning.
- Ajoutez un paramètre 'group' qui correspond aux rôles utilisateur dans OneLogin.
Les rôles utilisateur seront transmis sous forme de chaîne, séparée par un point-virgule
;. Les rôles utilisateur OneLogin seront utilisés pour créer des groupes d'utilisateurs dans Zabbix :

Vérifiez la liste des paramètres :

5. Dans la page Rules, créez des correspondances de rôles utilisateur vers le paramètre Groups par défaut.

Vous pouvez utiliser une expression régulière pour transmettre des rôles spécifiques en tant que groupes.
Les noms de rôles ne doivent pas contenir ;, car OneLogin l'utilise comme séparateur lors de l'envoi d'un attribut comportant plusieurs rôles.
6. Téléchargez le certificat IdP. Définissez les permissions 644 sur celui-ci en exécutant :
chmod 644 idp.crt
Configuration de Zabbix
1. Dans Zabbix, allez dans les paramètres SAML et renseignez les options de configuration en fonction de la configuration OneLogin :

| Champ Zabbix | Champ de configuration dans OneLogin | Valeur d'exemple |
|---|---|---|
| IdP entity ID | Issuer URL (voir l'onglet SSO de votre application dans OneLogin) |
|
| SSO service URL | SAML 2.0 Endpoint (HTTP) (voir l'onglet SSO de votre application dans OneLogin) |
|
| SLO service URL | SLO Endpoint (HTTP) (voir l'onglet SSO de votre application dans OneLogin) |
|
| Username attribute | Custom parameter | user_email |
| Group name attribute | Custom parameter | group |
| User name attribute | Custom parameter | user_name |
| User last name attribute | Custom parameter | 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.
2. Ajoutez le certificat Base64 fourni par OneLogin.
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.
Vous pouvez accéder au téléchargement du certificat dans OneLogin dans Applications -> SSO -> cliquez sur View details sous le certificat actuel.
3. Cliquez sur le bouton Update pour enregistrer ces paramètres.
Provisionnement des utilisateurs SCIM
Avec le provisionnement des utilisateurs activé, il est désormais possible d’ajouter/de mettre à jour des utilisateurs et leurs rôles dans OneLogin et de les provisionner immédiatement dans Zabbix.
Par exemple, vous pouvez créer un nouvel utilisateur :

L’ajouter à un rôle utilisateur et à l’application qui provisionnera l’utilisateur :

Lors de l’enregistrement de l’utilisateur, celui-ci sera provisionné dans Zabbix. Dans Application -> Users, vous pouvez vérifier l’état du provisionnement des utilisateurs actuels de l’application :

Si le provisionnement a réussi, l’utilisateur peut être vu dans la liste des utilisateurs de Zabbix.
