Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Разделение прав доступа
|
|||
|---|---|---|---|
|
#18+
Вопрос вот созрел, по правам доступа. Хотелось бы организовать доступ к базе с разделением полномочий. Можно выдать права на всю таблицу, но это не подходит, т.к. слишком много там служебной и просто "секретной" информации для определенных ролей пользователей. Вариан создать множество view, не нравиться, из-за необходимости создавать практически под каждую роль свой набор view. И не понятно потом, как создавать единый программный интерфейс для доступа к базе... подумал над созданием единого интерфейса, который бы в зависимости от пользователя выдавал необходимые поля, например создать view со следующим запросом: selece case when user in ('vasya') then password else '' end AS password, case when user in ('vasya','petya') then login else '' end AS login from table1 и так сформировать некий абстрактный интерфейс для доступа к базе. Вот только думаю, может велосипед изобретаю? Может кто уже сталкивался с чем-подобным и имеем какой-нибудь опыт? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2004, 18:13 |
|
||
|
Разделение прав доступа
|
|||
|---|---|---|---|
|
#18+
Таких глобалистских желаний пока не возникало разве что идея : Есть вьюшка регистраций пользователей - каждое новое подключение при логине добавляет в нее строку - регистрируется - (при этом можно отбить подключение если кто-то с таким логином уже есть или логин забанен) - однако если все нормально - проверяется статус пользователя и динамическим сиквелом создаются вьюшки для него. Тут основная проблема-корректно чистить эти вещи в соответствии с существующими форками постгреса. Но мне кажется это вполне решаемо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2004, 15:55 |
|
||
|
Разделение прав доступа
|
|||
|---|---|---|---|
|
#18+
авторЕсть вьюшка регистраций пользователей - каждое новое подключение при логине добавляет в нее строку - регистрируется view же r/o. как можно в нее что-то добавить? Покрайне мере в 7.4.1 они еще r/o. Или я не догоняю? ;( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2004, 12:21 |
|
||
|
Разделение прав доступа
|
|||
|---|---|---|---|
|
#18+
автори так сформировать некий абстрактный интерфейс для доступа к базе. А схемы это не то? Я ими не пользовался пока, но кажется, что это именнг оно и есть... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2004, 12:23 |
|
||
|
Разделение прав доступа
|
|||
|---|---|---|---|
|
#18+
2 Maxim Timofeyev Maxim Timofeyev view же r/o. как можно в нее что-то добавить? пишите RULE на INSERT и (если надо) на UPDATE (а вью - это нынче RULE "_RETURN" AS ON SELECT TO "имя_вьюхи" DO INSTEAD ... ) к примеру у меня работает: CREATE OR REPLACE RULE "_INSERT" AS ON INSERT TO tree_leaf DO INSTEAD (INSERT INTO tree (id, pid, pos, uname_create, uname_modify, date_create, date_modify, status ) VALUES (new.id, new.pid, new.pos, new.uname_create, new.uname_modify, new.date_create, new.date_modify, new.status ); INSERT INTO leaf (id, aid, company, kind, date, name, description, search_name, leaf_from, leaf_to, currency, value, payment_kind, planfact ) VALUES (new.id, new.aid, new.company, new.kind, new.date, new.name, new.description, new.search_name, new.leaf_from, new.leaf_to, new.currency, new.value, new.payment_kind, new.planfact ); ); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2004, 12:46 |
|
||
|
Разделение прав доступа
|
|||
|---|---|---|---|
|
#18+
Делать доступ не через view, а через процедуры, в которые передавать id пользователя, скажем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2004, 20:15 |
|
||
|
Разделение прав доступа
|
|||
|---|---|---|---|
|
#18+
> Хотелось бы организовать доступ к базе с разделением полномочий. Выбираешь ssa модель - и реализуешь ее в базе данных. Посмотри на ibase.ru - по этому поводу была статья. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2004, 14:47 |
|
||
|
Разделение прав доступа
|
|||
|---|---|---|---|
|
#18+
PostgreSQL user> Хотелось бы организовать доступ к базе с разделением полномочий. Выбираешь ssa модель - и реализуешь ее в базе данных. Посмотри на ibase.ru - по этому поводу была статья. Что есть и как расшифровывается SSA??? Не знаю. Единственный материал посвященый сабжу и расположенный на ibase.ru предлагает два пути решения проблемы ACL(Access Control Lists) и RWD - по аналогии с используемыми в WinNT(W2K/Xp) и Unix методами разделения доступа к файлам. http://www.ibase.ru/devinfo/treedb2.htm IMHO схема RWD (Read Write Delete/Drop??) по многим признакам идеально подходит для реализации в Postgres. У кого есть другие мнения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 18:22 |
|
||
|
Разделение прав доступа
|
|||
|---|---|---|---|
|
#18+
>> Хотелось бы организовать доступ к базе с разделением полномочий. Работал на Oracle счас много делаю на Postgres. Механизм работы описанный ниже - не только мой стить - стиль многих коллективов разработчиков в финансовой сфере... Общая безопасность и доступ к обьектам : 1. На все таблици существуют вьюхи и клиент читает только их, тем более часто в разработках плоские таблици используются редко (только справочники некоторые - все равно есть вьюхи), организация связи таблиц тож во вьюхах. Прав на таблици у клиентов вообще никаких нет. В итоге имеем для чтения данных только вьюхи. 2. Модификация данных только через функции. Во первых всю бизнес логику я размещаю только на серваке, во вторых всяческие проверки/валидности тож на серваке. Функцию создаем с опцией - например SECURITY DEFINER - она будет работать с правами создателя, юзеру дадим права только на выполнение функции. В итоге модификация данных происходит по строгим правилам описанным в функции. При этом имеем общую информационную безопасность и технологическую аккуратность даже при самом простом интерфейсе - притом не важно на чем, по такой схеме у меня работает и WEB интерфейс и проги на Delphi. Теперь про разделение полномочий юзверей: 1. Можно сделать свою табличку юзверей и много колонок с различными признаками (о синхронизации создания юзверя в табличке и на сервере я рассказывать не буду). Создаеш функции проверки всяки какие угодно и ... 2. Для чтения нужных строк во вьюхе(она уже готова) вставляеш например "where check_read_record(user) = 1" - "check_read_record" - это название функции которую сделаеш. 3. Для модификации данных в процедуре вставляеш например " if (check_add_record(user) = 0) then RAISE EXCEPTION \'У вас нет прав на добавление записи !\'; end if; " В итоге имеем все разделения по полномочиям и правам. Единственное для интерфейса например для подсветки или погашения кнопочек необходимо делать выборку по полномочиям. Николай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 10:27 |
|
||
|
Разделение прав доступа
|
|||
|---|---|---|---|
|
#18+
> ACL(Access Control Lists) и RWD Оно. Только "в лоб" использованить ни то, ни другое не рекомендую. > IMHO схема RWD (Read Write Delete/Drop??) по многим признакам идеально > подходит для реализации в Postgres. Она подходит для реализации в любой реляционной СУБД. На самом деле, проблема прав по отношению к объекту и проблема разграничения доступа - две разные проблемы. Важно это понимать. То, что описал Николай постом выше - хорошее решение, но несколько однобокое. ;) Попробуй его реализовать - поймешь, почему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2004, 16:21 |
|
||
|
Разделение прав доступа
|
|||
|---|---|---|---|
|
#18+
2 guest_20040621 > То, что описал Николай постом выше - хорошее решение, но несколько > однобокое. ;) Попробуй его реализовать - поймешь, почему. Я думаю не только мне хотелось бы услышать мнение об однобоком решении публично. Зачем изобретать велосипед дважды - может ваше обьяснение поможет кому-то (не только мне), а может не только поможет но и направит на свежую струю - на то он и форум. Без сарказма - хотелось бы услышать ваше мнение. Николай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 15:54 |
|
||
|
Разделение прав доступа
|
|||
|---|---|---|---|
|
#18+
ОК, Николай, если интересно: > На все таблици существуют вьюхи и клиент читает только их Это хорошо, но иногда требуется писать. ;) > Модификация данных только через функции. Это тоже хорошо. Только накладывает ограничения на dbms. > where check_read_record ... Хм... оно конечно тоже правильно. А если потребуется не rwe, а более сложная модель? Все переписывать? ;) Почему, собственно, и было сказано: хорошо, но для конкретной реализации, а не для общего решения. В общем случае я порекомендовал бы поддерживать традиционную трехуровневую security model: 1. dbms. Варианты в зависимости от задачи. 2. Интерфейс. Похоже на описанную Вами проверку, но чуть более универсально. 3. Данные. Тоже варианты в зависимости от задачи. Реализовав такую модель один раз, ее можно использовать для любых решений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2004, 02:03 |
|
||
|
Разделение прав доступа
|
|||
|---|---|---|---|
|
#18+
А что мешает вьюхи сделать обновляемыми? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2004, 14:11 |
|
||
|
Разделение прав доступа
|
|||
|---|---|---|---|
|
#18+
2 guest_20040621 И все же не совсем понял - каковы ограничения ? >> На все таблици существуют вьюхи и клиент читает только их > Это хорошо, но иногда требуется писать. ;) У меня не требуется - не даю в силу того что шаловливые ручки зная свой пароль могут например через драйвер ODBC и Excel или Acces получить доступ к разрешенному обьекту. Ето если делать нормально, можно конечно сделать изначальный вшитый вход с универсальным паролем в морде - строил и так - но не считаю что это хорошо. Ну это утрировано ... Нет у меня запросов со словами insert, update, delete. >> Модификация данных только через функции. > Это тоже хорошо. Только накладывает ограничения на dbms. Не накладывает - вы строите свой универсальный механизм проверки полномочий на базе той самой "таблички юзверей", можно и с наследованием - хозяин барин. Если речь идет о DBMS как о некоей морде в которой с правами админа можно менять структуру метаданных - этот универсализм подходит к софтверным фирмам, только не ко мне в частности, ибо вопросы оптимизации по скорости мне не чужды и логику размазывать между мордой сервером я не буду - пусть сервак пашет. >> where check_read_record ... >Хм... оно конечно тоже правильно. А если потребуется не rwe, а более >сложная модель? Все переписывать? ;) Про тоже - во фразе выше. А если сильно меняется технология - да, что-то может придется поправить, а сколько править зависит от того как спроектировать. А перестраивать универсальный механизм не больше времени займет ? - из практического опыта - больше. А что значит сложная модель? Банковская система, в частности мое направление карточный бэкофис и процессинг - это какой уровень сложности ? >Почему, собственно, и было сказано: хорошо, но для конкретной реализации, >а не для общего решения. Согласен в том что для продажи такой системы - не будет хорошо. Для реализации своей системы на предприятии - хорошо, быстро, удобно, сопровождаемо. Может я чего не понял в однобокости такого решения и вашего понимания DBMS? Николай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2004, 18:10 |
|
||
|
Разделение прав доступа
|
|||
|---|---|---|---|
|
#18+
> У меня не требуется Вот и я о _Вашем частном случае_. В _Вашем частном случае_ писать в базу не требуется. Согласитесь, для большинства баз данных это не есть характерное требование. > - не даю в силу того что шаловливые ручки зная свой > пароль могут например через драйвер ODBC и Excel или Acces получить доступ к > разрешенному обьекту. Хороший пример. Вот для решения этой проблемы 1-й уровень модели и предназначен: дать пользователю (любому) ровно стольно прав, сколько нужно. На самом деле, это не так сложно, как может показаться. > Не накладывает - вы строите свой универсальный механизм проверки полномочий > на базе той самой "таблички юзверей", можно и с наследованием - хозяин барин. Не все dbms поддерживают функции. Как хранить пользователей с их параметрами - вообще дело десятое. Хоть в текстовом файле на шифрованном разделе диска - не принципиально. > Если речь идет о DBMS как о некоей морде в которой с правами админа можно > менять структуру метаданных Да нет, о вполне себе реляционной dbms в традиционном понимании и традиционном использовании. > А перестраивать универсальный механизм не больше времени займет ? Вообще нисколько времени не займет. То есть буквально - ни секунды. ;) > А что значит сложная модель? Под сложной моделью имелся в виду отличный от традиционного набор прав (традиционно rwe, однако, никто не мешает добавить modify, например) и уровней доступа. Плюс фичи типа наследования и прочего хлама. Плюс... на этом пока остановимся. ;) > Для реализации своей системы на предприятии - хорошо, быстро, удобно, > сопровождаемо. В сравнении с чем? Представьте себе количество геморроя при переходе с PostgreSQL на, скажем, db2. Не думаю, что Вы вспомните о том, что это было "хорошо", "быстро", "удобно" и "сопровождаемо". ;)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2004, 19:58 |
|
||
|
Разделение прав доступа
|
|||
|---|---|---|---|
|
#18+
2 guest_20040621 >> У меня не требуется > Вот и я о _Вашем частном случае_. В _Вашем частном случае_ писать в базу > не требуется. Согласитесь, для большинства баз данных это не есть > характерное требование. Писать не в базу а во вьюху - невнимательно читали первый пост. Как раз одна из причин - сложные транзакции где проходят изменения по нескольким таблицам и приводит к применению функций. А одна транзакция и пару страниц текста в транзакции - это и есть читабельность кода, понятность действий и простота обслуживания >> Для реализации своей системы на предприятии - хорошо, быстро, удобно, >> сопровождаемо. >В сравнении с чем? >Представьте себе количество геморроя при переходе с PostgreSQL на, >скажем, db2. Не думаю, что Вы вспомните о том, что это >было "хорошо", "быстро", "удобно" и "сопровождаемо". ;)) На предприятиях со своим софтом - переход с базы на базу редкость и это серьезное решение. У меня был переход с InterBase на MSSQL2000 в крупном учебном центре. Занял переход 3 дня. Клиенты практически не менялись - только один обьект - соединение к другой базе. Ибо все остальное например "select ..." или "exec ..." без изменений. А переписать синтаксис процедур даже просто и приятно - лишни раз синтаксис повториш. В сравнении - например нам принесли демку системы клиент-банк. Крутая типа куча баз MySQL, Oracle, MSSQL. Ну поставил я на Oracle - ни одного пакета, ни одной функции или триггера. Использовать такой сервер как хранилище табличек - извращение. А требования для клиента немеренные и сетку трафиком забивает - врагу не пожелаеш. Примочка - DBMS. А кому это надо. Да для продажи круто - бедные узвери. Ну думаю все это субьективные мнения и все остальное превращается во флейм. По крайней мере у задавшего вопрос есть пару вариантов пусть пробует. Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2004, 10:47 |
|
||
|
Разделение прав доступа
|
|||
|---|---|---|---|
|
#18+
> На предприятиях со своим софтом - переход с базы на базу редкость и это > серьезное решение. Предприятие - вообще субстанция изменчивая. И на моей памяти таких переходов было достаточно. > У меня был переход с InterBase на MSSQL2000 в крупном учебном центре. > Занял переход 3 дня. Простенькая информационная система промышленного применения - табличек 500… 700. Очень хочется посмотреть, как Вы за три дня переведете ее на другую платформу. > В сравнении - например нам принесли демку системы клиент-банк. Вы эту систему не разрабатывали, не поддерживали и не обслуживали. С чем что сравниваем? > Крутая типа куча баз MySQL, Oracle, MSSQL. Ну поставил я на Oracle - ни одного > пакета, ни одной функции или триггера. А Вы не задумались, почему именно так написано? > Использовать такой сервер > как хранилище табличек - извращение. Видимо, разработчики так не думали. Imho, правильно делали. > А требования для клиента немеренные и > сетку трафиком забивает - врагу не пожелаеш. А вот это уже кривой дизайн. > Ну думаю все это субьективные мнения и все остальное превращается во флейм. А здесь других мнений не бывает. И флеймом пока не пахнет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2004, 13:22 |
|
||
|
Разделение прав доступа
|
|||
|---|---|---|---|
|
#18+
IMHO last two posts - is lazy suckers sheet. No help no ideads - but many words ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2004, 15:33 |
|
||
|
Разделение прав доступа
|
|||
|---|---|---|---|
|
#18+
guest_20040621 в ваших постах кроме общей воды на тему - как красиво делать все универсально, многоуровнево и пр пр пр нету ни одной дельной мысли или совета. Имхо, это дилетантство, тем более под гестом. все мы умные и начитались книжек про сложные теоретические модели и прочую слоеную бурду. А вот как доходит дело до реализации - все и всплывает, и осознаешь, после 5 лет обучения в институте - как далека теория от практики. И все умные книжки про моделирование систем не несут никаких идей для практического применения. Хотя бы намеков... теория красива, а вот в реализации - уродлива. Следуя принципам ХР (eXtreme Programming) - программа должна выполнять поставленую перед ней задачу, а реализация чем проще - тем лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2004, 21:42 |
|
||
|
Разделение прав доступа
|
|||
|---|---|---|---|
|
#18+
> в ваших постах кроме общей воды на тему - как красиво делать все > универсально, многоуровнево и пр пр пр нету ни одной дельной мысли или > совета. Все есть, читайте внимательнее. Если нужны конкретные схемы и реализации - $120 академический час по предварительной записи. При условии, что мне Ваша проблема покажется интересной. > Имхо, это дилетантство, тем более под гестом. Не читайте, в чем проблема? > все мы умные и начитались книжек Судя по вопросам и большинству ответов - к сожалению, не все. > И все умные книжки про моделирование систем не несут никаких идей для > практического применения. Да ну? Что-то не то Вы читаете. Все, что нужно, есть у Дейта. Абсолютно. Дальше - исключительно проблемы предметной области + немного стандартов. > Следуя принципам ХР (eXtreme Programming) - программа должна выполнять > поставленую перед ней задачу, а реализация чем проще - тем лучше. Хм... дружище, Вы действительно читаете не те книжки. Забудьте про XP, - это часть UP, причем, тупо выдранная из контекста. Оно Вам надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2004, 15:14 |
|
||
|
Разделение прав доступа
|
|||
|---|---|---|---|
|
#18+
Добрый день. У меня вопросик, как раз по теме. Я сам всегда пишу функции, для вставки, апдейта и удаления. Столкнулся со следующим. Завёл нового пользователя. Дал права на функции. Ничего не работает. Пока не дал права на все таблицы, триггеры и прочее, используемое в этих функциях. Оно так и должно работать, или я что-то не так сделал? Второе: вьюхи это несомненно хорошо. Но я всё же не понимаю, как ими пользоваться в многопользовательском режиме? Ведь для каждого пользователя получается надо писать свою вьюху? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2007, 18:57 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=32437685&tid=2005219]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 370ms |

| 0 / 0 |
