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

Argus

В данном разделе приведены сведения о Argus, плагине для СУБД Picodata.

Picodata Enterprise

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

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

Плагин Argus используется для синхронизации учетных данных между сервером LDAP и Picodata. Синхронизация происходит однонаправленно и позволяет импортировать данные пользователей и групп с сервера LDAP в Picodata, для которой перед этим была настроена авторизация с помощью LDAP.

Состав плагина

Внутри архива с плагином находится структура вложенных директорий, включающая имя и версию плагина, а также его файлы:

└── argus
    └── 1.0.0
        ├── libargus.so
        ├── manifest.yaml
        └── migrations

Основная логика плагина обеспечивается разделяемой библиотекой libargus.so. Исходная конфигурация плагина задается в файле манифеста (manifest.yaml). Директория migrations зарезервирована для файлов миграций.

Предварительные настройки в Picodata

Перед использованием плагина Argus убедитесь, что на стороне Picodata:

  • созданы роли (соответствующие группам пользователей в каталоге LDAP), и ролям выданы нужные привилегии
  • настроено подключение к серверу LDAP

Подключение плагина

Содержимое архива с плагином следует распаковать в любую удобную директорию, которую после этого нужно будет указать как PLUGIN_DIR для инстанса Picodata.

При запуске одного инстанса из командной строки директорию плагина можно указать с помощью параметра:

picodata run --plugin-dir=<PLUGIN-DIR> ...

Однако, для полноценной использования плагина рекомендуется запустить кластер с помощью роли Ansible.

После запуска Picodata с поддержкой плагинов в заданной директории подключитесь к административной консоли инстанса Picodata.

Установите плагин, добавьте его к тиру и включите его с помощью следующих SQL-команд:

CREATE PLUGIN argus 1.0.0;
ALTER PLUGIN argus 1.0.0 ADD SERVICE argus TO TIER default;
ALTER PLUGIN argus 1.0.0 ENABLE;

Для диагностики работы плагина обратитесь к отладочному журналу инстанса Picodata.

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

Исходная конфигурация плагина задается в файле manifest.yaml. Впоследствии конфигурацию можно менять, редактируя отдельный YAML-файл, который имеет следующую структуру:

interval_sec`:          # Как часто опрашивать LDAP на предмет пользователей и ролей. Число, в секундах
ldap:                   # Настройки подключения к LDAP:
    bind_dn:            # Имя пользователя, под которой Argus будет подключаться к вашему LDAP-серверу
    bind_password:      # Пароль этого пользователя
    url:                # Ссылка на LDAP-сервер
    disabled_attr:      # Название атрибута, который вы используете для отключения, но не удаления пользователей. Если значение этого атрибута у пользователя `true`, Argus отключит его и в Picodata
    tries:              # Число попыток подключения к LDAP-серверу. Для маленьких интервалов рекомендуем оставить `1`
    searches:           # Поисковые запросы и их соответствие ролям:
       role:            # Название роли в Picodata, которая синхронизируется данным запросом
       base:            # База поиска (объект вашего LDAP-каталога, с которого начнется поиск)
       filter:          # Фильтр для поиска
       attr:            # Атрибут, в котором находится имя пользователя, которое будет использоваться в Picodata

Укажите путь к файлу конфигурации в инвентарном файле роли Ansible.

Для изменения конфигурации уже добавленного и запущенного плагина предпочтительно использовать Ansible (перезапуск плейбука применит изменения в конфигурационном файле), однако можно использовать и непосредственно SQL-команды вида ALTER PLUGIN argus 1.0.0 SET argus.ldap = .... Пример:

ALTER PLUGIN argus 1.0.0 SET argus.ldap = '{"bind_dn":"cn=admin,dc=example,dc=org","bind_password":"admin","url":"ldap://localhost:389","disabled_attr":"employeeType","tries":1,"searches":[{"role":"reader","base":"dc=example,dc=org","filter":"(&(objectClass=inetOrgPerson)(businessCategory=reader))","attr":"cn"},{"role":"writer","base":"dc=example,dc=org","filter":"(&(objectClass=inetOrgPerson)(businessCategory=writer))","attr":"cn"},{"role":"nothing","base":"dc=example,dc=org","filter":"(&(objectClass=inetOrgPerson)(businessCategory=nothing))","attr":"cn"}]}'

См. также: