Configuration SAML avec Okta

Cette section fournit des recommandations pour configurer Okta afin d'activer l'authentification SAML 2.0 et le provisionnement des utilisateurs pour Zabbix.

Configuration Okta

1. Accédez à https://developer.okta.com/signup/ et inscrivez-vous/connectez-vous à votre compte.

2. Dans l'interface web Okta, accédez à Applications > Applications.

3. Cliquez sur Create App Integration.

Sélectionnez "SAML 2.0" comme méthode de connexion, puis cliquez sur Next.

4. Dans les paramètres généraux, renseignez le nom de l'application, puis cliquez sur Next.

5. Dans la configuration SAML, saisissez les valeurs indiquées ci-dessous, puis cliquez sur Next.

  • Dans General, ajoutez :

    • Single sign-on URL : http://<your-zabbix-url>/zabbix/index_sso.php?acs
      Notez l'utilisation de "http" et non de "https", afin que le paramètre acs ne soit pas supprimé dans la requête. La case Use this for Recipient URL and Destination URL doit également être cochée.
    • Audience URI (SP Entity ID) : zabbix
      Notez que cette valeur sera utilisée dans l'assertion SAML comme identifiant unique du fournisseur de services (si elle ne correspond pas, l'opération sera rejetée). Il est possible de spécifier une URL ou toute autre chaîne de caractères dans ce champ.
    • Default RelayState :
      Laissez ce champ vide ; si une redirection personnalisée est nécessaire, elle peut être ajoutée dans Zabbix dans les paramètres Users > Users.
    • Renseignez les autres champs selon vos préférences.
  • Dans Attribute Statements/Group Attribute Statements, ajoutez :

Ces déclarations d'attributs sont insérées dans les assertions SAML partagées avec Zabbix.

Les noms d'attributs utilisés ici ne sont que des exemples arbitraires. Vous pouvez utiliser d'autres noms d'attributs ; toutefois, ils doivent correspondre à la valeur du champ respectif dans les paramètres SAML de Zabbix.

Si vous souhaitez configurer la connexion SAML à Zabbix sans provisionnement JIT des utilisateurs, seul l'attribut e-mail est requis.

Si vous prévoyez d'utiliser une connexion chiffrée, générez les certificats de chiffrement privé et public, puis téléversez le certificat public vers Okta. Le formulaire de téléversement du certificat apparaît lorsque Assertion Encryption est défini sur "Encrypted" (cliquez sur Show Advanced Settings pour trouver ce paramètre).

6. Dans l'onglet suivant, sélectionnez "I'm a software vendor. I'd like to integrate my app with Okta" puis cliquez sur Finish.

7. Accédez à l'onglet "Assignments" de l'application nouvellement créée et cliquez sur le bouton Assign, puis sélectionnez Assign to People dans la liste déroulante.

8. Dans la fenêtre contextuelle qui apparaît, attribuez l'application aux personnes qui utiliseront SAML 2.0 pour s'authentifier auprès de Zabbix, puis cliquez sur Save and go back.

9. Téléchargez le certificat IdP. Définissez les permissions 644 sur celui-ci en exécutant :

chmod 644 idp.crt

10. Accédez à l'onglet "Sign On" et cliquez sur le bouton View Setup Instructions.

Les instructions de configuration s'ouvriront dans un nouvel onglet ; laissez cet onglet ouvert pendant la configuration de Zabbix.

Configuration de Zabbix

1. Dans Zabbix, accédez aux paramètres SAML et renseignez les options de configuration en fonction des instructions de configuration d'Okta :

Champ Zabbix Champ de configuration dans Okta Exemple de valeur
ID d'entité IdP Identity Provider Issuer
URL du service SSO Identity Provider Single Sign-On URL
Attribut du nom d'utilisateur Attribute name usrEmail
ID d'entité SP Audience URI zabbix
Attribut du nom du groupe Attribute name groups
Attribut du prénom de l'utilisateur Attribute name user_name
Attribut du nom de famille de l'utilisateur Attribute name user_lastname

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

2. Ajoutez le certificat Base64 fourni dans les instructions de configuration SAML d'Okta.

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 de 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 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 un fichier est utilisé et les certificats sont lus depuis ui/conf/certs.

3. Si Assertion Encryption est défini sur « Encrypted » dans Okta, la case « Assertions » du paramètre Encrypt doit également être cochée dans Zabbix.

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

Provisionnement SCIM

1. Pour activer le provisionnement SCIM, accédez à General > App Settings de l’application dans Okta.

Cochez la case Enable SCIM provisioning. Un nouvel onglet Provisioning apparaît alors.

2. Accédez à l’onglet « Provisioning » pour configurer une connexion SCIM :

  • Dans SCIM connector base URL, indiquez le chemin vers l’interface Zabbix et ajoutez api_scim.php, c’est-à-dire :
    https://<your-zabbix-url>/zabbix/api_scim.php
  • Unique identifier field for users : email
  • Authentication mode : HTTP header
  • Dans Authorization, saisissez un token API valide avec des droits de Super administrateur.

Si vous rencontrez des problèmes d’authentification, consultez Authorization header forwarding.

3. Cliquez sur Test Connector Configuration pour tester la connexion. Si tout est correct, un message de réussite s’affiche.

4. Dans Provisioning > To App, veillez à cocher les cases suivantes :

  • Create Users
  • Update User Attributes
  • Deactivate Users

Cela garantit que ces types de requêtes seront envoyés à Zabbix.

5. Vérifiez que tous les attributs définis dans SAML sont également définis dans SCIM. Vous pouvez accéder à l’éditeur de profil de votre application dans Provisioning > To App, en cliquant sur Go to Profile Editor.

Cliquez sur Add Attribute. Renseignez les valeurs Display name, Variable name et External name avec le nom de l’attribut SAML, par exemple user_name.

External namespace doit être identique au schéma utilisateur : urn:ietf:params:scim:schemas:core:2.0:User

6. Accédez à Provisioning > To App > Attribute Mappings de votre application. Cliquez sur Show Unmapped Attributes en bas de la page. Les attributs nouvellement ajoutés apparaissent.

7. Mappez chaque attribut ajouté.

8. Ajoutez des utilisateurs dans l’onglet « Assignments ». Les utilisateurs doivent auparavant avoir été ajoutés dans Directory > People. Toutes ces affectations seront envoyées sous forme de requêtes à Zabbix.

9. Ajoutez des groupes dans l’onglet « Push Groups ». Le modèle de mappage des groupes d’utilisateurs dans les paramètres SAML de Zabbix doit correspondre à un groupe spécifié ici. En l’absence de correspondance, l’utilisateur ne peut pas être créé dans Zabbix.

Les informations sur les membres des groupes sont envoyées chaque fois qu’une modification est effectuée.