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-подготовка включена, на вкладке Authentication необходимо указать группу пользователей для пользователей с отмененной подготовкой.
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-серверов, отсортированном по имени в порядке возрастания.
Конфигурация

Параметры конфигурации:
| Parameter | Description |
|---|---|
| Enable LDAP authentication | Отметьте флажок, чтобы включить аутентификацию LDAP. |
| Enable JIT provisioning | Отметьте флажок, чтобы включить JIT-провижининг. |
| Servers | Нажмите Add, чтобы настроить LDAP-сервер (см. LDAP server configuration ниже). |
| Case-sensitive login | Снимите флажок, чтобы отключить чувствительность к регистру при входе для имен пользователей (по умолчанию включено). Отключение чувствительности к регистру позволяет, например, входить как "admin", даже если пользователь Zabbix — "Admin" или "ADMIN". Обратите внимание: если чувствительность к регистру отключена и существует несколько пользователей Zabbix с похожими именами (например, Admin и admin), вход для этих пользователей всегда будет запрещен со следующим сообщением об ошибке: "Authentication failed: supplied credentials are not unique." |
| Provisioning period | Укажите период провижининга, то есть как часто вошедший в систему пользователь будет провижиниться во время работы с веб-интерфейсом. |
Конфигурация LDAP-сервера

Параметры конфигурации LDAP-сервера:
| Parameter | Description |
|---|---|
| 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 provisioning. |
| 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 media пользователя (например, email) с пользовательскими media Zabbix для отправки уведомлений (значение атрибута используется как поле media 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 имеет доступ только к учетным данным пользователя во время интерактивного входа.
Поэтому задачи provisioning, которые выполняются без интерактивного входа (например, кнопка Provision now или метод API user.provision), будут игнорировать пользователей, аутентифицирующихся с помощью прямой привязки пользователя, поскольку Zabbix не может выполнить привязку от их имени.
Используйте анонимную привязку или выделенного пользователя для привязки (служебную учетную запись), если вам нужно, чтобы provisioning и LDAP-поиск работали из веб-интерфейса без необходимости входа конечного пользователя в систему.
Следующие поля относятся только к "groupOfNames" как к методу Group configuration:

| Parameter | Description |
|---|---|
| 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-сервере с минимальными привилегиями в LDAP вместо использования реальных учетных записей пользователей (используемых для входа в веб-интерфейс Zabbix).
Такой подход обеспечивает более высокий уровень безопасности и не требует изменения Bind password при смене пользователем собственного пароля на LDAP-сервере.
В таблице выше это учетная запись ldap_search.
Проверка доступа
Кнопка Test позволяет проверить доступ пользователя:
| Параметр | Описание |
|---|---|
| Login | Имя пользователя LDAP для проверки (предварительно заполнено текущим именем пользователя из веб-интерфейса Zabbix). Это имя пользователя должно существовать на LDAP-сервере. Zabbix не активирует LDAP-аутентификацию, если не сможет аутентифицировать тестового пользователя. |
| User password | Пароль пользователя LDAP для проверки. |