13 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. Allez sur 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 fournies 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 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 sont 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, alors seul l'attribut email est requis.

Si vous prévoyez d'utiliser une connexion chiffrée, générez les certificats de chiffrement privés et publics, 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 appuyez 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. 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, allez dans les paramètres SAML et renseignez les options de configuration en vous basant sur les instructions de configuration d'Okta :

Champ Zabbix Champ de configuration dans Okta Valeur d'exemple
ID d'entité du IdP Issuer du fournisseur d'identité
URL du service SSO URL de connexion unique du fournisseur d'identité
Attribut du nom d'utilisateur Nom de l'attribut usrEmail
ID d'entité du SP URI d'audience zabbix
Attribut du nom du groupe Nom de l'attribut groups
Attribut du prénom de l'utilisateur Nom de l'attribut user_name
Attribut du nom de famille de l'utilisateur Nom de l'attribut user_lastname

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

2. Téléchargez le certificat fourni dans les instructions de configuration SAML d'Okta dans le dossier ui/conf/certs sous le nom idp.crt.

Attribuez-lui les permissions 644 en exécutant :

chmod 644 idp.crt

3. Si Assertion Encryption a été défini sur "Encrypted" dans Okta, la case à cocher "Assertions" du paramètre Encrypt doit également être cochée dans Zabbix.

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

Provisionnement SCIM

1. Pour activer le provisionnement SCIM, allez dans "General" -> "App Settings" de l'application dans Okta.

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

2. Allez dans l'onglet "Provisioning" pour configurer une connexion SCIM :

  • Dans SCIM connector base URL, indiquez le chemin vers l'interface Zabbix et ajoutez-y 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 jeton API valide avec les droits Super admin

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'affichera.

4. Dans "Provisioning" -> "To App", assurez-vous de cocher les cases suivantes :

  • Create Users
  • Update User Attributes
  • Deactivate Users

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

5. Assurez-vous que tous les attributs définis dans SAML sont 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 de 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. Allez dans "Provisioning" -> "To App" -> "Attribute Mappings" de votre application. Cliquez sur Show Unmapped Attributes en bas de page. Les attributs nouvellement ajoutés apparaissent.

7. Mappez chaque attribut ajouté.

8. Ajoutez des utilisateurs dans l'onglet "Assignments". Les utilisateurs doivent d'abord être 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 correspondance des groupes d'utilisateurs dans les paramètres SAML de Zabbix doit correspondre à un groupe spécifié ici. S'il n'y a pas de correspondance, l'utilisateur ne peut pas être créé dans Zabbix.

Les informations sur les membres du groupe sont envoyées à chaque modification.