SAML

Vue d'ensemble

L'authentification SAML 2.0 peut être utilisée pour se connecter à Zabbix.

Si la connexion SAML est configurée sans provisionnement JIT des utilisateurs, l'utilisateur doit déjà exister dans Zabbix ; le mot de passe Zabbix de l'utilisateur n'est pas utilisé pour l'authentification. Après une authentification SAML réussie, Zabbix associe l'attribut de nom d'utilisateur reçu de SAML à un nom d'utilisateur Zabbix local existant.

Provisionnement des utilisateurs

Il est possible de configurer le provisionnement JIT (just-in-time) des utilisateurs SAML. 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.

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

En plus du provisionnement JIT, il est également possible d'activer et de configurer le provisionnement SCIM (System for Cross-domain Identity Management) - une gestion continue des comptes utilisateurs pour les utilisateurs créés par le provisionnement des utilisateurs. Le provisionnement SCIM nécessite un jeton d'API Zabbix (avec des autorisations Super admin) pour l'authentification dans Zabbix.

Par exemple, si un utilisateur est déplacé d'un groupe SAML à un autre, l'utilisateur sera également déplacé d'un groupe à un autre dans Zabbix ; si un utilisateur est supprimé d'un groupe SAML, 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.

Si SCIM est activé et configuré, un utilisateur SAML sera provisionné au moment où il se connecte à Zabbix et sera mis à jour en continu en fonction des changements dans SAML. Les utilisateurs SAML déjà existants ne seront pas provisionnés, et seuls les utilisateurs provisionnés seront mis à jour. Notez que seuls les médias valides seront ajoutés à un utilisateur lorsque celui-ci est provisionné ou mis à jour.

Si SCIM n'est pas activé, un utilisateur SAML sera provisionné (puis mis à jour ultérieurement) au moment où il se connecte à Zabbix.

Si l'authentification SAML est activée, les utilisateurs pourront choisir entre une connexion locale ou via l'authentification unique SAML. Si le provisionnement JIT est utilisé, seule l'authentification unique est possible.

Configuration du fournisseur d'identité

Afin de fonctionner avec Zabbix, un fournisseur d'identité SAML (onelogin.com, auth0.com, okta.com, etc.) doit être configuré de la manière suivante :

  • Assertion Consumer URL doit être définie sur <path_to_zabbix_ui>/index_sso.php?acs
  • Single Logout URL doit être définie sur <path_to_zabbix_ui>/index_sso.php?sls

Exemples de <path_to_zabbix_ui> : https://example.com/zabbix/ui, http://another.example.com/zabbix, http://<any_public_ip_address>/zabbix

Configuration de Zabbix

Il est nécessaire d'installer php-openssl si vous souhaitez utiliser l'authentification SAML dans l'interface.

Pour utiliser l'authentification SAML, Zabbix doit être configuré comme suit :

1. Fournissez la clé privée et les certificats du SP. Un certificat IdP doit être fourni (collez-le ou sélectionnez un fichier) pour activer SAML via l'interface. Un certificat SP et une clé privée SP doivent être fournis si les options Signer ou Chiffrer sont sélectionnées.

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

Si $SSO['CERT_STORAGE'] = 'file' est défini dans le fichier de configuration, le certificat doit être disponible sur le système de fichiers (par défaut dans ui/conf/certs ou dans le chemin configuré dans le fichier de configuration) 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 utilisé.

Par défaut, Zabbix recherchera les fichiers aux emplacements suivants :

  • ui/conf/certs/sp.key - fichier de clé privée SP
  • ui/conf/certs/sp.crt - fichier de certificat SP
  • ui/conf/certs/idp.crt - fichier de certificat IdP

Les certificats et les clés peuvent être importés via l'interface en collant le texte ou en téléversant des fichiers. Bien que les importations non chiffrées soient autorisées pour des raisons pratiques dans certains environnements, l'utilisation d'un transport chiffré est fortement recommandée (par exemple, activez HTTPS/TLS pour l'interface Zabbix). Lorsque les certificats/clés SAML sont stockés dans la base de données, activez TLS/SSL pour les connexions à la base de données afin de protéger le trafic entre l'application et la base de données.
Chiffrez les sauvegardes de la base de données susceptibles de contenir des certificats SAML ou des clés privées, et limitez l'accès aux fichiers de sauvegarde ainsi qu'aux tables de la base de données qui stockent les éléments SAML. Limitez les privilèges de l'utilisateur de la base de données au minimum nécessaire.

2. Tous les paramètres les plus importants peuvent être configurés dans l'interface Zabbix. Cependant, il est possible de spécifier des paramètres supplémentaires dans le fichier de configuration.

Paramètres de configuration disponibles dans l'interface Zabbix :

Paramètre Description
Activer l'authentification SAML Cochez la case pour activer l'authentification SAML.
Activer le provisionnement JIT Cochez la case pour activer le provisionnement JIT des utilisateurs.
ID d'entité de l'IDP Identifiant d'entité unique au sein du fournisseur d'identité SAML.
URL du service SSO URL vers laquelle les utilisateurs seront redirigés lors de la connexion.
URL du service SLO URL vers laquelle les utilisateurs seront redirigés lors de la déconnexion. Si elle est laissée vide, le service SLO ne sera pas utilisé.
Attribut du nom d'utilisateur Attribut SAML à utiliser comme nom d'utilisateur lors de la connexion à Zabbix.
La liste des valeurs prises en charge est déterminée par le fournisseur d'identité.

Exemples :
uid
userprincipalname
samaccountname
username
userusername
urn:oid:0.9.2342.19200300.100.1.1
urn:oid:1.3.6.1.4.1.5923.1.1.1.13
urn:oid:0.9.2342.19200300.100.1.44
ID d'entité du SP Identifiant unique du fournisseur de services (s'il ne correspond pas, l'opération sera rejetée).
Il est possible de spécifier une URL ou toute chaîne de données.
Format de l'ID de nom du SP Demande un format d'ID de nom particulier dans la réponse.

Exemples :
urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified
urn:oasis:names:tc:SAML:2.0:nameid-format:transient
Certificat IdP Contenu du certificat du fournisseur de services (SP) pour la configuration du service d'authentification unique (SSO) SAML.
Clé privée SP Contenu de la clé privée du fournisseur de services (SP) pour la configuration du service d'authentification unique (SSO) SAML. Elle fournit une authentification sécurisée et un échange de données avec le fournisseur d'identité (IdP).
Certificat SP Contenu du certificat du fournisseur de services (SP) pour la configuration du service d'authentification unique (SSO) SAML.
Signer Cochez les cases pour sélectionner les entités pour lesquelles la signature SAML doit être activée :
Messages
Assertions
Requêtes d'authentification
Requêtes de déconnexion
Réponses de déconnexion
Chiffrer Cochez les cases pour sélectionner les entités pour lesquelles le chiffrement SAML doit être activé :
ID de nom
Assertions
Connexion sensible à la casse Décochez la case pour désactiver la sensibilité à la casse lors de la connexion avec 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 ».
Notez que si la sensibilité à la casse est désactivée et que plusieurs utilisateurs Zabbix ont 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 : « Échec de l'authentification : les identifiants fournis ne sont pas uniques. »
Configurer le provisionnement JIT Cochez cette case pour afficher les options liées au provisionnement JIT des utilisateurs.
Attribut du nom du groupe Spécifiez l'attribut du nom du groupe pour le provisionnement JIT des utilisateurs.
Attribut du nom de l'utilisateur Spécifiez l'attribut du nom de l'utilisateur pour le provisionnement JIT des utilisateurs.
Attribut du nom de famille de l'utilisateur Spécifiez l'attribut du nom de famille de l'utilisateur pour le provisionnement JIT des utilisateurs.
Mappage des groupes d'utilisateurs Mappez un modèle de groupe d'utilisateurs SAML à un groupe d'utilisateurs et à un rôle d'utilisateur Zabbix.
Cela 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 SAML prend en charge les caractères génériques. Le nom du groupe doit correspondre à un groupe existant.
Si un utilisateur SAML correspond à plusieurs groupes d'utilisateurs Zabbix, il devient membre de chacun d'eux.
Si un utilisateur correspond à plusieurs rôles d'utilisateur Zabbix, il obtient le niveau d'autorisation le plus élevé parmi ces rôles.
Mappage des types de média Mappez les attributs de média SAML de l'utilisateur (par exemple, l'adresse e-mail) aux médias de l'utilisateur Zabbix pour l'envoi de notifications.
Activer le provisionnement SCIM Cochez cette case pour activer le provisionnement SCIM 2.0.

Consultez les exemples de configuration des fournisseurs d'identité SAML pour la connexion et le provisionnement des utilisateurs dans Zabbix avec :

Remarques sur le provisionnement SCIM

Pour le provisionnement SCIM, indiquez le chemin vers l’interface Zabbix et ajoutez api_scim.php à celui-ci, du côté du fournisseur d’identité, c’est-à-dire :

https://<path-to-zabbix-ui>/api_scim.php

Les attributs utilisateur utilisés dans Zabbix (nom d’utilisateur, prénom, nom de famille et attributs de média) doivent être ajoutés en tant qu’attributs personnalisés et, si nécessaire, l’espace de noms externe doit être identique au schéma utilisateur : urn:ietf:params:scim:schemas:core:2.0:User.

Paramètres avancés

Des paramètres SAML supplémentaires peuvent être configurés dans le fichier de configuration de l'interface Zabbix (zabbix.conf.php) :

Exemples de configuration

Exemple 1 : Connexion à une instance Zabbix avec un équilibreur de charge utilisant TLS/SSL

Si un équilibreur de charge est utilisé pour se connecter à une instance Zabbix et que l'équilibreur de charge utilise TLS/SSL alors que Zabbix ne l'utilise pas, spécifiez les paramètres baseurl, strict et use_proxy_headers comme suit :

$SSO['SETTINGS'] = [
    'strict' => false,
    'baseurl' => 'https://zabbix.example.com/zabbix/',
    'use_proxy_headers' => true
];

Exemple 2 : Configuration d'algorithmes personnalisés de signature et de condensat SAML

$SSO['SETTINGS'] = [
    'security' => [
        'signatureAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha384'
        'digestAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#sha384',
        // ...
    ],
    // ...
];

Exemple 3 : Configuration du SSO avec authentification Kerberos à l'aide d'ADFS

$SSO['SETTINGS'] = [
    'security' => [
        'requestedAuthnContext' => [
            'urn:oasis:names:tc:SAML:2.0:ac:classes:Kerberos',
        ],
        'requestedAuthnContextComparison' => 'exact'
    ]
]; 

Dans ce cas, dans le champ SP name ID de la configuration SAML, définissez :

urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified