3 SAML

Pārskats

SAML 2.0 autentifikāciju var izmantot, lai pierakstītos Zabbix.

Ja SAML pierakstīšanās ir konfigurēta bez JIT lietotāju nodrošināšanas, lietotājam jau ir jābūt 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

SAML lietotājiem ir iespējams konfigurēt JIT (just-in-time) lietotāju nodrošināšanu. Šādā gadījumā nav nepieciešams, lai lietotājs jau pastāvētu Zabbix. Lietotāja kontu var izveidot brīdī, 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 deprovisioned 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, kas ir izveidoti, izmantojot lietotāju nodrošināšanu. SCIM nodrošināšanai autentifikācijai Zabbix ir nepieciešams Zabbix API token (ar Super admin tiesībām).

Piemēram, ja lietotājs tiek pārvietots no vienas SAML grupas uz citu, lietotājs Zabbix tiks pārvietots arī no vienas grupas uz citu; ja lietotājs tiek noņemts no SAML grupas, lietotājs tiks noņemts arī no grupas Zabbix un, ja nepieder nevienai citai grupai, tiks pievienots lietotāju grupai deprovisioned 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 tiks 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 nodrošināšanas vai atjaunināšanas laikā tiks pievienoti tikai derīgi mediji.

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 vienreizējo pierakstīšanos. Ja tiek izmantota JIT nodrošināšana, tad ir iespējama tikai vienreizējā 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. Privātā atslēga un sertifikāts jāglabā direktorijā ui/conf/certs/, ja vien zabbix.conf.php failā nav norādīti pielāgoti ceļi.

Pēc noklusējuma Zabbix meklēs failus šādā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

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

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

Parametrs Apraksts
Iespējot SAML autentifikāciju Atzīmējiet izvēles rūtiņu, lai iespējotu SAML autentifikāciju.
Iespējot JIT nodrošināšanu Atzīmējiet izvēles rūtiņu, lai iespējotu JIT lietotāju nodrošināšanu.
IDP entītijas ID Unikāls entītijas identifikators SAML identitātes nodrošinātājā.
SSO pakalpojuma URL URL, uz kuru lietotāji tiks novirzīti, piesakoties.
SLO pakalpojuma URL URL, uz kuru lietotāji tiks novirzīti, izrakstoties. Ja lauks ir tukšs, SLO pakalpojums netiks izmantots.
Lietotājvārda atribūts 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 entītijas ID Unikāls pakalpojuma nodrošinātāja identifikators (ja tas nesakrīt, darbība tiks noraidīta).
Var norādīt URL vai jebkuru datu virkni.
SP nosaukuma ID formāts Atbildē pieprasīt noteiktu nosaukuma 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
Parakstīt Noņemiet atzīmi no izvēles rūtiņām, lai atspējotu SAML parakstus attiecīgajām entītijām:
Ziņojumi
Apliecinājumi
AuthN pieprasījumi
Izrakstīšanās pieprasījumi
Izrakstīšanās atbildes
Šifrēt Atzīmējiet izvēles rūtiņas, lai atlasītu entītijas, kurām jāiespējo SAML šifrēšana:
Nosaukuma ID
Apliecinājumi
Reģistrjutīga pieteikšanās Noņemiet atzīmi no izvēles rūtiņas, lai atspējotu lietotājvārdu reģistrjutīgu pieteikšanos (pēc noklusējuma tā ir 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 pastāv 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."
Konfigurēt JIT nodrošināšanu Atzīmējiet šo izvēles rūtiņu, lai parādītu ar JIT lietotāju nodrošināšanu saistītās opcijas.
Grupas nosaukuma atribūts Norādiet grupas nosaukuma atribūtu JIT lietotāju nodrošināšanai.
Lietotāja vārda atribūts Norādiet lietotāja vārda atribūtu JIT lietotāju nodrošināšanai.
Lietotāja uzvārda atribūts Norādiet lietotāja uzvārda atribūtu JIT lietotāju nodrošināšanai.
Lietotāju grupu kartēšana 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 nodrošinātais lietotājs saņems Zabbix.
Noklikšķiniet uz Pievienot, lai pievienotu kartējumu.
Lauks SAML grupas modelis atbalsta aizstājējzīmes. Grupas nosaukumam jāatbilst esošai grupai.
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.
Multivides veidu kartēšana Kartējiet lietotāja SAML multivides atribūtus (piemēram, e-pastu) uz Zabbix lietotāja multivides veidiem paziņojumu sūtīšanai.
Iespējot SCIM nodrošināšanu Atzīmējiet šo izvēles rūtiņu, lai iespējotu SCIM 2.0 nodrošināšanu.

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:

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
  • 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