SAML

Pārskats

SAML 2.0 autentifikāciju var izmantot, lai pieteiktos Zabbix.

Ja SAML pieteikšanās ir konfigurēta bez JIT lietotāju nodrošināšanas, lietotājam jau ir jāeksistē Zabbix; lietotāja Zabbix parole autentifikācijai netiek izmantota. Pēc veiksmīgas SAML autentifikācijas Zabbix salīdzina no SAML saņemto lietotājvārda atribūtu ar esošu lokālo Zabbix lietotājvārdu.

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 lietotāja saskarnē vēlaties izmantot SAML autentifikāciju, ir jāinstalē php-openssl.

Lai izmantotu SAML autentifikāciju, Zabbix jākonfigurē šādi:

1. Norādiet 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 to vai izvēloties failu). Ja ir atlasīta opcija Sign vai Encrypt, ir jānorāda SP sertifikāts un SP privātā atslēga.

Ja lietotāja saskarnes konfigurācijas failā (zabbix.conf.php) ir iestatīts $SSO['CERT_STORAGE'] = 'database', SAML konfigurēšanas laikā sertifikāta tekstu var ielīmēt vai sertifikāta failu augšupielādēt lietotāja saskarnē — failu glabāšana failu sistēmā nav nepieciešama.

Ja konfigurācijas failā 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 konfigurācijas failā norādītajā ceļā), un lietotāja saskarne sertifikātus neglabās datubāzē. Ņemiet vērā: ja $SSO['CERT_STORAGE'] nav iestatīts vai ir komentēts, tiek pieņemts, ka tiek izmantota glabāšana failos.

Pēc noklusējuma Zabbix meklēs šajās atrašanā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āta materiālus var importēt, izmantojot lietotāja saskarni, ielīmējot tekstu vai augšupielādējot failus. Lai gan dažās vidēs ērtības labad ir atļauts importēt nešifrētus datus, 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ātas datubāzē, datubāzes savienojumiem iespējojiet TLS/SSL, lai aizsargātu datplūsmu starp lietojumprogrammu un datubāzi.
Šifrējiet datubāzes dublējumkopijas, kurās var būt SAML sertifikāti vai privātās atslēgas, un ierobežojiet piekļuvi dublējumkopiju failiem un datubāzes tabulām, kurās tiek glabāti SAML materiāli. Ierobežojiet datubāzes lietotāja privilēģijas līdz minimumam, kas nepieciešams.

2. Visus svarīgākos iestatījumus var konfigurēt Zabbix lietotāja saskarnē. Tomēr konfigurācijas failā ir iespējams norādīt papildu iestatījumus.

Zabbix lietotāja saskarnē pieejamie konfigurācijas parametri:

Parametrs Apraksts
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 lietotāju nodrošināšanu, izmantojot JIT.
IDP entity ID Unikāls entītijas identifikators SAML identitātes nodrošinātājā.
SSO service URL URL, uz kuru lietotāji tiks novirzīti, piesakoties.
SLO service URL URL, uz kuru lietotāji tiks novirzīti, izrakstoties. Ja lauks ir tukšs, SLO pakalpojums netiks izmantots.
Username attribute SAML atribūts, kas jāizmanto 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āls pakalpojuma nodrošinātāja identifikators (ja tas nesakrīt, darbība tiks noraidīta).
Var norādīt URL vai jebkādu datu virkni.
SP name ID format Pieprasiet konkrētu nosaukuma ID formātu atbildē.

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 pieteikšanās (SSO) pakalpojuma iestatīšanai.
SP private key Pakalpojuma nodrošinātāja (SP) privātās atslēgas saturs SAML vienotās pieteikšanās (SSO) pakalpojuma iestatīšanai. Tā 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 pieteikšanās (SSO) pakalpojuma iestatīšanai.
Sign Noņemiet atzīmi no izvēles rūtiņām, lai atspējotu SAML parakstus attiecīgajām entītijām:
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).
Reģistrjutīgas pieteikšanās atspējošana ļauj, piemēram, pieteikties kā "admin", pat ja Zabbix lietotājs ir "Admin" vai "ADMIN".
Ņemiet vērā: 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), pieteikšanās šiem lietotājiem 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 ar lietotāju nodrošināšanu, izmantojot JIT, saistītās opcijas.
Group name attribute Norādiet grupas nosaukuma atribūtu lietotāju nodrošināšanai, izmantojot JIT.
User name attribute Norādiet lietotāja vārda atribūtu lietotāju nodrošināšanai, izmantojot JIT.
User last name attribute Norādiet lietotāja uzvārda atribūtu lietotāju nodrošināšanai, izmantojot JIT.
User group mapping Kartējiet SAML lietotāju grupas modeli uz Zabbix lietotāju grupu un lietotāja lomu.
Tas ir nepieciešams, lai noteiktu, kuru lietotāju grupu/lomu Zabbix saņems nodrošinātais lietotājs.
Noklikšķiniet uz Add, lai pievienotu kartējumu.
Lauks SAML group pattern atbalsta aizstājējzīmes (skatiet tālāk sniegto piezīmi). Grupas nosaukumam jāsakrīt ar esošu grupu.
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, viņš saņems augstāko no tām pieejamo atļauju līmeni.
Media type mapping Kartējiet lietotāja SAML multivides atribūtus (piemēram, e-pastu) uz Zabbix lietotāja multividi 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.

Laukā SAML group pattern aizstājējzīme * regulārajās izteiksmēs darbojas kā .*, atbilstot nullei vai vairākām rakstzīmēm. Piemēram, modelis *Demo*Admin atbilst gan SAML grupai WebDemoSuperAdmin, gan WebDemoAdmin. Modelim jāatbilst visam grupas nosaukumam, tāpēc Demo*Admin (bez sākumā esošās *) neatbilst nevienai no šīm grupām.

Skatiet piemērus SAML identitātes nodrošinātāju konfigurēšanai pieteikšanās un lietotāju nodrošināšanas vajadzībām Zabbix, izmantojot:

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 saskarni un pievienojiet tam api_scim.php, proti:

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

Lietotāju atribūti, kas tiek izmantoti Zabbix (lietotājvārds, lietotāja vārds, lietotāja uzvārds un multivides 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):

Konfigurācijas piemēri
  1. piemērs: Savienojuma izveide ar Zabbix instanci, izmantojot slodzes balansētāju ar TLS/SSL

Ja savienojuma izveidei ar Zabbix instanci tiek izmantots slodzes balansētājs un slodzes balansētājs izmanto TLS/SSL, bet Zabbix to neizmanto, norādiet parametrus baseurl, strict un use_proxy_headers šādi:

$SSO['SETTINGS'] = [
    'strict' => false,
    'baseurl' => 'https://zabbix.example.com/zabbix/',
    'use_proxy_headers' => true
];
  1. piemērs: Pielāgotu SAML paraksta un īssavilkuma algoritmu konfigurēšana
$SSO['SETTINGS'] = [
    'security' => [
        'signatureAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha384'
        'digestAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#sha384',
        // ...
    ],
    // ...
];
  1. piemērs: SSO konfigurēšana ar Kerberos autentifikāciju, izmantojot 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