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 • ‎российский • ‎українська
Модуль Ім'я Версія Ліцензія Джерело Мови Платформи Тип Автор
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 Права доступу

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