From OpenSCADAWiki
< Modules
Revision as of 16:11, 25 June 2022 by FuzzyBot (Talk | contribs) (Updating to match new version of source page)

Jump to: navigation, search
Other languages:
English • ‎mRussian • ‎Українська
Модуль Ім'я Версія Ліцензія Джерело Мови Платформи Тип Автор
LDAP Директорія за LDAP 0.6 GPL2 bd_LDAP.so en,uk,ru,de x86,x86_64,ARM DB Roman Savochenko
Description
BD module. Provides support of directories by LDAP.
  • Total complexity: 1.9 HD[!]
  • Sponsored by, for initial implementation on 1.7 HD[!]: Alexander Kolesov, BIOCAD, 2017
  • To Do:
- expand the authentication mechanism by the storage functions (the DB object), that is virtual functions to TBD:
  • auth() — direct checking the user authentication, through "bind" or ldap_whoami();
  • passHash() — obtaining the password hash, to comparing, if auth() is missed, and changing the password by the function ldap_passwd() or see to the utility slappasswd.
- expand the "OSCADA-user" scheme:
  • set the password field "PASS" as a synonym of "userPassword";
  • make the own scheme dependent from "simpleSecurityObject";
  • check of working with the field-type "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 Права доступу

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