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/ |