powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как организовать структуру бд с распределением прав.
29 сообщений из 29, показаны все 2 страниц
Как организовать структуру бд с распределением прав.
    #36175929
vuliad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, столкнулся со следующей задачей:
Имеется одна большая организация, назовем её "А", в ней есть множество "под-организаций" B1..Bn, и в каждой из них есть ещё всякие отделы C1...Cm.

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

На данный момент я реализовал это несколько плохим способом: Имеется своя таблица с логинами и правами, при коннекте вызывается процедура, которая в соответствии с правами вносят туда SessionID и ID доступных отделов. А в представлении запрос вида Select OTDELbl.* from OTDELbl,ACS_OTD where OTDELbl.id=ACS_OTD.id and Session=SessionID. Придумано было самостоятельно, но насамом деле бд значительно сложнее и доходит до 5-6 таблиц и вообщем плохое это решение. Я уверен, что есть более верные способы решить такую задачу, прошу подсказать где можно, что почитать на эту тему.
...
Рейтинг: 0 / 0
Как организовать структуру бд с распределением прав.
    #36175938
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Начните отсюда: http://www.ibm.com/developerworks/ru/library/selinux/index.html
...
Рейтинг: 0 / 0
Как организовать структуру бд с распределением прав.
    #36176059
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сильно зависит от возможностей СУБД
С уважением, Naf
...
Рейтинг: 0 / 0
Как организовать структуру бд с распределением прав.
    #36176352
vuliad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как такое можно реализовать например в MsSQL или Oracle? и что для такой задачи больше подойдет? ( ибо идут уже разговоры о покупке нормальной СУБД, в данный момент используется Линтер :) )
...
Рейтинг: 0 / 0
Как организовать структуру бд с распределением прав.
    #36176632
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NafСильно зависит от возможностей СУБД
С уважением, NafНадо делать на уровне приложения. Ньансы СУБД - по минимуму (права на ХП, вью, таблицы, т.е. то что есть в любой СУБД).

Все равно всех приколов безопасности на СУБД не реализовать.
...
Рейтинг: 0 / 0
Как организовать структуру бд с распределением прав.
    #36176868
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVNafСильно зависит от возможностей СУБД
С уважением, NafНадо делать на уровне приложения. Ньансы СУБД - по минимуму (права на ХП, вью, таблицы, т.е. то что есть в любой СУБД).

Все равно всех приколов безопасности на СУБД не реализовать.Некоторые СУБД поддерживают технологию RLS про которую и говорит автор
...
Рейтинг: 0 / 0
Как организовать структуру бд с распределением прав.
    #36176926
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Row-Level Security в РСУБД
С уважением, Naf
...
Рейтинг: 0 / 0
Как организовать структуру бд с распределением прав.
    #36177124
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> А как такое можно реализовать например в MsSQL или Oracle?

А в чем проблемы?

> и что для такой задачи больше подойдет?

Oracle - это игла, с которой не спрыгнуть, так что стоит сто раз подумать, надо ли оно. О мелкомягких вообще речи нет.

> в данный момент используется Линтер

Переходите на PostgreSQL и не парьтесь. Все, что нужно, там есть.
...
Рейтинг: 0 / 0
Как организовать структуру бд с распределением прав.
    #36177144
kamakama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621,

Полностью поддерживаю, последний Линтер, с которым работал, был Линтер-ВС, он же вроде как Линтер 6.0. Слизан донельзя с PostgreSQL (какой версии не помню), по крайней мере для МСВС 3.0v13
...
Рейтинг: 0 / 0
Как организовать структуру бд с распределением прав.
    #36177660
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Naf Row-Level Security в РСУБД До лампочки Row-Level Security.
Как например некот. пользователям не дать возможность увидеть важную колонку в таблице, при том что в некот. случаях все таки давать ? Например сумма зарплаты/бонусов и пр.

Безопасность в приложении гораздо сложнее любых Row-Level Security. А если потом станет ребром вопрос перехода на СУБД без Row-Level Security ? Зострелиццо штоле ?

Например у нас любой запрос подчитывает секурные настройки, чтоб разрешить/запретить некот. действия. Но только на уровне логики системы. Секурность на уровне СУБД ограничивается доступом к юзеров ХП.
...
Рейтинг: 0 / 0
Как организовать структуру бд с распределением прав.
    #36178036
vuliad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за статью, очень полезно.
Несколько вопросов:
- Не совсем могу понять в каких субд имеется механизм RLS и что он там из себя представляет?
- Удалять столбцы и менять тип данных колонки невозможно только в Линтере или в других субд тоже?
- Заказчик требует как раз Линтер 6.0. Нам очень хочется переубедить заказчика использовать другую субд, пока проект пилотный у нас слаборазвитая иерархия в бд и прочь, пока не удалось оттестировать её в реальной работе на полную и понятия не имеем с чем мы можем столкнуться при дальнейшей разработке. kamakama и все, кто с ней работал, хочется услышать ваше мнение о работе с ней.
- А если реализовать это таким образом, что при создании пользователя ему создается собственный views, при переназначении прав, он пересоздается и т.д... или это всетаки плохая идея?
...
Рейтинг: 0 / 0
Как организовать структуру бд с распределением прав.
    #36178133
Tosh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVNaf Row-Level Security в РСУБД До лампочки Row-Level Security.
Как например некот. пользователям не дать возможность увидеть важную колонку в таблице, при том что в некот. случаях все таки давать ? Например сумма зарплаты/бонусов и пр.

Безопасность в приложении гораздо сложнее любых Row-Level Security. А если потом станет ребром вопрос перехода на СУБД без Row-Level Security ? Зострелиццо штоле ?

Например у нас любой запрос подчитывает секурные настройки, чтоб разрешить/запретить некот. действия. Но только на уровне логики системы. Секурность на уровне СУБД ограничивается доступом к юзеров ХП.
Сначала посмотрел бы что за статья по ссылке - там совсем не говорится о существующих в системе RLS, а о том как создать свое подобие, заточенное именно под свои задачи.
К стати - по вашей системе. А что будет если злобный пользователь законнектится к вашей БД не через программу? Отвечу - он просто обойдет все те ограничения, которые вы ему навешиваете в программе и, из вашего же примера, увидит сумму ЗП/бонусов. Что будет прогеру если пойдет инфа о том, что эти данные вдруг стали общедоступными (а ведь руководство явно требовало, чтобы этого никто не видел)?
...
Рейтинг: 0 / 0
Как организовать структуру бд с распределением прав.
    #36178311
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ToshК стати - по вашей системе. А что будет если злобный пользователь законнектится к вашей БД не через программу? Отвечу - он просто обойдет все те ограничения, которые вы ему навешиваете в программе и, из вашего же примера, увидит сумму ЗП/бонусов. Что будет прогеру если пойдет инфа о том, что эти данные вдруг стали общедоступными (а ведь руководство явно требовало, чтобы этого никто не видел)?Ничего не обойдет. Если так уж важно, то в теле запроса критичная колонка будет показываться или NULL-ится для разных пользователей. Если дело касается строк (например продажи "секретной организации"), то такие строки просто не будут выведены.

Но настройки такой безопасности выполнены на прикладных настройках моей системы, но никак не на чисто возможностях безопасности самой СУБД. В принципе примерно это же описано в ссылке.
Не суперкритичные колонки можно прятать в самом приложении. Иногда так проще.
...
Рейтинг: 0 / 0
Как организовать структуру бд с распределением прав.
    #36178525
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Заказчик требует как раз Линтер 6.0.

Я бы бежал от такого заказчика.

> при создании пользователя ему создается собственный views

Забавно. Общее количество вьюх = количество базовых х количество пользователей? Не страшно?
...
Рейтинг: 0 / 0
Как организовать структуру бд с распределением прав.
    #36178680
`ё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если уж так хочется по-заморачиваться -почитайте про мандатный доступ...
...
Рейтинг: 0 / 0
Как организовать структуру бд с распределением прав.
    #36179012
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVNafСильно зависит от возможностей СУБД
С уважением, NafНадо делать на уровне приложения. Ньансы СУБД - по минимуму (права на ХП, вью, таблицы, т.е. то что есть в любой СУБД).

Все равно всех приколов безопасности на СУБД не реализовать.
А если приложений много? А если есть приложения от стороонего по отношению к разработчмку производителю (например, от производителя СУБД), способные коннектиться и выполнять запросы к данной СУБД? Ить БД - предназначена в общем случае для многих приложений. Или кажное буит выполнять фунции СУБД по управлению данными? Так моно и дальше пойти: вынести всю информационную модель данных в приложения. И так было на заре баз данных, но пока от этого отошли.
...
Рейтинг: 0 / 0
Как организовать структуру бд с распределением прав.
    #36180940
Tosh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSV Ничего не обойдет. Если так уж важно, то в теле запроса критичная колонка будет показываться или NULL-ится для разных пользователей. Если дело касается строк (например продажи "секретной организации"), то такие строки просто не будут выведены.

Но настройки такой безопасности выполнены на прикладных настройках моей системы, но никак не на чисто возможностях безопасности самой СУБД. В принципе примерно это же описано в ссылке.
Не суперкритичные колонки можно прятать в самом приложении. Иногда так проще.
Хм ... так выделенное, кажется, и называется Row and Cell Level Security - тоесть то, на что была ссылка. А по поводу того как она организована - используя стандартные средства СУБД или какая-то собственная надстройка в виде педставления, хранимок и т.п. - это уже дело техники. Вам так не кажется?
...
Рейтинг: 0 / 0
Как организовать структуру бд с распределением прав.
    #36180943
бусь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vuliad
- Не совсем могу понять в каких субд имеется механизм RLS и что он там из себя представляет?


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

почитать можно например здесь
...
Рейтинг: 0 / 0
Как организовать структуру бд с распределением прав.
    #36181810
друг мой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ToshА что будет если злобный пользователь законнектится к вашей БД не через программу?а если с правами админа? а если похитит жёсткий диск с БД?)
...
Рейтинг: 0 / 0
Как организовать структуру бд с распределением прав.
    #36181907
Tosh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
друг мойToshА что будет если злобный пользователь законнектится к вашей БД не через программу?а если с правами админа? а если похитит жёсткий диск с БД?)
Физический доступ к серверу или пароль админа еще получить нужно, а вот какому-нить недохакеру хватит ума установить консоль управления и соединиться с сервером по своему имени пользователя и паролю ... а там - уже дело техники и усидчивости пользователя (можно и ЗП себе набить побольше ради прикола - все ведь имена таблицам даем более-менее осознанные).
В этом и есть большая проблема систем, построенных по принципу "толстого клиента" - если вся логика на клиенте, то и защита тоже тамже, а значит можно спокойно обойдя клиент лезть в базу в обход защиты.
Или вы, друг мой, можете привести пример, когда двухзвенное приложение (клиент<->сервер СУБД), не использующее никакой защиты доступа на самом сервере СУБД, может противостоять подобным трюкам пользователя? (Сразу оговорюсь - трюк с вшиванием имени и пароля в исполняемый код не приводить - где-то тут недалеко уже не один раз такая тема поднималась)
...
Рейтинг: 0 / 0
Как организовать структуру бд с распределением прав.
    #36182114
Фотография shelsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ToshВ этом и есть большая проблема систем, построенных по принципу "толстого клиента" - если вся логика на клиенте, то и защита тоже тамже, а значит можно спокойно обойдя клиент лезть в базу в обход защиты.
1) Знаете защитится от всего программно практически невозможно.

2) Если вы так подводите почтенную публику к аппсерверу то не не надо ... Однако хочу заметить что не смотря на всю нелюбовь товарища guest_20040621 к мелкомякгким и "Oracle - это игла, с которой не спрыгнуть" наличие встроенных движков в виде Net и Java дает возможность обойти то что уважаемый LSV обозначил словами "Все равно всех приколов безопасности на СУБД не реализовать" Т.е. поместить промежуточное звено в базу а из клиента сделать "толстый браузер"

3) Автору погуглите по словам "ролевой модели разграничения доступа". Возможно это вам поможет обойтись в проекте малой кровью. И очень плохо если вы изначально не зашили в структуру базы таблицы для разграничения прав доступа по данным исходя из вашей предметной области (о! мой грабель 12-ти летней давности
). У нас в конторе есть изначально типовые варианты под это дело основанные как раз на п. 3 которые кастомизируются под конкретный заказной проект.

P.S. по пункту 2 это можно сделать и в других СУБД допускающих создание расширений на языках высокого уровня. Но в силу "мейнстрима" ...



______________________________________________________
Давайте считать обступившее нас со всех строн коричневое море шоколадным
...
Рейтинг: 0 / 0
Как организовать структуру бд с распределением прав.
    #36182992
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> не смотря на всю нелюбовь товарища guest_20040621 к мелкомякгким

Это не нелюбовь, это отвращение.
...
Рейтинг: 0 / 0
Как организовать структуру бд с распределением прав.
    #36183052
Tosh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shelsoft
2) Если вы так подводите почтенную публику к аппсерверу то не не надо

ХДЕ???? Я даже и не думал про это. Аппсервер это, возможно, и решение, но очень накладное в плане разработки. Я имел ввиду, что если есть возможность использовать немного допиленный механизм СУБД по части RLS - его можно и, даже, возможно, нужно использовать.
PS: Просто сейчас именно с такой системой и имею проблемы - когда сначала вся безопасность была перенесена на клиента, а потом кто-то умный влез напрямую в базу и наделал косяков. Сейчас появилась необходимость прикрутить к базе RLS. Потому и предупреждаю о том, что рано или поздно подобные ситуации случаются практически со всеми более-менее крупными системами.
...
Рейтинг: 0 / 0
Как организовать структуру бд с распределением прав.
    #36189984
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVКак например некот. пользователям не дать возможность увидеть важную колонку в таблице,
(пожимая плечами) Штатная функциональность.

LSVА если потом станет ребром вопрос перехода на СУБД без Row-Level Security ? Зострелиццо штоле ?
Нет. Запросить кучу денег за тот ненадёжный геморрой, который Вы предлагаете писать сразу и бесплатно.

LSVНичего не обойдет. Если так уж важно, то в теле запроса критичная колонка будет показываться или NULL-ится для разных пользователей.
Какого запроса? Который он руками напишет в базу?

LSVНе суперкритичные колонки можно прятать в самом приложении. Иногда так проще.
"Не суперкритичные" - это новое слово в безопасности. Напоминающее про "осетрину второй свежести". Типа "если в девяти местах колонка не показывается, а в десятом программист про это забыл, то ничего страшного - она ведь не суперкритичная".

shelsoft1) Знаете защитится от всего программно практически невозможно.
Да и аппаратно тоже. Если не относить к аппаратуре бронедверь и топор для перерубания витой пары :)

Речь о том, что в сколько-угодно-звенном приложении размещение защиты не на самом дальнем звене (то есть не в СУБД) дает возможность лёгкого получения данных всем, кто имеет возможность пройти мимо предыдущих звеньев. Не взламывая их, а обойдя. В случае и клиент-сервера и аппсервера - любому, кто имеет прямой коннект к машине сервера БД.
...
Рейтинг: 0 / 0
Как организовать структуру бд с распределением прав.
    #36190181
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Речь о том, что в сколько-угодно-звенном приложении размещение защиты не на самом дальнем звене (то есть не в СУБД)
> дает возможность лёгкого получения данных всем, кто имеет возможность пройти мимо предыдущих звеньев. Не взламывая
> их, а обойдя. В случае и клиент-сервера и аппсервера - любому, кто имеет прямой коннект к машине сервера БД.

Вас-то кто заставляет писать глупости? При грамотных политиках SELinux даже root не получит локального соединения с СУБД, не говоря о прочих юзерах.
...
Рейтинг: 0 / 0
Как организовать структуру бд с распределением прав.
    #36190193
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621Вас-то кто заставляет писать глупости? При грамотных политиках SELinux даже root не получит локального соединения с СУБД, не говоря о прочих юзерах.
Согласен, мне стоило выразиться более чётко.
...
Рейтинг: 0 / 0
Как организовать структуру бд с распределением прав.
    #36193160
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 TC
Суть в том, что права на чтение базовой таблицу не даются НИКОМУ (кроме суперпользователя) При реализации от Oracle (за деньги) даже владелец таблицы не сможет ее прочесть. При ручной реализации (через вьюху например) владелец таблицы становится еще одним суперпользователем.
...
Рейтинг: 0 / 0
Как организовать структуру бд с распределением прав.
    #36193170
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vuliadИмеется своя таблица с логинами и правами, при коннекте вызывается процедура, которая в соответствии с правами вносят туда SessionID и ID доступных отделов. А в представлении запрос вида Select OTDELbl.* from OTDELbl,ACS_OTD where OTDELbl.id=ACS_OTD.id and Session=SessionID.При самодельной реализации безопасности таблицы должны быть
1 Пользователи,
2 роли (группы пользователей),
3 пользователи по ролям,
4 объекты (отделы, филиалы, таблицы, папки),
5 группы объектов,
6 объекты по группам,
7 действия (могут быть объединены с ролями)
7 роли-группы объектов-действия
Что самое забавное без этого не обойтись при любой реализации RLS.

Ну и вьюха типа
Код: plaintext
1.
2.
3.
4.
create view v_base_table as
 select * from base_table
 where exists (select * from role_group_xref r where r.action='SELECT' and user_name=USER) 
and (some paranoic condition)

Сессия никуда не пишется, при коннекте определяется? кто подцепился из списка пользователей
...
Рейтинг: 0 / 0
Как организовать структуру бд с распределением прав.
    #36215582
pavelvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно заказчик не просто так требует использовать ЛИНТЕР? Может всё, что вам нужно, можно реализовать средствами этой СУБД?
Документация СУБД ЛИНТЕР®
Описание модели расширенной защиты данных
Расширенные средства защиты данных
...
Рейтинг: 0 / 0
29 сообщений из 29, показаны все 2 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как организовать структуру бд с распределением прав.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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