3 SAML
Pārskats
SAML 2.0 autentifikāciju var izmantot, lai pierakstītos Zabbix.
Ja ir konfigurēta tikai SAML pierakstīšanās, tad lietotājam arī jāeksistē Zabbix, tomēr tā Zabbix parole netiks izmantota. Ja autentifikācija ir veiksmīga, tad Zabbix salīdzinās lokālo lietotājvārdu ar lietotājvārda atribūtu, ko atgriež SAML.
Lietotāju nodrošināšana
Ir iespējams konfigurēt JIT (just-in-time) lietotāju nodrošināšanu SAML lietotājiem. Šajā gadījumā nav nepieciešams, lai lietotājs jau eksistētu Zabbix. Lietotāja kontu var izveidot, kad lietotājs pirmo reizi piesakās Zabbix.
Ja JIT nodrošināšana ir iespējota, cilnē Authentication ir jānorāda lietotāju grupa atnodrošinātajiem lietotājiem.
Papildus JIT nodrošināšanai ir iespējams arī iespējot un konfigurēt SCIM (System for Cross-domain Identity Management) nodrošināšanu — nepārtrauktu lietotāju kontu pārvaldību tiem lietotājiem, kuri ir izveidoti ar lietotāju nodrošināšanu. SCIM nodrošināšanai ir nepieciešams Zabbix API token (ar Super admin atļaujām) autentifikācijai Zabbix.
Piemēram, ja lietotājs tiek pārvietots no vienas SAML grupas uz citu, lietotājs tiks pārvietots arī no vienas grupas uz citu Zabbix; ja lietotājs tiek noņemts no SAML grupas, lietotājs tiks noņemts arī no grupas Zabbix un, ja tas nepieder nevienai citai grupai, pievienots lietotāju grupai atnodrošinātajiem lietotājiem.
Ja SCIM ir iespējots un konfigurēts, SAML lietotājs tiks nodrošināts brīdī, kad lietotājs piesakās Zabbix, un pēc tam nepārtraukti atjaunināts, pamatojoties uz izmaiņām SAML. Jau esošie SAML lietotāji netiks nodrošināti, un tiks atjaunināti tikai nodrošinātie lietotāji. Ņemiet vērā, ka lietotājam tiks pievienoti tikai derīgi mediji, kad lietotājs tiks nodrošināts vai atjaunināts.
Ja SCIM nav iespējots, SAML lietotājs tiks nodrošināts (un vēlāk atjaunināts) brīdī, kad lietotājs piesakās Zabbix.
Ja SAML autentifikācija ir iespējota, lietotāji varēs izvēlēties starp lokālu pieteikšanos vai SAML vienoto pierakstīšanos. Ja tiek izmantota JIT nodrošināšana, tad ir iespējama tikai vienotā pierakstīšanās.
Identitātes nodrošinātāja iestatīšana
Lai strādātu ar Zabbix, SAML identitātes nodrošinātājs (onelogin.com, auth0.com, okta.com u.c.) ir jākonfigurē šādi:
- Assertion Consumer URL jāiestata uz
<path_to_zabbix_ui>/index_sso.php?acs - Single Logout URL jāiestata uz
<path_to_zabbix_ui>/index_sso.php?sls
<path_to_zabbix_ui> piemēri: https://example.com/zabbix/ui,
http://another.example.com/zabbix, http://<any_public_ip_address>/zabbix
Zabbix iestatīšana
Ja vēlaties izmantot SAML autentifikāciju lietotāja saskarnē, ir jāinstalē php-openssl.
Lai izmantotu SAML autentifikāciju, Zabbix jākonfigurē šādi:
1. Nodrošiniet SP privāto atslēgu un sertifikātus. Lai aktivizētu SAML, izmantojot lietotāja saskarni, ir jānorāda IdP sertifikāts (ielīmējot vai izvēloties failu). Ja ir atlasītas opcijas Sign vai Encrypt, ir jānorāda SP sertifikāts un SP privātā atslēga.
Ja zabbix.conf.php ir iestatīts $SSO['CERT_STORAGE'] = 'database', SAML konfigurēšanas laikā lietotāja saskarnē varat ielīmēt sertifikāta tekstu vai augšupielādēt sertifikāta failu — faili failu sistēmā nav nepieciešami.
Ja zabbix.conf.php ir iestatīts $SSO['CERT_STORAGE'] = 'file', sertifikātam jābūt pieejamam failu sistēmā (pēc noklusējuma mapē ui/conf/certs vai ceļā, kas konfigurēts zabbix.conf.php), un lietotāja saskarne nesaglabās sertifikātus datubāzē.
Ņemiet vērā, ka, ja $SSO['CERT_STORAGE'] nav iestatīts vai ir aizkomentēts, tiek pieņemts, ka tiek izmantota glabāšana failos.
Pēc noklusējuma Zabbix meklēs šādās vietās:
- ui/conf/certs/sp.key - SP privātās atslēgas fails
- ui/conf/certs/sp.crt - SP sertifikāta fails
- ui/conf/certs/idp.crt - IDP sertifikāta fails
Sertifikātu materiālu var importēt, izmantojot lietotāja saskarni, ielīmējot tekstu vai augšupielādējot failus.
Lai gan nešifrēts imports dažās vidēs ērtības labad ir atļauts, ir stingri ieteicams izmantot šifrētu pārraidi (piemēram, iespējot HTTPS/TLS Zabbix lietotāja saskarnei).
Ja SAML sertifikāti/atslēgas tiek glabāti datubāzē, iespējojiet TLS/SSL datubāzes savienojumiem, lai aizsargātu datplūsmu starp lietotni un datubāzi.
Šifrējiet datubāzes dublējumkopijas, kas var saturēt SAML sertifikātus vai privātās atslēgas, un ierobežojiet piekļuvi dublējumkopiju failiem un datubāzes tabulām, kurās tiek glabāts SAML materiāls.
Ierobežojiet datubāzes lietotāja privilēģijas līdz nepieciešamajam minimumam.
2. Visus svarīgākos iestatījumus var konfigurēt Zabbix lietotāja saskarnē. Tomēr ir iespējams norādīt arī papildu iestatījumus konfigurācijas failā.

Konfigurācijas parametri, kas pieejami Zabbix lietotāja saskarnē:
| Parameter | Description |
|---|---|
| Enable SAML authentication | Atzīmējiet izvēles rūtiņu, lai iespējotu SAML autentifikāciju. |
| Enable JIT provisioning | Atzīmējiet izvēles rūtiņu, lai iespējotu JIT lietotāju nodrošināšanu. |
| IDP entity ID | Unikālais entītijas identifikators SAML identitātes nodrošinātājā. |
| SSO service URL | URL, uz kuru lietotāji tiks novirzīti, piesakoties sistēmā. |
| SLO service URL | URL, uz kuru lietotāji tiks novirzīti, izrakstoties no sistēmas. Ja tas ir atstāts tukšs, SLO pakalpojums netiks izmantots. |
| Username attribute | SAML atribūts, kas tiks izmantots kā lietotājvārds, piesakoties Zabbix. Atbalstīto vērtību sarakstu nosaka identitātes nodrošinātājs. Piemēri: 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 |
| SP entity ID | Unikālais pakalpojuma nodrošinātāja identifikators (ja tas nesakrīt, darbība tiks noraidīta). Ir iespējams norādīt URL vai jebkuru datu virkni. |
| SP name ID format | Pieprasīt atbildē noteiktu name ID formātu. Piemēri: 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 |
| IdP certificate | Pakalpojuma nodrošinātāja (SP) sertifikāta saturs SAML vienotās pierakstīšanās (SSO) pakalpojuma iestatīšanai. |
| SP private key | Pakalpojuma nodrošinātāja (SP) privātās atslēgas saturs SAML vienotās pierakstīšanās (SSO) pakalpojuma iestatīšanai. Nodrošina drošu autentifikāciju un datu apmaiņu ar identitātes nodrošinātāju (IdP). |
| SP certificate | Pakalpojuma nodrošinātāja (SP) sertifikāta saturs SAML vienotās pierakstīšanās (SSO) pakalpojuma iestatīšanai. |
| Sign | Atzīmējiet izvēles rūtiņas, lai atlasītu entītijas, kurām jāiespējo SAML paraksts: Messages Assertions AuthN requests Logout requests Logout responses |
| Encrypt | Atzīmējiet izvēles rūtiņas, lai atlasītu entītijas, kurām jāiespējo SAML šifrēšana: Name ID Assertions |
| Case-sensitive login | Noņemiet atzīmi no izvēles rūtiņas, lai atspējotu reģistrjutīgu pieteikšanos lietotājvārdiem (pēc noklusējuma iespējota). Atspējojot reģistrjutīgu pieteikšanos, ir iespējams, piemēram, pieteikties kā "admin", pat ja Zabbix lietotājs ir "Admin" vai "ADMIN". Lūdzu, ņemiet vērā, ka, ja reģistrjutīga pieteikšanās ir atspējota un ir vairāki Zabbix lietotāji ar līdzīgiem lietotājvārdiem (piemēram, Admin un admin), šo lietotāju pieteikšanās vienmēr tiks liegta ar šādu kļūdas ziņojumu: "Authentication failed: supplied credentials are not unique." |
| Configure JIT provisioning | Atzīmējiet šo izvēles rūtiņu, lai parādītu opcijas, kas saistītas ar JIT lietotāju nodrošināšanu. |
| Group name attribute | Norādiet grupas nosaukuma atribūtu JIT lietotāju nodrošināšanai. |
| User name attribute | Norādiet lietotāja vārda atribūtu JIT lietotāju nodrošināšanai. |
| User last name attribute | Norādiet lietotāja uzvārda atribūtu JIT lietotāju nodrošināšanai. |
| User group mapping | Kartējiet SAML lietotāju grupas šablonu uz Zabbix lietotāju grupu un lietotāja lomu. Tas ir nepieciešams, lai noteiktu, kuru lietotāju grupu/lomu nodrošinātais lietotājs saņems Zabbix. Noklikšķiniet uz Add, lai pievienotu kartējumu. Lauks SAML group pattern atbalsta aizstājējzīmes. Grupas nosaukumam jāsakrīt ar esošas grupas nosaukumu. Ja SAML lietotājs atbilst vairākām Zabbix lietotāju grupām, lietotājs kļūst par visu šo grupu dalībnieku. Ja lietotājs atbilst vairākām Zabbix lietotāju lomām, lietotājs saņems augstāko atļauju līmeni no tām. |
| Media type mapping | Kartējiet lietotāja SAML mediju atribūtus (piemēram, e-pastu) uz Zabbix lietotāja medijiem paziņojumu sūtīšanai. |
| Enable SCIM provisioning | Atzīmējiet šo izvēles rūtiņu, lai iespējotu SCIM 2.0 nodrošināšanu. |
Skatiet SAML identitātes nodrošinātāju konfigurēšanas piemērus pierakstīšanās un lietotāju nodrošināšanai Zabbix vidē ar:
Piezīmes par SCIM nodrošināšanu
SCIM nodrošināšanai identitātes nodrošinātāja pusē norādiet ceļu uz Zabbix lietotāja saskarne un pievienojiet tam api_scim.php, piemēram:
https://<path-to-zabbix-ui>/api_scim.php
Lietotāja atribūti, kas tiek izmantoti Zabbix (lietotājvārds, lietotāja vārds, lietotāja uzvārds un mediju atribūti), ir jāpievieno kā pielāgoti atribūti, un, ja nepieciešams, ārējai nosaukumvietai jābūt tādai pašai kā lietotāja shēmai: urn:ietf:params:scim:schemas:core:2.0:User.
Papildu iestatījumi
Papildu SAML parametrus var konfigurēt Zabbix lietotāja saskarnes konfigurācijas failā (zabbix.conf.php):
- $SSO['SP_KEY'] = '<ceļš uz SP privātās atslēgas failu>';
- $SSO['SP_CERT'] = '<ceļš uz SP sertifikāta failu>';
- $SSO['IDP_CERT'] = '<ceļš uz IDP sertifikāta failu>';
- $SSO['SETTINGS']
Masīvam $SSO['SETTINGS'] jāatbilst tai pašai struktūrai, ko sagaida SAML PHP Toolkit bibliotēka (iekļauta Zabbix komplektā).
Pilnu pieejamo konfigurācijas opciju aprakstu skatiet oficiālajā bibliotēkas dokumentācijā.
Tikai tālāk norādītās opcijas var iestatīt kā daļu no $SSO['SETTINGS']:
- strict
- baseurl
- compress
- contactPerson
- organization
- sp (tikai šajā sarakstā norādītās opcijas)
- attributeConsumingService
- x509certNew
- idp (tikai šajā sarakstā norādītās opcijas)
- singleLogoutService (tikai viena opcija)
- responseUrl
- certFingerprint
- certFingerprintAlgorithm
- x509certMulti
- singleLogoutService (tikai viena opcija)
- security (tikai šajā sarakstā norādītās opcijas)
- signMetadata
- wantNameId
- requestedAuthnContext
- requestedAuthnContextComparison
- wantXMLValidation
- relaxDestinationValidation
- destinationStrictlyMatches
- rejectUnsolicitedResponsesWithInResponseTo
- signatureAlgorithm
- digestAlgorithm
- lowercaseUrlencoding
Visas pārējās opcijas tiks ņemtas no datubāzes, un tās nevar pārrakstīt. Opcija debug tiks ignorēta.
Papildus tam, ja Zabbix UI atrodas aiz starpniekservera vai slodzes balansētāja, var izmantot pielāgoto opciju use_proxy_headers:
- false (noklusējums) - ignorēt opciju;
- true - izmantot X-Forwarded-* HTTP galvenes bāzes URL izveidei.
Ja savienojumam ar Zabbix instanci tiek izmantots slodzes balansētājs, kur slodzes balansētājs izmanto TLS/SSL, bet Zabbix to neizmanto, jānorāda parametri 'baseurl', 'strict' un 'use_proxy_headers' šādi:
$SSO['SETTINGS'] = [
'strict' => false,
'baseurl' => 'https://zabbix.example.com/zabbix/',
'use_proxy_headers' => true
];
Konfigurācijas piemērs:
$SSO['SETTINGS'] = [
'security' => [
'signatureAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha384'
'digestAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#sha384',
// ...
],
// ...
];
Lietotāja saskarnes konfigurācija ar Kerberos/ADFS
Zabbix lietotāja saskarnes konfigurācijas failu (zabbix.conf.php) var izmantot, lai konfigurētu SSO ar Kerberos autentifikāciju un ADFS:
$SSO['SETTINGS'] = [
'security' => [
'requestedAuthnContext' => [
'urn:oasis:names:tc:SAML:2.0:ac:classes:Kerberos',
],
'requestedAuthnContextComparison' => 'exact'
]
];
Šajā gadījumā SAML konfigurācijas laukā SP name ID iestatiet:
urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified