Перейти к содержанию

Аутентификация с помощью LDAP

В данном разделе приведены сведения об аутентификации в Picodata с помощью протокола LDAP.

Picodata Enterprise

Данная функция доступна только в коммерческой версии Picodata.

Общие сведения

Lightweight Directory Access Protocol (далее LDAP) — это легковесный протокол для доступа к службе каталогов X.500, которая часто используется организациями для контроля доступа к ресурсам и управления доменными учетными записями. Существует множество серверов, которые поддерживают данный протокол: OpenLDAP, GLAuth и прочие.

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

В качестве запроса в Picodata используется BIND, позволяющий произвести аутентификацию пользователя с использованием заранее известного Distinguished Name (DN) и факторов аутентификации (например, пароля).

Для использования протокола LDAP в Picodata следует задать для учетной записи пользователя тип аутентификации ldap. Примеры см. ниже.

Особенности работы LDAP

  • Коммуникация с LDAP-сервером происходит один раз при установке новой пользовательской сессии. Если аутентификация пройдена успешно, сессия будет установлена, и до самого ее конца повторная аутентификация производиться не будет.
  • Метод отвечает только за аутентификацию. Группы, права и владение объектами и т.д. не синхронизируются с удаленным сервером LDAP.
  • Метод требует дополнительной настройки кластера через переменные среды UNIX.
  • Метод невозможно использовать в случае отказа удаленного сервера LDAP.
  • Метод не кеширует результаты аутентификации.

Настройка

Для использования LDAP-аутентификации под определенным пользователем в Picodata требуется:

  • наличие в сети запущенного LDAP-сервера, на котором заведен этот пользователь
  • объявление переменных среды с данными LDAP-сервера при запуске узлов кластера Picodata
  • наличие пользователя с таким же именем и типом аутентификации ldap в Picodata

Настройка переменных среды для LDAP

Для корректной работы метода нужно установить следующие переменные среды UNIX:

  • TT_LDAP_URL — URL, указывающий на удаленный сервер LDAP, например: ldap://127.0.0.1:1389.
  • TT_LDAP_DN_FMT — произвольная формат-строка DN для запроса BIND. Пример: cn=$USER,ou=users,dc=example,dc=org. Вместо $USER будет подставлено фактическое имя пользователя Picodata (производится только для первого упоминания $USER).

Пример скрипта инстанса с указанием переменных среды для использования LDAP-сервера:

instance1
#!/bin/bash

export PICODATA_CONFIG_FILE="my_cluster.yml"

export PICODATA_INSTANCE_NAME="i1"
export PICODATA_INSTANCE_DIR="./data/my_cluster/i1"
export PICODATA_IPROTO_LISTEN="127.0.0.1:3301"
export PICODATA_HTTP_LISTEN="127.0.0.1:8080"
export PICODATA_PG_LISTEN="127.0.0.1:5432"
export TT_LDAP_URL="ldap://127.0.0.1:1389"
export TT_LDAP_DN_FMT='cn=$USER,ou=users,dc=example,dc=org'
picodata run

Примечание

Обратите внимание, что для корректной обработки переменной $USER необходимо указывать значение TT_LDAP_DN_FMT в одинарных кавычках.

В текущей реализации строка форматирования DN общая для всех пользователей. Кроме того, нет возможности установить персональный DN для конкретного пользователя. В качестве параметра можно использовать только имена пользователей.

Переменные среды не кешируются — их можно менять во время эксплуатации кластера; в этом случае для новых попыток аутентификации будут использоваться актуальные значения параметров.

Настройка пользователей LDAP в Picodata

Как и другие методы аутентификации, ldap можно указать при создании нового пользователя через параметр USING:

CREATE USER "username" password '' USING ldap;

Помимо этого, можно сменить метод аутентификации уже существующего пользователя:

ALTER USER "username" WITH PASSWORD '' USING ldap;

Обратите внимание, что при использовании метода LDAP не требуется указывать пароль пользователя. Это связано с тем, что Picodata не хранит пароли: при каждой попытке аутентификации клиент будет отправлять пароль отдельно; в свою очередь, Picodata будет использовать полученный пароль при взаимодействии с сервером LDAP. Также, рекомендуется включить SSL для передачи пароля по сети в зашифрованном виде.

См. также:

Устранение неполадок

В отличие от других методов аутентификации, LDAP требует дополнительной настройки, без которой аутентификация с использованием этого метода будет невозможна. Также важно понимать, что любые проблемы с удаленным LDAP-сервером немедленно отразятся на возможности аутентифицировать пользователей. Для решения этой проблемы администраторам предлагается временно изменить метод аутентификации (например, на 'chap-sha1') для затронутых пользователей при помощи функции смены пароля:

ALTER USER "username" WITH PASSWORD 'new_password' USING chap-sha1;