3 SAML

Overzicht

SAML 2.0 authenticatie kan worden gebruikt om in te loggen bij Zabbix.

Als alleen SAML-aanmelding is geconfigureerd, moet de gebruiker ook in Zabbix bestaan, echter, het Zabbix-wachtwoord wordt niet gebruikt. Als de authenticatie succesvol is, zal Zabbix de lokale gebruikersnaam afstemmen op de gebruikersnaamattribuut die wordt teruggegeven door SAML.

Gebruikersprovisionering

Het is mogelijk om JIT (just-in-time) gebruikersprovisionering te configureren voor SAML-gebruikers. In dit geval is het niet vereist dat een gebruiker al bestaat in Zabbix. Het gebruikersaccount kan worden aangemaakt wanneer de gebruiker voor de eerste keer inlogt bij Zabbix.

Als JIT-provisionering is ingeschakeld, moet een gebruikersgroep voor gedeactiveerde gebruikers worden opgegeven in het tabblad Authenticatie.

Naast JIT-provisionering is het ook mogelijk om SCIM (System for Cross-domain Identity Management) provisioning in te schakelen en te configureren - continue gebruikersaccountbeheer voor die gebruikers die zijn aangemaakt via gebruikersprovisionering. SCIM-provisionering vereist een Zabbix API-token (met Super admin-rechten) voor authenticatie bij Zabbix.

Bijvoorbeeld, als een gebruiker van de ene SAML-groep naar de andere wordt verplaatst, wordt de gebruiker ook van de ene groep naar de andere verplaatst in Zabbix; als een gebruiker uit een SAML-groep wordt verwijderd, wordt de gebruiker ook uit de groep in Zabbix verwijderd en, als deze niet tot een andere groep behoort, toegevoegd aan de gebruikersgroep voor gedeactiveerde gebruikers.

Als SCIM is ingeschakeld en geconfigureerd, wordt een SAML-gebruiker geprovisioneerd op het moment dat de gebruiker inlogt bij Zabbix en continu bijgewerkt op basis van wijzigingen in SAML. Al bestaande SAML-gebruikers worden niet geprovisioneerd en alleen geprovisioneerde gebruikers worden bijgewerkt. Merk op dat alleen geldige media worden toegevoegd aan een gebruiker wanneer de gebruiker wordt geprovisioneerd of bijgewerkt.

Als SCIM niet is ingeschakeld, wordt een SAML-gebruiker geprovisioneerd (en later bijgewerkt) op het moment dat de gebruiker inlogt bij Zabbix.

Als SAML-authenticatie is ingeschakeld, kunnen gebruikers kiezen tussen lokaal inloggen of inloggen via SAML single sign-on. Als JIT-provisionering wordt gebruikt, is alleen single sign-on mogelijk.

Setting up identity provider

In order to work with Zabbix, a SAML identity provider - (onelogin.com, auth0.com, okta.com, etc.) needs to be configured in the following way:

  • Assertion Consumer URL should be set to <path_to_zabbix_ui>/index_sso.php?acs
  • Single Logout URL should be set to <path_to_zabbix_ui>/index_sso.php?sls

<path_to_zabbix_ui> examples: https://example.com/zabbix/ui, http://another.example.com/zabbix, http://<any_public_ip_address>/zabbix#### Meerdere SAML-identiteitsproviders

Zabbix ondersteunt meerdere SAML-identiteitsproviders. Hiermee kunt u gebruikers toestaan zich aan te melden bij Zabbix met behulp van verschillende identiteitsproviders. U kunt elke identiteitsprovider afzonderlijk configureren en de bijbehorende SAML-metadatabestanden importeren.

Wanneer een gebruiker zich probeert aan te melden bij Zabbix via SAML SSO, wordt de identiteitsprovider bepaald op basis van het doeldomein van de aanvraag. Zabbix vergelijkt het doeldomein met de domeinen die zijn geconfigureerd voor elke identiteitsprovider. Als er een overeenkomst wordt gevonden, wordt de gebruiker doorgestuurd naar de juiste identiteitsprovider voor authenticatie.

Dit biedt flexibiliteit voor het beheren van meerdere SAML-identiteitsproviders in uw Zabbix-implementatie. U kunt bijvoorbeeld één identiteitsprovider configureren voor interne gebruikers en een andere voor externe partners.

Hier zijn de stappen om meerdere SAML-identiteitsproviders in Zabbix in te stellen:

  1. Configureer elke SAML-identiteitsprovider: Ga naar het tabblad SAML 2.0 Authenticatie in de Zabbix-configuratie en configureer elke identiteitsprovider afzonderlijk. Voer de relevante SAML-metadata in voor elke identiteitsprovider.

  2. Importeer de SAML-metadata: Importeer de SAML-metadata voor elke identiteitsprovider. Dit zal Zabbix helpen bij het identificeren van de identiteitsprovider op basis van het doeldomein van de aanvraag.

  3. Test de configuratie: Test elke identiteitsprovider om ervoor te zorgen dat de SAML-authenticatie correct werkt.

  4. Pas de doeldomeinen aan: Voor elke identiteitsprovider moet u het doeldomein definiëren. Dit is het domein waarop de identiteitsprovider moet reageren. Als een gebruiker probeert in te loggen met een e-mailadres dat overeenkomt met een van de geconfigureerde doeldomeinen, wordt de juiste identiteitsprovider geactiveerd.

  5. Test met verschillende doeldomeinen: Test de configuratie met verschillende doeldomeinen om te controleren of de gebruiker naar de juiste identiteitsprovider wordt doorgestuurd.

Met deze aanpak kunt u meerdere SAML-identiteitsproviders integreren in uw Zabbix-implementatie en gebruikers de mogelijkheid bieden om zich aan te melden met behulp van verschillende identiteitsbronnen. Dit is handig voor organisaties die te maken hebben met meerdere externe partners of meerdere interne gebruikersgroepen met verschillende identiteitsproviders.

Instellingen van Zabbix

Het is vereist om php-openssl te installeren als u SAML-authenticatie in de frontend wilt gebruiken.

Om SAML-authenticatie te gebruiken, moet Zabbix als volgt worden geconfigureerd:

  1. De privésleutel en het certificaat moeten worden opgeslagen in de map ui/conf/certs/, tenzij aangepaste paden worden opgegeven in zabbix.conf.php.

Standaard zal Zabbix zoeken in de volgende locaties:

  • ui/conf/certs/sp.key - SP-privésleutelbestand
  • ui/conf/certs/sp.crt - SP-certificaatbestand
  • ui/conf/certs/idp.crt - IDP-certificaatbestand
  1. Alle belangrijke instellingen kunnen worden geconfigureerd in de Zabbix-frontend. Het is echter mogelijk om aanvullende instellingen op te geven in het configuratiebestand.

Configuratieparameters, beschikbaar in de Zabbix-frontend:

Parameter Beschrijving
SAML-authenticatie inschakelen Schakel het selectievakje in om SAML-authenticatie in te schakelen.
JIT-provisionering inschakelen Schakel het selectievakje in om JIT-gebruikersprovisionering in te schakelen.
IDP-entiteit-ID De unieke entiteitsidentificator binnen de SAML-identiteitsprovider.
SSO-service-URL De URL waarnaar gebruikers worden doorgestuurd bij het aanmelden.
SLO-service-URL De URL waarnaar gebruikers worden doorgestuurd bij het afmelden. Als dit leeg wordt gelaten, wordt de SLO-service niet gebruikt.
Gebruikersnaamattribuut SAML-attribuut dat wordt gebruikt als gebruikersnaam bij het aanmelden bij Zabbix.
De lijst met ondersteunde waarden wordt bepaald door de identiteitsprovider.

Voorbeelden:
uid
u,serprincipalname
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
SP-entiteit-ID De unieke serviceprovideridentificator (indien niet overeenkomend, wordt de bewerking afgewezen).
Het is mogelijk om een URL of een willekeurige reeks gegevens op te geven.
SP-naam-ID-indeling Hiermee wordt bepaald welke naam-ID-indeling moet worden gebruikt.

Voorbeelden:
urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
urn:oasis:names:tc:SAML:2.0:nameid-format:transient
urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos
urn:oasis:names:tc:SAML:2.0:nameid-format:entity
Ondertekenen Schakel de selectievakjes in om entiteiten te selecteren waarvoor SAML-ondertekening moet worden ingeschakeld:
Berichten
Beweringen
AuthN-verzoeken
Afmeldverzoeken
Afmeldreacties
Versleutelen Schakel de selectievakjes in om entiteiten te selecteren waarvoor SAML-versleuteling moet worden ingeschakeld:
Naam-ID
Beweringen
Hoofdlettergevoelige aanmelding Schakel het selectievakje in om hoofdlettergevoelige aanmelding in te schakelen (standaard uitgeschakeld) voor gebruikersnamen.
Bijvoorbeeld, schakel hoofdlettergevoelige aanmelding uit en meld u aan met, bijvoorbeeld, 'ADMIN'-gebruiker, zelfs als de Zabbix-gebruiker 'Admin' is.
Let op dat met hoofdlettergevoelige aanmelding uitgeschakeld de aanmelding wordt geweigerd als er meerdere gebruikers bestaan in de Zabbix-database met vergelijkbare gebruikersnamen (bijvoorbeeld Admin, admin).
JIT-provisionering configureren Schakel dit selectievakje in om opties met betrekking tot JIT-gebruikersprovisionering weer te geven.
Naam van groepsattribuut Geef het naam-ID-attribuut op voor JIT-gebruikersprovisionering.
Gebruikersnaamattribuut Geef het attribuut voor de gebruikersnaam op voor JIT-gebruikersprovisionering.
Achternaam attribuut van gebruiker Geef het achternaamattribuut voor JIT-gebruikersprovisionering op.
Groepstoewijzing voor gebruiker Koppel een SAML-gebruikersgroepspatroon aan Zabbix-gebruikersgroep en gebruikersrol.
Dit is nodig om te bepalen in welke gebruikersgroep/rol de geprovisioneerde gebruiker in Zabbix zal komen.
Klik op Toevoegen om een koppeling toe te voegen.
Het veld SAML group pattern ondersteunt wildcards. De groepsnaam moet overeenkomen met een bestaande groep.
Als een SAML-gebruiker overeenkomt met meerdere Zabbix-gebruikersgroepen, wordt de gebruiker lid van al deze groepen.
Als een gebruiker overeenkomt met meerdere Zabbix-gebruikersrollen, krijgt de gebruiker de hoogste toestemmingsniveau onder hen.
Media type toewijzen Koppel de media-attributen van de gebruiker (bijv. e-mail) aan de media van de Zabbix-gebruiker voor het verzenden van meldingen.
SCIM-provisionering inschakelen Schakel dit selectievakje in om SCIM 2.0 provisioning in te schakelen.

Zie voorbeelden van het configureren van SAML-identiteitsproviders voor aanmelding en gebruikersprovisionering in Zabbix met:

Opmerkingen over SCIM-provisionering

Voor SCIM-provisionering moet het pad naar de Zabbix-frontend worden opgegeven en hieraan api_scim.php worden toegevoegd, aan de kant van de identity provider, dus:

https://<uw-zabbix-url>/zabbix/api_scim.php

Gebruikersattributen die in Zabbix worden gebruikt (gebruikersnaam, gebruikersnaam, gebruikersachternaam en mediakentekens) moeten als aangepaste attributen worden toegevoegd en, indien nodig, moet de externe namespace hetzelfde zijn als het gebruikersschema: urn:ietf:params:scim:schemas:core:2.0:User.

To configure advanced SAML settings in Zabbix, you can make modifications to the zabbix.conf.php file. Here are the steps:

  1. Open the zabbix.conf.php file for editing. This file is typically located in the Zabbix frontend directory.

  2. Add or modify the following SAML parameters under the $SSO array:

$SSO['SP_KEY'] = '<path to the SP private key file>';
       $SSO['SP_CERT'] = '<path to the SP cert file>';
       $SSO['IDP_CERT'] = '<path to the IDP cert file>';
       $SSO['SETTINGS'] = [
           'security' => [
               'signatureAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha384',
               'digestAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#sha384',
               // Add more security settings as needed...
           ],
           // Add other SAML settings as needed...
       ];
  1. Customize the SAML parameters as required for your SAML configuration. You can refer to the OneLogin's SAML PHP Toolkit documentation for details on the available SAML configuration options.

  2. Save the zabbix.conf.php file.

  3. After making these changes, you may need to restart your web server or the Zabbix frontend service for the changes to take effect.

Please ensure that you correctly specify the paths to the SP private key, SP cert file, and IDP cert file, and configure other SAML settings as per your SAML identity provider's requirements.

Here's a sample configuration example within the $SSO['SETTINGS'] array:

$SSO['SETTINGS'] = [
           'strict' => false,
           'baseurl' => 'https://your-zabbix-url/zabbix/',
           'compress' => true,
           'security' => [
               'signatureAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha384',
               'digestAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#sha384',
               // Add more security settings as needed...
           ],
           // Add other SAML settings as needed...
       ];

Make sure to adjust the values to match your specific SAML configuration.