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 для проверки.