OberonCore
https://forum.oberoncore.ru/

Разграничение прав пользователей (пром. ЧМИ)
https://forum.oberoncore.ru/viewtopic.php?f=23&t=6414
Страница 1 из 1

Автор:  hothing [ Четверг, 11 Июль, 2019 19:53 ]
Заголовок сообщения:  Разграничение прав пользователей (пром. ЧМИ)

Давно присматриваюсь к каркасу как средству создания промышленных ЧМИ. Могу представить как решить почти все необходимые задачи.
Однако есть и такая задача которую не могу понять как решить - разграничение прав пользователей.
Есть список пользователей, на каждого налагаются некоторое множество ограничений
(которые, в целом, можно свести к списку переменных модулей которе можно изменять и списку процедур которые можно вызывать).

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

Самое дубовое решение - реализовать специальные объекты-обертки, и менять значение через обращение к методу.
А если я захочу также ограничить доступ к некоторым процедурам? Снова объекты-обертки? Но ведь жирно...

Не понятно как средствами каркаса\языка ограничить доступ к глобальным переменным и процедурам
в зависимости от заданных прав пользователя. И возможно ли?

@Илья Ермаков: я знаю Вы реализовали несколько АСУ с ЧМИ на базе каркаса. Как решали такую задачу, если не секрет?

Автор:  Дмитрий Дагаев [ Четверг, 11 Июль, 2019 20:55 ]
Заголовок сообщения:  Re: Разграничение прав пользователей (пром. ЧМИ)

Сначала надо определиться с требованиями, потом как делать:
1. Если Ваша система с правами доступа каким-то образом сертифицируется как СЗИ (средство защиты информации), то лучше ввести в ОС разных пользователей, и от каждого запускать BlackBox со своими правами. Я так делал в SCADA для черного ящика.
2. Если Ваша система использует внешние ресурсы с СЗИ, например, СУБД, надо их же и использовать, организовав соответствующие сессии в ЧМИ.
3. Вы решили делать сами - сперва нужно определить модель разграничения доступа: дискреционную, мандатную или ролевую. Я предпочитаю ролевую - задать роли, у каждой роли права (+читать файлы, -записывать файлы, -подавать команды управления, -производить конфигурирование уставок, и т.д.). Вводить пользователей, каждому - своя роль. Ну идентификация, аутентификация, хранение/шифрование паролей средствами, предоставляемыми криптографическими библиотеками.

Автор:  hothing [ Четверг, 11 Июль, 2019 22:41 ]
Заголовок сообщения:  Re: Разграничение прав пользователей (пром. ЧМИ)

Дмитрий, спасибо за интересную информацию.

Те системы с которыми работаю не относятся к СЗИ.

Смотрите, есть ПЛК с несколькими ПИД-регуляторами и набором рецептов. И есть пользователи АСУ с разными навыками и знаниями. Таких пользователей можно разбить на групппы, например "операторы" и "мастера". Первым нужно позвилить менять уставки, но запретить менять параметры ПИД или изменять рецепты. Вторые же могут изменять рецепты и подстраивать ПИД.

Без разницы где и как храняться данные (ПЛК, СУБД, файлы\память), но важно иметь возможность ограничить возможности пользователя в их модификации универсальным способом и так же нужно каждое изменение автоматически регистрировать в журнале (что, чем, кем, когда).

Автор:  Дмитрий Дагаев [ Четверг, 11 Июль, 2019 23:22 ]
Заголовок сообщения:  Re: Разграничение прав пользователей (пром. ЧМИ)

Тогда вариант 3 - ролевая система самостоятельно.
A. Вводите ролевой объект в систему, который определяет права на: уставки, параметры ПИД, рецепты.
B. Вводите роли: оператор, мастер, гость.
C. Вводите и храните список пользователей с ролью и паролем.
D. Управляете сессиями - логин, работа, выход из системы. В течении сессии ролевой объект устанавливается в определенную роль.
E. Все высокоуровневые методы доступа к данным должны сначала обращаться к ролевому объекту за разрешением.

Как-то так.

Автор:  Пётр Кушнир [ Пятница, 12 Июль, 2019 00:22 ]
Заголовок сообщения:  Re: Разграничение прав пользователей (пром. ЧМИ)

Ролевая модель устарела, сейчас можно "ролью" называть условные наборы действий, которые и являются базовыми единицами настройки доступа пользователя к системе, то есть "роль" может существовать только на этапе создания/редактирования пользователя, для упрощения процесса регистрации, а по факту будут наборы действий, причём параметризованные всякими "контекстными" штуками, типа, "вообще юзер может отключить проверку целостности при сохранении документа, но только если в прототипе она включена юзером, а не админом", такие правила ролями никак не описать.

Автор:  Иван Денисов [ Пятница, 12 Июль, 2019 10:41 ]
Заголовок сообщения:  Re: Разграничение прав пользователей (пром. ЧМИ)

Рекомендую подумать о подходе, когда абстрактный интерфейс реализуется по-разному для разных пользователей.

Процедуры интерфейса управления оформляете с ключем EMPTY или EXTENSIBLE

Код:
Пустые методы (атрибут EMPTY)

Метод может быть объявлен как пустой (empty). Пустые методы являются расширяемыми. Пустые методы очень похож на асбтрактные в том, что они являются «заглушками» для функциональности, которая может быть предоставлена в дальнейших расширениях. Однако пустые методы являются конкретными и могут вызываться. Если они не расширялись (т.е. не были реализованы), то их вызов не дает никакого эффекта.


Доступ к данным делаете только через процедуры. Вызов которых разный в разных реализациях.

Плюсы в том, что не надо делать большую работу по авторизации пользователей, управлению группами и т.п. Более надежная защита. Так как "секретные" реализации кода недоступны пользователям с более низкими правами.

Автор:  Борис Рюмшин [ Пятница, 12 Июль, 2019 14:13 ]
Заголовок сообщения:  Re: Разграничение прав пользователей (пром. ЧМИ)

hothing писал(а):
@Илья Ермаков: я знаю Вы реализовали несколько АСУ с ЧМИ на базе каркаса. Как решали такую задачу, если не секрет?

Отвечу я. Это не секрет: никак не решали. В рамках этих систем задача разграничения доступа не ставилась.

Автор:  hothing [ Пятница, 12 Июль, 2019 20:16 ]
Заголовок сообщения:  Re: Разграничение прав пользователей (пром. ЧМИ)

Иван Денисов писал(а):
Рекомендую подумать о подходе, когда абстрактный интерфейс реализуется по-разному для разных пользователей...


Иван, спасибо за идею! Надо пробовать.

Автор:  hothing [ Пятница, 12 Июль, 2019 20:17 ]
Заголовок сообщения:  Re: Разграничение прав пользователей (пром. ЧМИ)

Борис Рюмшин писал(а):
Отвечу я. Это не секрет: никак не решали. В рамках этих систем задача разграничения доступа не ставилась.

Понятно, спасибо.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/