LDAP

Обзор

Внешний LDAP сервис authentication Может быть использован для проверки логинов и паролей пользователей

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

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

Создание пользователей

Для пользователей LDAP можно настроить автоматическое создание пользователей JIT (just-in-time). В этом случае не требуется, чтобы пользователь уже существовал в 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 не настроены); этот режим настраивается путем включения в базовое DN заполнителя, например uid=%{user}. В этом режиме Zabbix получает доступ к паролю пользователя только во время интерактивного входа. В результате операции создания пользователей, требующие аутентификации в LDAP за пределами сеанса входа пользователя (например, с помощью кнопки Создать сейчас или при выполнении фонового создания пользователей, когда пользователь не вошел в систему), не могут пройти аутентификацию и поэтому не будут работать. Создание пользователей и обновление данных при прямом подключении пользователя выполняются только в момент входа пользователя.

Несколько серверов

При необходимости можно определить несколько LDAP-серверов. Например, для аутентификации разных групп пользователей можно использовать разные серверы. После настройки LDAP-серверов в конфигурации группы пользователей становится возможным выбрать нужный LDAP-сервер для соответствующей группы пользователей.

Если пользователь входит в несколько групп пользователей и для них настроено несколько LDAP-серверов, для аутентификации будет использоваться первый сервер в списке LDAP-серверов, отсортированном по имени в порядке возрастания.

Конфигурация

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

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

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

Следующие поля относятся только к методу Group configuration = "groupOfNames":

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 позволяет проверить доступ пользователя:

Parameter Description
Login Имя пользователя LDAP для проверки (предварительно заполнено текущим именем пользователя из веб-интерфейса Zabbix). Это имя пользователя должно существовать на сервере LDAP.
Zabbix не активирует аутентификацию LDAP, если не сможет выполнить проверку подлинности тестового пользователя.
User password Пароль пользователя LDAP для проверки.