2 LDAP
Обзор
Внешняя LDAP-аутентификация может использоваться для проверки имен пользователей и паролей.
LDAP-аутентификация Zabbix работает как минимум с Microsoft Active Directory и OpenLDAP.
Если настроен только вход через LDAP, пользователь также должен существовать в Zabbix, однако его пароль Zabbix использоваться не будет. Если аутентификация выполнена успешно, Zabbix сопоставит локальное имя пользователя с атрибутом имени пользователя, возвращаемым LDAP.
JIT-подготовка пользователей
Можно настроить JIT (just-in-time) подготовку пользователей для пользователей LDAP. В этом случае не требуется, чтобы пользователь уже существовал в Zabbix. Учетная запись пользователя может быть создана, когда пользователь входит в Zabbix в первый раз.
Когда пользователь LDAP вводит свой LDAP-логин и пароль, Zabbix проверяет LDAP-сервер по умолчанию, существует ли такой пользователь. Если пользователь существует и еще не имеет учетной записи в Zabbix, в Zabbix создается новый пользователь, и пользователь получает возможность войти в систему.
Пользователь, созданный с помощью JIT-подготовки, связывается с LDAP-сервером (каталогом), который установлен по умолчанию на момент создания. Последующее изменение LDAP-сервера по умолчанию не изменяет и не обновляет LDAP-сервер, связанный с пользователями, которые уже были подготовлены.
Если JIT-подготовка включена, на вкладке Аутентификация необходимо указать группу пользователей для пользователей с отмененной подготовкой.
JIT-подготовка также позволяет обновлять подготовленные учетные записи пользователей на основе изменений в LDAP. Например, если пользователь перемещен из одной группы LDAP в другую, пользователь также будет перемещен из одной группы в другую в Zabbix; если пользователь удален из группы LDAP, пользователь также будет удален из группы в Zabbix и, если он не принадлежит ни к какой другой группе, добавлен в группу пользователей для пользователей с отмененной подготовкой. Подготовленные учетные записи пользователей обновляются на основе настроенного периода подготовки или когда пользователь входит в Zabbix.
Обратите внимание, что фоновая подготовка выполняется веб-интерфейсом Zabbix, когда пользователь взаимодействует с ним или по крайней мере имеет открытую страницу веб-интерфейса в браузере. Выделенных фоновых процессов для подготовки пользователей нет.
LDAP поддерживает три способа привязки к каталогу для аутентификации и поиска:
- Анонимная привязка — Bind DN / Bind password не указываются, и LDAP-сервер разрешает анонимные запросы.
- Выделенный пользователь привязки (служебная учетная запись) — в Bind DN / Bind password указывается конкретная учетная запись LDAP, и она используется Zabbix для поиска и подготовки. Это рекомендуемый и наиболее гибкий вариант, поскольку Zabbix может выполнять поиск и фоновую подготовку без учетных данных конечного пользователя.
- Прямая привязка пользователя — Zabbix выполняет привязку с использованием учетных данных, которые пользователь вводит при входе в систему (Bind DN / Bind password не настроены); это настраивается путем включения заполнителя, такого как
uid=%{user}, в Base DN. В этом режиме Zabbix имеет доступ к паролю пользователя только во время интерактивного входа в систему. В результате действия подготовки, требующие аутентификации в LDAP вне сеанса входа пользователя (например, использование кнопки Provision now или выполнение фоновой подготовки, когда пользователь не вошел в систему активно), не могут пройти аутентификацию и поэтому не будут работать. Подготовка и обновления для прямой привязки пользователя происходят только в момент входа пользователя в систему.
Несколько серверов
При необходимости можно определить несколько LDAP-серверов. Например, для аутентификации разных групп пользователей можно использовать разные серверы. После настройки LDAP-серверов в конфигурации группы пользователей появляется возможность выбрать требуемый LDAP-сервер для соответствующей группы пользователей.
Если пользователь состоит в нескольких группах пользователей и относится к нескольким LDAP-серверам, для аутентификации будет использоваться первый сервер в списке LDAP-серверов, отсортированном по имени в порядке возрастания.
Конфигурация

Параметры конфигурации:
| Параметр | Описание |
|---|---|
| Включить LDAP-аутентификацию | Установите флажок, чтобы включить LDAP-аутентификацию. |
| Включить JIT-подготовку | Установите флажок, чтобы включить JIT-подготовку. |
| Серверы | Нажмите Добавить, чтобы настроить LDAP-сервер (см. Настройка LDAP-сервера ниже). |
| Логин с учетом регистра | Снимите флажок, чтобы отключить учет регистра при входе для имен пользователей (по умолчанию включено). Отключение учета регистра при входе позволяет, например, войти как "admin", даже если пользователь Zabbix — "Admin" или "ADMIN". Обратите внимание, что если учет регистра при входе отключен и существует несколько пользователей Zabbix с похожими именами (например, Admin и admin), вход для таких пользователей всегда будет отклонен со следующим сообщением об ошибке: "Authentication failed: supplied credentials are not unique." |
| Период подготовки | Установите период подготовки, то есть как часто для вошедшего пользователя будет выполняться подготовка во время работы с веб-интерфейсом. |
Настройка LDAP-сервера

Параметры настройки LDAP-сервера:
| Параметр | Описание |
|---|---|
| Name | Имя LDAP-сервера в конфигурации Zabbix. |
| Host | Имя узла, IP-адрес или URI LDAP-сервера. Примеры: ldap.example.com, 127.0.0.1, ldap://ldap.example.com Для защищенного LDAP-сервера используйте протокол ldaps и имя узла. Пример: ldaps://ldap.example.com С OpenLDAP 2.x.x и новее можно использовать полный LDAP URI в формате ldap://hostname:port или ldaps://hostname:port. |
| Port | Порт LDAP-сервера. По умолчанию — 389. Для защищенного LDAP-соединения обычно используется порт 636. Не используется при применении полных LDAP URI. |
| Base DN | Базовый путь к учетным записям пользователей на LDAP-сервере: ou=Users,ou=system (для OpenLDAP), DC=company,DC=com (для Microsoft Active Directory) uid=%{user},dc=example,dc=com (для прямой привязки пользователя, см. примечание ниже) |
| Search attribute | Атрибут учетной записи LDAP, используемый для поиска: uid (для OpenLDAP), sAMAccountName (для Microsoft Active Directory) |
| Bind DN | Учетная запись LDAP для привязки и поиска на LDAP-сервере, примеры: uid=ldap_search,ou=system (для OpenLDAP), CN=ldap_search,OU=user_group,DC=company,DC=com (для Microsoft Active Directory) Также поддерживается анонимная привязка. Обратите внимание, что анонимная привязка потенциально открывает конфигурацию домена неавторизованным пользователям (информацию о пользователях, компьютерах, серверах, группах, службах и т. д.). По соображениям безопасности отключайте анонимную привязку на LDAP-узлах и используйте аутентифицированный доступ. |
| Bind password | LDAP-пароль учетной записи для привязки и поиска на LDAP-сервере. |
| Description | Описание LDAP-сервера. |
| Configure JIT provisioning | Установите этот флажок, чтобы отобразить параметры, связанные с JIT-подготовкой пользователей. |
| Group configuration | Выберите метод настройки групп: memberOf — путем поиска пользователей и атрибута их членства в группах groupOfNames — путем поиска групп через атрибут member Обратите внимание, что memberOf предпочтительнее, так как работает быстрее; используйте groupOfNames, если ваш LDAP-сервер не поддерживает memberOf или требуется фильтрация групп. |
| Group name attribute | Укажите атрибут для получения имени группы из всех объектов в атрибуте memberOf (см. поле User group membership attribute)Имя группы необходимо для сопоставления групп пользователей. |
| User group membership attribute | Укажите атрибут, содержащий информацию о группах, в которые входит пользователь (например, memberOf).Например, атрибут memberOf может содержать такую информацию: memberOf=cn=zabbix-admin,ou=Groups,dc=example,dc=comЭто поле доступно только для метода memberOf. |
| User name attribute | Укажите атрибут, содержащий имя пользователя. |
| User last name attribute | Укажите атрибут, содержащий фамилию пользователя. |
| User group mapping | Сопоставьте шаблон LDAP-группы с группой пользователей Zabbix и ролью пользователя. Это необходимо, чтобы определить, какую группу/роль получит подготовленный пользователь в Zabbix. Нажмите Add, чтобы добавить сопоставление. Поле LDAP group pattern поддерживает подстановочные знаки. Имя группы должно совпадать с существующей группой. Если LDAP-пользователь соответствует нескольким группам пользователей Zabbix, пользователь станет участником всех этих групп. Если пользователь соответствует нескольким ролям пользователей Zabbix, он получит ту из них, у которой самый высокий уровень прав. |
| Media type mapping | Сопоставьте LDAP-атрибуты пользователя способам оповещения Zabbix (например, email) для отправки уведомлений (значение атрибута используется в поле Send to пользовательского способа оповещения). |
| Advanced configuration | Нажмите на метку Advanced configuration, чтобы отобразить дополнительные параметры настройки (см. ниже). |
| StartTLS | Установите флажок, чтобы использовать операцию StartTLS при подключении к LDAP-серверу. Соединение завершится ошибкой, если сервер не поддерживает StartTLS. StartTLS нельзя использовать с серверами, работающими по протоколу ldaps. |
| Search filter | Определите пользовательскую строку при аутентификации пользователя в LDAP. Поддерживаются следующие заполнители:%{attr} — имя атрибута поиска (uid, sAMAccountName)%{user} — значение имени пользователя для аутентификацииНапример, чтобы выполнить регистрозависимый поиск в нечувствительной к регистру среде LDAP или Microsoft Active Directory, строку можно определить следующим образом: (%{attr}:caseExactMatch:=%{user}).Если фильтр не настроен, LDAP будет использовать значение по умолчанию: (%{attr}=%{user}). |
Чтобы настроить LDAP-сервер для прямой привязки пользователя, добавьте атрибут uid=%{user} к параметру Base DN (например, uid=%{user},dc=example,dc=com) и оставьте параметры BindDN и Bind password пустыми.
При аутентификации заполнитель %{user} будет заменен именем пользователя, введенным при входе в систему.
При прямой привязке пользователя Zabbix имеет доступ к учетным данным пользователя только во время интерактивного входа.
Поэтому задачи подготовки, выполняемые без интерактивного входа (например, кнопка Provision now или метод API user.provision), будут игнорировать пользователей, аутентифицирующихся с помощью прямой привязки пользователя, поскольку Zabbix не может выполнить привязку от их имени.
Используйте анонимную привязку или выделенного пользователя для привязки (служебную учетную запись), если вам нужно, чтобы подготовка и LDAP-поиск работали из веб-интерфейса без необходимости входа конечного пользователя в систему.
Следующие поля относятся только к методу Group configuration "groupOfNames":

| Параметр | Описание |
|---|---|
| Group base DN | Базовый путь к группам на LDAP-сервере. |
| Group name attribute | Укажите атрибут для получения имени группы по указанному базовому пути к группам. Имя группы необходимо для сопоставления групп пользователей. |
| Group member attribute | Укажите атрибут, содержащий информацию о членах группы в LDAP (например, member). |
| Reference attribute | Укажите ссылочный атрибут для фильтра группы (см. поле Group filter). Затем используйте %{ref} в фильтре группы, чтобы получить значения для указанного здесь атрибута. |
| Group filter | Укажите фильтр для получения группы, в которую входит пользователь. Например, (member=uid=%{ref},ou=Users,dc=example,dc=com) будет соответствовать "User1", если атрибут member группы имеет значение uid=User1,ou=Users,dc=example,dc=com, и вернет группу, в которую входит "User1". |
В случае проблем с сертификатами, чтобы заработало защищенное LDAP-соединение (ldaps), может потребоваться добавить строку TLS_REQCERT allow в конфигурационный файл /etc/openldap/ldap.conf.
Это может снизить безопасность соединения с LDAP-каталогом.
Рекомендуется создать отдельную учетную запись LDAP (Bind DN) с минимальными правами для выполнения привязки и поиска на LDAP-сервере вместо использования реальных учетных записей пользователей (используемых для входа в веб-интерфейс Zabbix).
Такой подход обеспечивает более высокий уровень безопасности и не требует изменения Bind password, когда пользователь меняет свой собственный пароль на LDAP-сервере.
В таблице выше это учетная запись ldap_search.
Проверка доступа
Кнопка Test позволяет проверить доступ пользователя:
| Параметр | Описание |
|---|---|
| Login | Имя пользователя LDAP для проверки (предварительно заполнено текущим именем пользователя из веб-интерфейса Zabbix). Это имя пользователя должно существовать на LDAP-сервере. Zabbix не активирует LDAP-аутентификацию, если не сможет аутентифицировать тестового пользователя. |
| User password | Пароль пользователя LDAP для проверки. |