[comment]: # ({cee0eb99-cee0eb99})
# 3. Аутентификация 
[comment]: # (tags: ldap, saml)

[comment]: # ({/cee0eb99-cee0eb99})

[comment]: # ({9217fb1a-9217fb1a})
### Обзор

В разделе *Администрирование → Аутентификация* можно задать глобальный
метод аутентификации в Zabbix и требования к паролю. Доступны следующие методы аутентификации: внутренний, HTTP, LDAP и SAML.

[comment]: # ({/9217fb1a-9217fb1a})

[comment]: # ({0e754ffa-0e754ffa})
### Аутентификация по умолчанию

По умолчанию Zabbix использует внутреннюю аутентификацию Zabbix для всех пользователей. Можно изменить метод по умолчанию на [LDAP](#аутентификация-ldap)
для всей системы или включить аутентификацию LDAP только для конкретных групп пользователей.

Чтобы установить LDAP в качестве метода аутентификации по умолчанию для всех пользователей, перейдите к вкладке *LDAP* и настройте параметры аутентификации, затем вернитесь на
вкладку *Аутентификация* и установите переключатель *Аутентификация по умолчанию* в положение
LDAP.

Обратите внимание, что метод аутентификации можно точно настроить на уровне [групп пользователей](/manual/config/users_and_usergroups/usergroup). Даже если
глобально настроена аутентификация LDAP, некоторые группы пользователей по-прежнему могут
проходить аутентификацию средствами Zabbix. У этих групп [доступ к веб-интерфейсу](/manual/config/users_and_usergroups/usergroup#настройка) должен быть выставлен как Внутренний. 
И наоборот, если глобально используется внутренняя аутентификация, подробности аутентификации LDAP можно указать и использовать для конкретных групп пользователей, чей [доступ к веб-интерфейсу](/manual/config/users_and_usergroups/usergroup#настройка) настроен как LDAP. Если пользователь входит хотя бы в одну группу пользователей с аутентификацией LDAP, то этот пользователь не сможет использовать метод внутренней аутентификации.

Методы аутентификации [HTTP](#аутентификация-http) и [SAML 2.0](#аутентификация-saml) могут использоваться в дополнение к методам аутентификации по умолчанию.

[comment]: # ({/0e754ffa-0e754ffa})

[comment]: # ({72802abe-d3760aa9})
### Внутренняя аутентификация

Вкладка *Аутентификация* позволяет определить настраиваемые требования к сложности пароля для внутренних пользователей Zabbix.

![](../../../../../assets/en/manual/web_interface/frontend_sections/administration/auth.png)

Можно настроить следующие параметры политики паролей:

|Параметр|Описание|
|--|--------|
|*Минимальная длина пароля*<br>*(Minimum password length)*|По умолчанию минимальная длина пароля установлена на 8. Поддерживаемый диапазон: 1-70. Обратите внимание, что пароли длиннее 72 символов будут усечены.|
|*Пароль должен содержать*<br>*(Password must contain)*|Отметьте один или несколько флажков, чтобы требовать использования в пароле указанных символов:<br>- прописная и строчная латинская буква<br>- цифра<br>- специальный символ<br><br>Наведите указатель мыши на вопросительный знак, чтобы увидеть подсказку со списком символов для каждого варианта.|
|*Избегать легко угадываемых паролей*<br>*(Avoid easy-to-guess passwords)*|Если отмечено, пароль будет проверяться на соответствие следующим требованиям:<br>- не должен содержать имя, фамилию или имя пользователя<br>- не должен быть одним из общеупотребительных или контекстно-зависимых паролей.<br><br>Список общеупотребительных и контекстно-зависимых паролей генерируется автоматически из списка NCSC «100 000 популярных паролей», списка SecList «1 миллион популярных паролей» и списка контекстно-зависимых паролей Zabbix. Внутренним пользователям не будет разрешено устанавливать пароли, включённые в этот список, поскольку такие пароли считаются слабыми из-за их частого использования.|

Изменения в требованиях к сложности пароля не повлияют на существующие
пароли пользователей, но если существующий пользователь решит изменить пароль, то
новый пароль должен соответствовать текущим требованиям. Подсказка со
списком требований будет отображаться рядом с полем *Пароль* в
[профиле пользователя](/manual/web_interface/user_profile) и в [диалоге настройки пользователя](/manual/config/users_and_usergroups/user), доступном
из меню *Администрирование→Пользователи*.

[comment]: # ({/72802abe-d3760aa9})

[comment]: # ({58c69118-096ce00b})
### Аутентификация HTTP

Для проверки имён пользователей и паролей можно использовать аутентификацию на основе HTTP или веб-сервера (например: базовая аутентификация, NTLM/Kerberos). Обратите внимание, что пользователь также должен существовать в Zabbix; однако, его пароль Zabbix не будет использоваться.

::: noteimportant
Будьте осторожны! Перед переключением на аутентификацию веб-сервера убедитесь,
что она настроена и работает правильно.
:::

![](../../../../../assets/en/manual/web_interface/frontend_sections/administration/auth_http.png)

Параметры конфигурации:

|Параметр|Описание|
|--|--------|
|*Активация HTTP аутентификации*<br>*(Enable HTTP authentication)*|Отметьте флажок, чтобы включить аутентификацию HTTP. При наведении указателя мыши на ![](../../../../../assets/en/manual/web_interface/frontend_sections/administration/auth_http_2.png) появится подсказка с предупреждением, что в случае аутентификации веб-сервера все пользователи (даже с [доступом к веб-интерфейсу](/manual/config/users_and_usergroups/usergroup#настройка), установленному в LDAP/внутренний) будут аутентифицироваться веб-сервером, а не сервером Zabbix.|
|*Диалог входа в систему по умолчанию*<br>*(Default login form)*|Укажите, следует ли направлять неаутентифицированных пользователей на:<br>**Диалог входа в систему Zabbix** — стандартную страницу входа Zabbix.<br>**HTTP диалог входа в систему** — страницу входа HTTP.<br>Рекомендуется включать аутентификацию на основе веб-сервера только для страницы `index_http.php`. Если для *Диалога входа в систему по умолчанию* установлено значение «HTTP диалог входа в систему», пользователь будет входить в систему автоматически, если модуль аутентификации веб-сервера установит действительный логин пользователя в переменной `$_SERVER`.<br>Поддерживаемые ключи `$_SERVER`: ` PHP_AUTH_USER`, `REMOTE_USER`, `AUTH_USER`.|
|*Удаление имени домена*<br>*(Remove domain name)*|Список доменных имен через запятую, которые следует удалить из имени пользователя.<br>Например: `comp,any` - если имя пользователя «Admin\@any» или «comp\\Admin», пользователь войдет в систему как «Admin»; если имя пользователя «notacompany\\Admin», вход будет запрещён.|
|*Регистрозависимый вход*<br>*(Case sensitive login)*|Снимите флажок, чтобы отключить для имен пользователей вход с учётом регистра (включённый по умолчанию).<br>Отключение входа с учётом регистра позволяет, например, войти в систему пользователем «admin», даже если пользователем Zabbix является «Admin» или «ADMIN».<br>Обратите внимание, что если вход с учётом регистра отключён и существует несколько Zabbix пользователей с похожими именами пользователей (например, Admin и admin), вход для этих пользователей всегда будет запрещён со следующим сообщением об ошибке: «Authentication failed: supplied credentials are not unique (Аутентификация не удалась: предоставленные учётные данные не уникальны)».|

::: notetip
Для внутренних пользователей, которые не могут войти в систему 
с использованием учётных данных HTTP (с установленным по умолчанию диалогом входа HTTP), что приводит к ошибке 401, вы можете добавить строку «`ErrorDocument 401 /index.php?form=default`» к основным директивам аутентификации, что перенаправит на обычный диалог входа в Zabbix.
:::

[comment]: # ({/58c69118-096ce00b})

[comment]: # ({d3e3a386-b032eddc})
### Аутентификация LDAP

Внешнюю аутентификацию LDAP можно использовать для проверки
имён пользователей и паролей. Обратите внимание, что пользователь
также должен существовать в Zabbix, однако его пароль Zabbix не будет использоваться.

Аутентификация Zabbix LDAP работает как минимум с Microsoft Active Directory и OpenLDAP.

![](../../../../../assets/en/manual/web_interface/frontend_sections/administration/auth_ldap.png)

Параметры конфигурации:

|Параметр|Описание|
|--|--------|
|*Активация LDAP аутентификации*<br>*(Enable LDAP authentication)*|Поставьте флажок, чтобы включить аутентификацию LDAP.|
|*Хост LDAP*<br>*(LDAP host)*|Имя сервера LDAP. Например: ldap://ldap.zabbix.com<br>Для защищённого сервера LDAP используйте протокол *ldaps*.<br>ldaps://ldap.zabbix.com<br>Для OpenLDAP 2.x.x и более поздних версий можно использовать полный URI LDAP в форме ldap://имяхоста:порт или ldaps://имяхоста:порт.|
|*Порт*<br>*(Port)*|Порт сервера LDAP. По умолчанию — 389.<br>Для безопасного подключения LDAP номер порта обычно равен 636.<br>Не используется при использовании полных URI LDAP.|
|*База для поиска (Base DN)*|Базовый путь для поиска учётных записей:<br>ou=Users,ou=system (для OpenLDAP),<br>DC=company,DC=com (для Microsoft Active Directory)|
|*Атрибут поиска*<br>*(Search attribute)*|Атрибут учётной записи LDAP, используемый для поиска:<br>uid (для OpenLDAP),<br>sAMAccountName (для Microsoft Active Directory)|
|*Имя для подключения (Bind DN)*|Учётная запись LDAP для подключения и поиска на сервере LDAP, примеры:<br>uid=ldap\_search,ou=system (для OpenLDAP),<br>CN=ldap\_search,OU=user\_group ,DC=company,DC=com (для Microsoft Active Directory)<br>Анонимное подключение также поддерживается. Обратите внимание, что анонимное подключение  потенциально открывает доступ к конфигурации домена неавторизованным пользователям (информация о пользователях, компьютерах, серверах, группах, службах и т. д.). Из соображений безопасности отключите анонимные подключения на хостах LDAP и используйте вместо этого аутентифицированный доступ.|
|*Регистрозависимый вход*<br>*(Case sensitive login)*|Снимите флажок, чтобы отключить для имен пользователей вход с учётом регистра (включённый по умолчанию).<br>Отключение входа с учётом регистра позволяет, например, войти в систему пользователем «admin», даже если пользователем Zabbix является «Admin» или «ADMIN».<br>Обратите внимание, что если вход с учётом регистра отключён и существует несколько Zabbix пользователей с похожими именами пользователей (например, Admin и admin), вход для этих пользователей всегда будет запрещён со следующим сообщением об ошибке: «Authentication failed: supplied credentials are not unique (Аутентификация не удалась: предоставленные учётные данные не уникальны)».|
|*Пароль подключения (Bind password)*|Пароль LDAP учётной записи для подключения и поиска на сервере LDAP.|
|*Тест аутентификации*<br>*(Test authentication)*|Заголовок секции для тестирования|
|*Вход в систему*<br>*(Login)*|Имя тестового пользователя (который в данный момент зарегистрирован в веб-интерфейсе Zabbix). Это имя пользователя должно существовать на сервере LDAP.<br>Zabbix не будет активировать аутентификацию LDAP, если он не сможет аутентифицировать тестового пользователя.|
|*Пароль пользователя*<br>*(User password)*|Пароль LDAP тестового пользователя.|

::: notewarning
В случае проблем с сертификатами, чтобы обеспечить работу безопасного
соединения LDAP (ldaps), вам может потребоваться добавить строку `TLS_REQCERT allow`
в файл конфигурации `/etc/openldap/ldap.conf`. Это может снизить безопасность
подключения к каталогу LDAP.
:::

::: notetip
Рекомендуется создать отдельную учётную запись LDAP (*Bind DN*) для выполнения подключения и поиска на сервере LDAP
с минимальными привилегиями в LDAP вместо использования учётных записей реальных пользователей (которые подключаются к веб-интерфейсу Zabbix).<br>
Такой подход обеспечивает большую безопасность и не требует изменения *Пароля подключения (Bind password)*, когда пользователь меняет свой пароль на сервере LDAP.<br>
В таблице выше эта учётная запись имеет имя *ldap\_search*.
:::

[comment]: # ({/d3e3a386-b032eddc})

[comment]: # ({cc7ae197-cc7ae197})
### Аутентификация SAML

Для входа в Zabbix можно использовать аутентификацию SAML 2.0.
Обратите внимание, что пользователь должен существовать в Zabbix,
однако его пароль Zabbix не будет использоваться. Если аутентификация
прошла успешно, Zabbix сопоставит локальное имя пользователя с атрибутом
имени пользователя, возвращаемым SAML.

::: noteclassic
Если аутентификация SAML включена, пользователи смогут выбирать между
входом в систему локально или через систему единого входа SAML.
:::

[comment]: # ({/cc7ae197-cc7ae197})

[comment]: # ({2d356342-6700a0b3})
#### Настройка поставщика идентификационных данных

Для работы с Zabbix, поставщика идентификационных данных SAML
([onelogin.com](https://onelogin.com), [auth0.com](https://auth0.com),
[okta.com](https://okta.com) и т.д.) необходимо настроить следующим образом:

-  *Утверждение Потребителя URL (Assertion Consumer URL)* должно быть установлено
   в `<путь_к_веб-интерфейсу_zabbix>/index_sso.php?acs`
-  *Единый URL-адрес выхода (Single Logout URL)* должен быть установлен в
   `<путь_к_веб-интерфейсу_zabbix>/index_sso.php?sls`

Примеры `<пути_к_веб-интерфейсу_zabbix>`: `<https://example.com/zabbix/ui>,<http://another.example.com/zabbix>,<http://><any\_public\_ip\_address>/zabbix`

[comment]: # ({/2d356342-6700a0b3})

[comment]: # ({080e3f17-be70e1a1})
#### Настройка Zabbix

::: noteimportant
Если вы хотите использовать аутентификацию SAML в веб-интерфейсе,
то необходимо установить php-openssl.
:::

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

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

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

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

2\. Все наиболее важные настройки могут быть сделаны через веб-интерфейс Zabbix.
Однако, в [конфигурационном файле](authentication#расширенные-настройки) можно указать дополнительные настройки.

![](../../../../../assets/en/manual/web_interface/frontend_sections/administration/auth_saml.png)

Параметры конфигурации, доступные в веб-интерфейсе Zabbix:

|Параметр|Описание|
|--|--------|
|*Включить SAML аутентификацию*<br>*(Enable SAML authentication)*|Отметьте флажок, чтобы включить аутентификацию SAML.|
|*IDP entity ID*|Уникальный идентификатор поставщика идентификационных данных SAML.|
|*URL единого входа*<br>*(SSO service URL)*|URL, на который будут перенаправлены пользователи при входе в систему.|
|*URL единого выхода*<br>*(SLO Service URL)*|URL, на который будут перенаправлены пользователи при выходе из системы. Если это поле оставить пустым, служба SLO использоваться не будет.|
|*Атрибут имени пользователя*<br>*(Username attribute)*|Атрибут SAML, используемый в качестве имени пользователяпри входе в Zabbix.<br>Список поддерживаемых значений определяется поставщиком идентификационных данных.<br><br>Примеры:<br>uid<br>userprincipalname<br>samaccountname<br>username<br>userusername<br><urn:oid:0.9.2342.19200300.100.1.1><br><urn:oid:1.3.6.1.4.1.5923.1.1.1.13><br><urn:oid:0.9.2342.19200300.100.1.44>|
|*ID объекта SP*<br>*(SP entity ID)*|Уникальный идентификатор поставщика услуг SAML.|
|*Формат ID объекта SP*<br>*(SP name ID format)*|Запросить определённый формат идентификатора имени в ответе.<br><br>Примеры:<br><urn:oasis:names:tc:SAML:2.0:nameid-format:persistent><br><urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified><br><urn:oasis:names:tc:SAML:2.0:nameid-format:transient>|
|*Войти*<br>*(Sign)*|Отметьте флажками объекты, для которых должна быть включена подпись SAML:<br>*Сообщения (Messages)*<br>*Декларации (Assertions)*<br>*Запросы AuthN (AuthN requests)*<br>*Запросы на выход из системы (Logout requests)*<br>*Ответы на выход из системы (Logout responses)*|
|*Шифрование*<br>*(Encrypt)*|Отметьте флажками объекты, для которых должно быть включено шифрование SAML:<br>*Декларации (Assertions)*<br>*ID имени (Name ID)*|
|*Регистрозависимый вход*<br>*(Case sensitive login)*|Снимите флажок, чтобы отключить для имен пользователей вход с учётом регистра (включённый по умолчанию).<br>Отключение входа с учётом регистра позволяет, например, войти в систему пользователем «admin», даже если пользователем Zabbix является «Admin» или «ADMIN».<br>Обратите внимание, что если вход с учётом регистра отключён и существует несколько Zabbix пользователей с похожими именами пользователей (например, Admin и admin), вход для этих пользователей всегда будет запрещён со следующим сообщением об ошибке: «Authentication failed: supplied credentials are not unique (Аутентификация не удалась: предоставленные учётные данные не уникальны)».|

[comment]: # ({/080e3f17-be70e1a1})

[comment]: # ({19c49e31-be372f8e})
##### Расширенные настройки

Дополнительные параметры SAML можно настроить в файле конфигурации веб-интерфейса Zabbix (*zabbix.conf.php*):

-   $SSO\['SP\_KEY'\] = '<путь к файлу закрытого ключа SP>';
-   $SSO\['SP\_CERT'\] = '<путь к файлу сертификата SP>';
-   $SSO\['IDP\_CERT'\] = '<путь к файлу сертификата IDP>';
-   $SSO\['SETTINGS'\]

::: noteclassic
Массив `$SSO['SETTINGS']` должен соответствовать структуре, ожидаемой библиотекой *SAML PHP Toolkit* ([поставляемой](/manual/installation/requirements#веб-интерфейс) вместе с Zabbix).
Полное описание доступных параметров конфигурации смотрите в официальной [документации библиотеки \[en\]](https://github.com/SAML-Toolkits/php-saml?tab=readme-ov-file#how-it-works).
:::

В рамках $SSO\['SETTINGS'\] можно задать только следующие параметры:

-   *strict*
-   *baseurl*
-   *compress*
-   *contactPerson*
-   *organization*
-   *sp* (только опции, указанные в этом списке)
    -   *attributeConsumingService*
    -   *x509certNew*
-   *idp* (только опции, указанные в этом списке)
    -   *singleLogoutService* (только одна опция)
        -   *responseUrl*
    -   *certFingerprint*
    -   *certFingerprintAlgorithm*
    -   *x509certMulti*
-   *security* (только опции, указанные в этом списке)
    -   *signMetadata*
    -   *wantNameId*
    -   *requestedAuthnContext*
    -   *requestedAuthnContextComparison*
    -   *wantXMLValidation*
    -   *relaxDestinationValidation*
    -   *destinationStrictlyMatches*
    -   *rejectUnsolicitedResponsesWithInResponseTo*
    -   *signatureAlgorithm*
    -   *digestAlgorithm*
    -   *lowercaseUrlencoding*

Все остальные параметры будут взяты из базы данных и не могут быть переопределены. Опция *debug* будет игнорироваться.

Кроме того, если пользовательский интерфейс Zabbix находится за прокси-сервером или балансировщиком нагрузки, можно использовать пользовательскую опцию *use\_proxy\_headers*:

-   *false* (по умолчанию) - игнорировать эту опцию;
-   *true* - для построения базового URL использовать HTTP-заголовки X-Forwarded-\*.
  
Если вы используете балансировщик нагрузки для подключения к экземпляру Zabbix, где балансировщик нагрузки использует TLS/SSL, а Zabbix — нет, вы должны указать параметры «baseurl», «strict» и «use_proxy_headers» следующим образом:

```php
$SSO['SETTINGS'] = [
    'strict' => false,
    'baseurl' => 'https://zabbix.example.com/zabbix/',
    'use_proxy_headers' => true
];
```

**Пример конфигурации:**

```php
$SSO['SETTINGS'] = [
    'security' => [
        'signatureAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha384'
        'digestAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#sha384',
        // ...
    ],
    // ...
];
```

[comment]: # ({/19c49e31-be372f8e})

[comment]: # ({32ef8a47-2e5c6dcf})

##### Настройка веб-интерфейса с Kerberos/ADFS

Можно использовать файл конфигурации веб-интерфейса Zabbix (*zabbix.conf.php*), чтобы настроить SSO с аутентификацией Kerberos и ADFS:

```php
$SSO['SETTINGS'] = [
    'security' => [
        'requestedAuthnContext' => [
            'urn:oasis:names:tc:SAML:2.0:ac:classes:Kerberos',
        ],
        'requestedAuthnContextComparison' => 'exact'
    ]
]; 
```

В этом случае, в настройках SAML в поле *ID объекта SP (SP name ID)* задайте:

    urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified

[comment]: # ({/32ef8a47-2e5c6dcf})
