powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Система разграничения прав доступа
25 сообщений из 34, страница 1 из 2
Система разграничения прав доступа
    #36835353
Roman39
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, уважаемые.
Уже не первый проект появляется необходимость реализовать систему разграничения прав доступа к функциям (объектам, модулям) программы. Приграммы типа клиент-сервер СУБД. Интересует разграничение прав на стороне приложения, а не сервера БД. Поделитесь опытом, как лучше реализовать текое разграничение? Что выбрать в качестве элемента разграничения? Как обеспечить доступ к таким элементам? Ну и все такое.
Заранее спасибо.
...
Рейтинг: 0 / 0
Система разграничения прав доступа
    #36835503
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это наивно. Надо в любом случае ограничить учётку в правах в самой БД. В противном случае вы получите не безопасность а иллюзию безопасности.
...
Рейтинг: 0 / 0
Система разграничения прав доступа
    #36835528
Roman39
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На уровне сервера учетные записи однозначно будут. И пользователи там будут. И разграничение в доступе к данным будет. Это не вместО, а скорее вместЕ. Т.е. вместе с разграничением по данным необходимо разграничение по возможностям (функциям) программы. Скажем один пользователь может нажать на кнопку, другой - нет. Как лучше такой подход организовать архитектурно (без динамического создания объектов)?
...
Рейтинг: 0 / 0
Система разграничения прав доступа
    #36835563
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman39,

обычно оглашают инструменты с помощью которых собираются достичь желаемого эффекта...
...
Рейтинг: 0 / 0
Система разграничения прав доступа
    #36835640
Roman39
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Инструменты: C# (WPF\WinForms). Интересует именно архитектура вызова методов, чтобы учесть разграничение по функциям.
...
Рейтинг: 0 / 0
Система разграничения прав доступа
    #36835714
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman39,

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

GUI вам надо будет ограничить в любом случае, иначе получится анекдот - "у меня есть посылка только я вам её не отдам и т.д". Т.е. вам придётся делать и секюрити методов и GUI.

И зачем вам двойная работа?
...
Рейтинг: 0 / 0
Система разграничения прав доступа
    #36835768
Roman39
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonRoman39,
... Вам-же надо просто отобразить на экране пользователя список тех режимов, форм, отчётов, который соответствует авторизации пользователя.
...

Вообщем да. С методами это я неправильно выразился. Так вот как организовать работу с таким "списком"? Из чего будет состоять такой список? Вот например с кнопкой. Как она будет отражена в таком списке? Т.е. например в конструкторе формы вызвать "что то" что вернет список "чего то", на основе этого списка, например, сделать кнопку неактивной.
...
Рейтинг: 0 / 0
Система разграничения прав доступа
    #36835830
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Грант "на кнопку" никогда не выдаётся. Я сколько работаю - не встречал подобной архитектуры. А вот на формочку - да.
...
Рейтинг: 0 / 0
Система разграничения прав доступа
    #36835939
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

у меня, например, выдается :)
примерно так:
Код: plaintext
1.
2.
 if (baseManager.checkSaveRights("./cars/reports/main.js"))
  btnRep=form.addButton("Отчеты","btnRepClick", 200 );

хотя это редкость и, в некотором роде, костыль
...
Рейтинг: 0 / 0
Система разграничения прав доступа
    #36835999
Roman39
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to alex_k:
У Вас кнопка создается во время выполнения. Я хотел бы этого избежать. Если не секрет, как у Вас проверяется наличие прав по передаваемой строке?

mayton
Вот в этом и вопрос: на что выдавать гранты? Под кнопкой скрывается некоторая функция, которая либо доступна либо нет.
...
Рейтинг: 0 / 0
Система разграничения прав доступа
    #36836043
MAYAKOV_SV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonГрант "на кнопку" никогда не выдаётся. Я сколько работаю - не встречал подобной архитектуры. А вот на формочку - да.
Ну а например кнопка - "показать оклад".
Какому-то пользователю можно на форме нажимать эту кноку, а кому-то нильзя.
...
Рейтинг: 0 / 0
Система разграничения прав доступа
    #36836104
MAYAKOV_SV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman39
Вот в этом и вопрос: на что выдавать гранты?
Гранты лучше выдавать на функции, а не на кнопку.
Потому как одна функция может выполнятся с разных мест: с кнопок, пунктов меню и прочее.
Программа смотрит - может ли кнопка выполнить функцию - нет, то disable.
Доступы на функции хранятся в базе в табличном виде.
При загрузке формы происходить анализ и установка доступности элементов для данного пользователя (в самой форме). Для каждой формы нужно писать код, который будет читать данные по доступу для данного ползователя и настраивать форму.
Для работы с администрированием доступа нужно будет написать спец. софт.
Ну для простоты администрирования можно еще создать группы доступа.
Примерно в таком ключе.
...
Рейтинг: 0 / 0
Система разграничения прав доступа
    #36836197
Roman39
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MAYAKOV_SV
...
Доступы на функции хранятся в базе в табличном виде.
При загрузке формы происходить анализ и установка доступности элементов для данного пользователя (в самой форме). Для каждой формы нужно писать код, который будет читать данные по доступу для данного ползователя и настраивать форму.
Для работы с администрированием доступа нужно будет написать спец. софт.
Ну для простоты администрирования можно еще создать группы доступа.
Примерно в таком ключе.
В принципе я тоже пришел к такому варианту. Небольшая проблема такого варианта в том, что все разграничиваемые функции должны быть заранее известны (чтобы описать их в таблице). И трудно будет ввести новые функции, которые надо разграничить (которые ранее предоставлялись всем). Но я наверное слишком все усложняю...
Может кто то делает по другому?
В любом случае всем откликнувшимя спасибо.
...
Рейтинг: 0 / 0
Система разграничения прав доступа
    #36836273
MAYAKOV_SV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman39
В принципе я тоже пришел к такому варианту. Небольшая проблема такого варианта в том, что все разграничиваемые функции должны быть заранее известны (чтобы описать их в таблице).
На новой или старой форме нужно ограничить доступ функции.
Делаем следующее:
1) Добавляется запись в таблицу объектов доступа.
2) Добавляются записи к группам доступа - кому можно запускать.
3) Добавляем код на форму где анализируется текущий доступ.
1 и 2 пункты делаются самодельным администратором, чтоб удобнее было.

Можно еще почитать про "Механизмы безопасности в .NET", раз .NET используется.
А в общем случае, я думаю так и решается эта проблема.
У меня одна программа так работает, я, в принципе, доволен.
У меня даже закладки скрываются на tab'ах в зависимости от прав доступа для конкретного пользователя.
...
Рейтинг: 0 / 0
Система разграничения прав доступа
    #36836335
Roman39
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за полезную информацию...
...
Рейтинг: 0 / 0
Система разграничения прав доступа
    #36836348
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAYAKOV_SVmaytonГрант "на кнопку" никогда не выдаётся. Я сколько работаю - не встречал подобной архитектуры. А вот на формочку - да.
Ну а например кнопка - "показать оклад".
Какому-то пользователю можно на форме нажимать эту кноку, а кому-то нильзя.
Согласен, но в более осмысленном проектировании нельзя вообще показывать сам факт наличия кнопки (вспоминаем Печкина с посылкой), ведь у пользователя могут возникнуть лишние вопросы. Это секюрно и избавляет вас от лишних дискуссий с пользователем по поводу прав и привилегий.

Я-бы постарался сделать две формы: одну с просмотром персонала, и другую с просмотром персонала и окладов.
...
Рейтинг: 0 / 0
Система разграничения прав доступа
    #36836359
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAYAKOV_SV
Гранты лучше выдавать на функции, а не на кнопку.
Потому как одна функция может выполнятся с разных мест: с кнопок, пунктов меню и прочее.
Программа смотрит - может ли кнопка выполнить функцию - нет, то disable.
Доступы на функции хранятся в базе в табличном виде.

Я представил себе сколько кода надо написать чтобы реализовать все эти переходники и ужаснулся.
...
Рейтинг: 0 / 0
Система разграничения прав доступа
    #36836380
Roman39
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
...
Я-бы постарался сделать две формы: одну с просмотром персонала, и другую с просмотром персонала и окладов.
В таком случае придется "плодить" много "родственных " форм. Форма просмотра персонала, Форма просмотра пресонала и окладов, Форма просмотра персонала и обрабатываемых ими заказов, Форма просмотра персонала, обрабатываемых ими заказов и окладов и т.д.
И в результате получится тот же перебор, который Вас "ужаснул". Всегда хочется уменьшить прямой перебор чего либо в программе...
...
Рейтинг: 0 / 0
Система разграничения прав доступа
    #36836392
MAYAKOV_SV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я-бы постарался сделать две формы: одну с просмотром персонала, и другую с просмотром персонала и окладов.
Кстати, да, это второй подход:
Делаются варианты форм с различным доступом. И просто указывается доступ на форму - есть он или нет.
Есть некоторые трудности, правда, в плане сопровождения - придется сопровождать синхронно две формы с примерно одинаковой математикой, что не очень удобно. Ну и это годно, если небольшое количество объектов администрируется. У меня на одной форме администрируются - 6 закладок (скрыта/открыта) и 7 гридсеток (только чтение/ редактирование). Пришлось сделать разраничение доступа. Тем более, что это не сложно оказалось.
...
Рейтинг: 0 / 0
Система разграничения прав доступа
    #36836412
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman39
В таком случае придется "плодить" много "родственных " форм. Форма просмотра персонала, Форма просмотра пресонала и окладов, Форма просмотра персонала и обрабатываемых ими заказов, Форма просмотра персонала, обрабатываемых ими заказов и окладов и т.д.
И в результате получится тот же перебор, который Вас "ужаснул". Всегда хочется уменьшить прямой перебор чего либо в программе...
Верно. Но вы ведь не сказали, как формируете дизайн форм. Вообще-то здесь вопрос открытый. И самый верный ответ даст практика. Если у вас есть дизайнер, который рисует формочки - это будет один подход (со своими недостатками и преимуществами). Если у вас формы генерируются "на ходу" излекая информацию из БД - это другой подход.

Оба подхода одинаково жизнеспособны. Но мы сейчас обсуждаем вопросы в вакууме.
...
Рейтинг: 0 / 0
Система разграничения прав доступа
    #36836421
MAYAKOV_SV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я представил себе сколько кода надо написать чтобы реализовать все эти переходники и ужаснулся.
Мало. У меня не очень большой проект.
Там один класс.
Он строит меню по доступам + у него есть функции, которыми можно определить доступ.
Писано, правда на дельфи.
Вот пример установка прав доступа на гридсетку:
Код: plaintext
1.
2.
3.
4.
 if  (AppPolicy.DataSetPolicy(tab.TableName) <> WritePermission)
 begin 
  grid.ReadOnly := true;
 end ;
У меня общий код есть настроек всех гридсеток таблиц, поэтому этот кусок для каждой гридсетки повторять не надо.
В общем, при желании можно написать удобную систему, главное хорошо продумать.
...
Рейтинг: 0 / 0
Система разграничения прав доступа
    #36836468
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAYAKOV_SV,

В принципе нормально. Я не вкурсе... (давно-давно писал на .Net.) но лучше-бы сделать не read-only а invisible или вообще не конструировать grid. Это та самая "посылка Печкина" которая не отдаётся пользователю.

Но мне вообще подобный способ или метод разработки не нравится тем, что информация распылена и децентрализована по базе и по клиенту и по дизайну форм клиента. Для такого "тройственного" хранения сложно делать обратный инжинеринг и сложно вносить согласнованные измененения. Если у вас проект маленький то всё нормально. Если код растёт и разработчиков много - то начинается настоящий hell!
...
Рейтинг: 0 / 0
Система разграничения прав доступа
    #36836901
rabiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А LDAP не рассматриваете?
...
Рейтинг: 0 / 0
Система разграничения прав доступа
    #36837109
Довольно часто пользую ограничения на кнопки, эдитбоксы и т.д. Для этого имею набор своих контролов, напр.
Код: plaintext
1.
2.
3.
4.
TFmButton = class(TButton)
...
 property UserGroupList : string ... 
...
Строка содержит имена групп, которым разрешен доступ (если строка пустая, значит разрешен всем).
Если она не пустая, а группы данного пользователя в ней нет, тупо делаю контрол невидимым. Проблем пока не было.
...
Рейтинг: 0 / 0
Система разграничения прав доступа
    #36837405
Roman39
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В принципе весь вопрос сводится к централизованному разграничению прав доступа, что бы максимально облегчить процесс сопровождения программы. Не всегда удается предусмотреть все возможные объекты к которым следует ограничить доступ на этапе проектирования ПО.
...
Рейтинг: 0 / 0
25 сообщений из 34, страница 1 из 2
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Система разграничения прав доступа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]