From OpenSCADAWiki
Jump to: navigation, search
This page is a translated version of the page Modules/LDAP and the translation is 100% complete.

Other languages:
English • ‎mRussian • ‎Українська
Модуль Имя Версия Лицензия Источник Языки Платформы Тип Автор
LDAP Директория по LDAP 0.6 GPL2 bd_LDAP.so en,uk,ru,de x86,x86_64,ARM БД Роман Савоченко
Описание
Модуль БД. Предоставляет поддержку директорий посредством LDAP.
  • Общая трудоёмкость: 1.9 ЧД[!]
  • Спонсировано, начальной имплементации на 1.7 ЧД[!]: Александр Колесов, BIOCAD, 2017
  • Задачи (To Do):
- расширить механизм аутентификации функциями хранилища (объекта БД), а именно виртуальными функциями к TBD:
  • auth() — прямая проверка аутентификации пользователя, через "bind" или ldap_whoami();
  • passHash() — получение хеша пароля, для сравнения, если auth() отсутствует, и смена пароля с помощью функции ldap_passwd() или посмотреть на утилиту slappasswd.
- расширить "OSCADA-user" схему:
  • поле пароля "PASS" установить синонимом на "userPassword";
  • свою схему сделать зависимой от "simpleSecurityObject";
  • проверить работу с полем-типом "userPassword".

Модуль предоставляет в OpenSCADA поддержку директорий с помощью протокола лёгкого доступа к директориям (LDAP). Модуль основан на OpenLDAP библиотеке на языке программирования "C". Из-за концептуального отличия сервиса директорий от баз данных (БД) этот модуль позволяет осуществлять в основном чтение и модификацию записей, представленных как табличные записи в концепции БД.

Служба каталогов или служба имён отражает названия сетевых ресурсов на соответствующие сетевые адреса. Это общая информационная инфраструктура для размещения, управления, администрирования и организации повседневных элементов и сетевых ресурсов, которые могут включать тома, каталоги, файлы, принтеры, пользователей, группы, устройства, телефонные номера и другие объекты. Распространённым использованием LDAP является предоставление центрального места хранения имён пользователей и паролей. Это позволяет многим различным приложениям и службам подключаться к LDAP серверу с целью проверки пользователей. Протокол предоставляет интерфейс с директориями, который соответствует редакции 1993 модели X.500:

  • Элемент содержит набор атрибутов.
  • Атрибут имеет имя (тип или описание атрибута) и одно или множество значений. Атрибуты определяются в схеме.
  • Каждый элемент имеет уникальный идентификатор — его Отличительное Имя (DN). Которое содержит его Относительное Отличительное Имя (RDN), что конструируется с некоторого атрибута(ов), парами {название}={значение} разделённые знаком '+', в этом элементе, после DN родительского элемента, через знак ','. Считайте DN полным путём и RDN относительным именем этого файла в родительском каталоге.

1 Операции над БД

Модулем предоставляется только операция открытия базы данных (представляя в такой способ базовый элемент). В терминах подсистемы "БД" OpenSCADA, открытием БД является её регистрация для последующего использования программой. Также, поддерживается операция запроса перечня таблиц в БД.

LDAP база данных (подключение) адресуется следующим образом "ldap[s]://{host}[:{port}];bdn[;{adn};{pass}[;{tm}]]", где:

  • host — адрес хоста со службой директорий;
  • port — порт, по умолчанию 389;
  • bdn — базовый DN, элемент под-элементы которого считаются как таблицы базы данных, при наличии RDN атрибута "ou", т.е. — "organizationalUnit";
  • adn — Отличительное Имя пользователя для подключения, игнорирование определением пользователя и следующего пароля приведёт к анонимному подключению;
  • pass — пароль Отличительного Имени пользователя для подключения;
  • tm — сетевой и общий таймаут, вещественным числом в секундах.

2 Операции над таблицей

Поддерживаются только операции открытия и закрытия таблицы (представляя в такой способ елемент в базовом элементе). Таблицей считаются элементы с присутствующим атрибутом "ou" (обычно это класс объекта "organizationalUnit"), которые включены в базовый элемент.

3 Операции над содержимым таблицы

  • сканирование записей таблицы;
  • запрос значений указанных записей;
  • установка значений указанных записей.

API подсистемы "БД" предполагает доступ к содержимому таблицы по значению ключевого(ых) полей. Так, операция запроса записи подразумевает предварительную установку ключевых колонок объекта TConfig, по которым будет выполнен запрос. Создание новой записи(строки) производится операцией установки значений записи, которая отсутствует.

Перед установкой любого значения модуль загружает текущее значение, сравнивает их и уже потом отправляет только изменённое значение.

Модуль на данное время не различает типов атрибутов элементов и считает всех их строками.

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

Узел OpenSCADA Значение Organizational Unit "ou" (имя таблицы) Структура Схема, в основном вспомогательные
Пользователь ou=Security_user NAME, DESCR, LONGDESCR, PASS, LANG, PICTURE OSCADA-user
Группа пользователей ou=Security_grp NAME, DESCR, LONGDESCR, USERS OSCADA-grp

Поддерево LDAP элементов типовых таблиц пользователей и их групп имеет следующий вид:

  • dc=oscada,dc=org — базовый DN (bdn) указанный в адресе объекта БД
    • ou=Security_user — RDN таблицы "Security_user" пользователей OpenSCADA, в структурном классе "organizationalUnit"
      • name=user1 — RDN записи таблицы "Security_user" для пользователя "user1", в структурном классе "account" и дополняющем классе "OSCADA-user"
      • name=user2 — RDN записи таблицы "Security_user" для пользователя "user2", в структурном классе "account" и дополняющем классе "OSCADA-user"
    • ou=Security_grp — RDN таблицы "Security_grp" пользователей OpenSCADA, в структурном классе "organizationalUnit"
      • name=grp1 — RDN записи таблицы "Security_grp" для группы пользователей "grp1", в структурном классе "account" и дополняющем классе "OSCADA-grp"
      • name=grp2 — RDN записи таблицы "Security_grp" для группы пользователей "grp2", в структурном классе "account" и дополняющем классе "OSCADA-grp"

4 Права доступа

Права доступа к базе данных определяются правами пользователя подключения.