Zabbix + Indeed Identity Provider (SAML)
Автор Denis Shelamov, Last modified by Denis Shelamov на 11 марта 2024 10:50 AM

Настройка Zabbix + Indeed IDP (SAML)

Предварительные требования:

  • Установленный и настроенный Zabbix.
  • Установленные сертификаты для https подключения на Indeed IdP и Zabbix.
  • Выданные DNS имена
    Zabbix: zabbix.indeed.local
    Indeed IdP: indeedam.indeed.local

Примечание: В Zabbix используется пользовательский атрибут, для передачи формата логина: Username attribute (Custom Attribute).
В примере используется уникальные имена атрибутов:
1. Zabbix_Custom_Attibute_UPN
Значение формата имени UPN, вида username@indeed.local (со стороны IDP: PrincipalName).
2. Zabbix_Custom_Attibute_Name
Значение формата имени Name, вида username (со стороны IDP: Name).

Настройка IDP (Indeed AM)

В конфигурационном файле C:\inetpub\wwwroot\am\idp\app-settings.json в секцию LoginFormats, добавляем:

 {
        "ServiceProvider": "zabbix",
        "InLoginFormat": "Name",
        "OutLoginFormat": "PrincipalName"
      }



В секцию CustomAttributes, добавляем:

{
        "ServiceProvider": "zabbix",
        "Attributes": [
          {
            "Name": "Zabbix_Custom_Attibute_UPN",
            "UserNameFormat": "PrincipalName"
          },
          {
            "Name": "Zabbix_Custom_Attibute_Name",
            "UserNameFormat": "Name"
          }
        ]
      }

 

В секции SAML, в PartnerServiceProvider добавляем:

{

            "Name": "zabbix",
"AssertionConsumerServiceUrl": "https://zabbix.indeed.local/index_sso.php?acs",
            "SingleLogoutServiceUrl": "https://zabbix.indeed.local/index_sso.php?sls",
            "SignAssertion": false,
"WantAuthnRequestSigned": false,
            "SignSamlResponse": true,
"SignLogoutRequest": false,
            "SignLogoutResponse": false,
"WantLogoutRequestSigned": false,
            "WantLogoutResponseSigned": false,
"EncryptAssertion": false,
            "PartnerCertificates": [
              {
                "Thumbprint": "0f9ebc2d1490640447a70410019e20b8198975e1"
              }
            ]
          }


Указываем валидный DNS адрес сервера zabbix.
AssertionConsumerServiceUrl - URL, на который будут перенаправлены пользователи при входе в систему.
Утверждение Потребителя URL (AssertionConsumerServiceUrl) должно быть установлено в <путь_к_веб-интерфейсу_zabbix>/index_sso.php?acs

SingleLogoutServiceUrl  - URL на который будут перенаправлены пользователи при выходе из системы. Если это поле оставить пустым, служба SLO использоваться не будет
Единый URL-адрес выхода (SingleLogoutServiceUrl) должен быть установлен в <путь_к_веб-интерфейсу_zabbix>/index_sso.php?sls

Примеры <пути_к_веб-интерфейсу_zabbix>: %% https://zabbix.indeed.local/zabbix/ui, http://zabbix.indeed.local/zabbix

В параметре “Thumbprint” указываем отпечаток сертификата вашего сервера zabbix.

Пример заполненного конфигурационного файла app-settings.json во вложении

Настройка Zabbix


Переходим в Administration > Authentication > SAML settings
Указываем следующие настройки:
IdP entity ID: urn:indeedid:saml_idp

SSO service URL: https://indeedam.indeed.local/am/idp/Account/SsoService
SLO service URL: https://indeedam.indeed.local/am/idp/Account/Logout
Username attribute: Zabbix_Custom_Attibute_UPN
SP entity ID: zabbix

Для использования аутентификации SAML, Zabbix должен быть настроен следующим образом:

Закрытый ключ (private key) и сертификат должны храниться в ui/conf/certs/, если только пользовательские пути не указаны в файле zabbix.conf.php.

По умолчанию, Zabbix будет искать в следующих местах:

  • ui/conf/certs/sp.key — файл закрытого ключа SP
  • ui/conf/certs/sp.crt — файл сертификата SP
  • ui/conf/certs/idp.crt — файл сертификата IDP

В примере, Zabbix развернут на Ubuntu 20.04, пути для размещения сертификатов:
/usr/share/zabbix/conf/certs/sp.key
/usr/share/zabbix/conf/certs/sp.crt
/usr/share/zabbix/conf/certs/idp.crt

Если пути до сертификатов или их названия отличаются, то редактируем:
sudo nano /usr/share/zabbix/conf/zabbix.conf.php

// Used for SAML authentication.
// Uncomment to override the default paths to SP private key, SP and IdP X.509 certificates, and to set extra settings.
$SSO['SP_KEY']                        = 'conf/certs/sp.key';
$SSO['SP_CERT']                       = 'conf/certs/sp.crt';
$SSO['IDP_CERT']              = 'conf/certs/idp.crt';
$SSO['SETTINGS']              = [];

Перезапускаем сервисы:
sudo systemctl restart zabbix-server zabbix-agent apache2


Проверка входа в Zabbix через SAML


Произойдет редирект на страницу Indeed IDP, где необходимо пройти аутентификацию по любому из настроенных/разрешенных метода входа, для примера выбираем PUSH-аутентификацию в приложении Indeed Key:





Успешно заходим в Zabbix, о чем видим соответствующие события в Zabbix и Management Console:

 

При интеграции Zabbix по SAML с ранее используемыми УЗ добавленными по LDAP, может потребоваться перевести атрибут имени пользователя, в формат Name, для сопоставления форматов учетных записей.

Для этого, измените в Zabbix, в разделе Administration > Authentication > SAML settings, на:
Username attribute: Zabbix_Custom_Attibute_Name

Возможные проблемы и их решения

При возникновении ошибки:
You are not logged in
No permissions for system access.
Invalid array settings: idp_cert_or_fingerprint_not_found_and_required

Проверьте, что сертификат IDP добавлен в zabbix и есть необходимые права на чтение.
При необходимости выдаем права:
chmod 644 /usr/share/zabbix/conf/certs/idp.crt


При возникновении ошибки:
You are not logged in
No permissions for system access.
Incorrect user name or password or account is temporarily blocked.


Убедитесь, что целевой пользователь существует в Zabbix в требуемом формате UserPrincipalName или Name и у него есть необходимые права на вход.

Расширенный вариант маппинга атрибутов

При необходимости пробросить атрибут SamAccountName (Данный атрибут по умолчанию не поддерживается со стороны IDP, в текущей версии Indeed AM 8.2.4), в C:\inetpub\wwwroot\am\idp\app-settings.json
в секцию CustomAttributes, добавляем новый блок с MiddleName (который в последствии будет заменен на SamAccountName через adObjectMapRule):

          {
            "Name": "Zabbix_Custom_Attibute_SamAccountName",
            "UserNameFormat": "MiddleName"
          }

Секция CustomAttributes будет выглядеть следующим образом:

"CustomAttributes": [
                   {
        "ServiceProvider": "zabbix",
        "Attributes": [
          {
            "Name": "Zabbix_Custom_Attibute_UPN",
            "UserNameFormat": "PrincipalName"
          },
          {
            "Name": "Zabbix_Custom_Attibute_Name",
            "UserNameFormat": "Name"
          },
          {
            "Name": "Zabbix_Custom_Attibute_SamAccountName",
            "UserNameFormat": "MiddleName"
          }
        ]
                               },

Далее необходимо сделать правки в конфигурационном файле AM Core, для последующего проброса атрибута “MiddleName” к “SamAccountName” из AD в IDP.
В C:\inetpub\wwwroot\am\core\Web.config добавляем:

         <userMapRules>
         <adObjectMapRule attribute="MiddleName" adAttribute="sAMAccountName"/>
            <objectTypeSettings>
              <objectSetting category="person" class="user" />
            </objectTypeSettings>
          </userMapRules>

 

Список всех поддерживаемых имен атрибутов Indeed AM:

        ObjectGUID,
        Name,
        CanonicalName,
        PrincipalName,
        SamCompatibleName,
        DistinguishedName,
        Sid,
        FirstName,
        MiddleName,
        LastName,
        Email,
        Phone

 

Меняем в настройках аутентификации Zabbix в разделе Administration > Authentication > SAML settings кастомный атрибут:
Zabbix_Custom_Attibute_SamAccountName



Проверяем вход в Zabbix по SAML аутентификации.

Включение дополнительной проверки подписей и шифрования.

На стороне Indeed IDP, в секции "PartnerServiceProvider" включаем следующие параметры:

{

"Name": "zabbix",

"AssertionConsumerServiceUrl": "https://zabbix.indeed.local/index_sso.php?acs",

"SingleLogoutServiceUrl": "https://zabbix.indeed.local/index_sso.php?sls",

"SignAssertion": true,

"WantAuthnRequestSigned": true,

"SignSamlResponse": true,

"SignLogoutRequest": true,

"SignLogoutResponse": true,

"WantLogoutRequestSigned": true,

"WantLogoutResponseSigned": true,

"EncryptAssertion": true,

"PartnerCertificates": [

              {

                "Thumbprint": "0f9ebc2d1490640447a70410019e20b8198975e1"

              }

            ]

          }

 

На стороне Zabbix:

Убедитесь, что добавлены сертификаты в хранилище Zabbix:
/usr/share/zabbix/conf/certs/sp.key
/usr/share/zabbix/conf/certs/sp.crt

Выдаем права web-серверу на чтение ключа сертификата sp.key для группы www-data
sudo chown -R :www-data /usr/share/zabbix/conf/certs/sp.key
sudo chmod 750 /usr/share/zabbix/conf/certs/sp.key


Выдаем права на чтение для всех, для открытой части сертификата sp.crt
chmod 744 /usr/share/zabbix/conf/certs/sp.crt

Переходим в Administration > Authentication > SAML settings
Указываем следующие настройки:


Проверяем успешную аутентификацию в Zabbix по SAML, с включенной дополнительной проверкой подписей и шифрования.



Вложения 
 
 app-settings.json (7.39 кБ)
(1 голос(а))
Эта статья полезна
Эта статья бесполезна

Комментарии (0)
Добавить новый комментарий
 
 
Полное имя:
Email:
Комментарии: