|
|
|
метки безопасности и принудительный контроль доступа
|
|||
|---|---|---|---|
|
#18+
Добрый день! Так это называется по научному:-), а по простому-права доступа на отдельные строки. Такое на MSSQL можно написать только руками:-(, подскажите, где можно почитать про конкретные реализации в инете или кто может для себя такое делал. Ссылок поисковик выдает немного, да и в тех, в основном теория PS INGRES/Enhanced Sequrity не предлагать:-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2002, 17:52:16 |
|
||
|
метки безопасности и принудительный контроль доступа
|
|||
|---|---|---|---|
|
#18+
Я делал, могу рассказать. Систему доступа нагло содрал с Новелл Нетваре 4.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2002, 18:27:00 |
|
||
|
метки безопасности и принудительный контроль доступа
|
|||
|---|---|---|---|
|
#18+
2 YellowMan конечно рассказать! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 10:43:10 |
|
||
|
метки безопасности и принудительный контроль доступа
|
|||
|---|---|---|---|
|
#18+
нашел немного про права здесь http://www.ibase.ru/devinfo/oop_rdbms.htm , но хотелось бы конкретный пример и с использованием ролей и юзеров сервера ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 17:23:09 |
|
||
|
метки безопасности и принудительный контроль доступа
|
|||
|---|---|---|---|
|
#18+
Такое на MSSQL можно написать только руками:-(, Такое на MSSQL можно реализовать с помощью VIEW и\или процедур, и не только для строк но и для столбцов тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 17:27:32 |
|
||
|
метки безопасности и принудительный контроль доступа
|
|||
|---|---|---|---|
|
#18+
Дополню "Genady":\r \r Есть еще UDF, разрешения можно выдать на их выполнение, а не на таблицы...\r На столбцы, по-моему, SQL Server давно позволяет выдавать разрешения.\r \r Удачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 17:36:16 |
|
||
|
метки безопасности и принудительный контроль доступа
|
|||
|---|---|---|---|
|
#18+
На столбцы, по-моему, SQL Server давно позволяет выдавать разрешения. Да, действительно, упустил из виду, но это уже немного не по теме. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 17:39:19 |
|
||
|
метки безопасности и принудительный контроль доступа
|
|||
|---|---|---|---|
|
#18+
Я по такой схеме делал: - создал таблицу ассоциаций, где связал группы записей с системным именем пользователя (необходимо использовать Win NT авторизацию!) - создал представление, выводящее группы записей согласно асоциации - запретил прямой доступ к таблице Вот так (на примере системной таблицы sysobjects): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. Такая схема позволяет создавать произвольные группы записей, разрешенные для конкретных пользователей. Механизм фильтрации работает прозрачно и не зависимо от клиентского приложения, так что юзер может и не знать, что видит не все данные из таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 17:54:47 |
|
||
|
метки безопасности и принудительный контроль доступа
|
|||
|---|---|---|---|
|
#18+
Эх!... Я год назад эту тему подымал... Была длинная дискуссия. В итоге ничего лучше того, чем скопировать схему защиты SQL Server'а я не придумал. Видимо, все хорошее просто – таблица разрешений и все… Вероятно, Вы раздаете разрешение все-таки на классы записей (т.к. xtype это не уникальное поле), что говорит о том, что число записей в acl будет сопоставимо с числом записей в защищаемых таблицах если раздавать разрешения на индивидуальные записи (т.к. вместо xtype тут будет PK из защищаемой таблицы). Windows Authentication тут не столь принципиальна (вот где без нее никак - так это если в Представлении использовать SYSTEM_USER). Кроме того, Пользователь, вероятно, поймет, что ему вернули не все записи из таблицы только потому, что он опрашивает Представление, а не саму таблицу. Удачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 18:12:11 |
|
||
|
метки безопасности и принудительный контроль доступа
|
|||
|---|---|---|---|
|
#18+
2 jimmers Вы правы - данный пример показывает, как можно манипулировать именно группами записей. В реальной же БД все несколько сложнее - там я использую еще одну таблицу, где ID записей ассоциируются в группы, причем одна и та же запись может входить в несколько групп. Естественно, что такое решение приемлемо для сравнительно небольших таблиц, и для моего случая - то что доктор прописал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 18:20:24 |
|
||
|
метки безопасности и принудительный контроль доступа
|
|||
|---|---|---|---|
|
#18+
2jimmers Кроме того, Пользователь, вероятно, поймет, что ему вернули не все записи из таблицы только потому, что он опрашивает Представление, а не саму таблицу. Ну у вас и наглые пользователи :))), а накой им знать то про таблицы - ето наше дело где что лежит и куда смотрит ,а им нефиг видеть что их не касаеться:)) ЗЫ У меня безопастность реализованна по смыслу близко к Jimmy + view ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 18:42:55 |
|
||
|
метки безопасности и принудительный контроль доступа
|
|||
|---|---|---|---|
|
#18+
У нас сделано примерно так: Для каждого ресурса (таблицы, класса и т.п.) определяется набор именованых прав. В правах на модификацию данных (Insert, Update, Delete) можно записать строки Select-ов, которые должны выполняться до и после модификации. Потом эти права раздаются пользователям/группам. Если право не дано, то обламываем сразу. Если право дано и Select возвращает что-нибудь (либо не задан), то считаем, что есть такое право. Например: Код: plaintext 1. 2. 3. при праве на Update означает, что дано право на измененение только объектов, находящихся в цехе 02-01. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2002, 05:26:08 |
|
||
|
метки безопасности и принудительный контроль доступа
|
|||
|---|---|---|---|
|
#18+
на мой взгляд юзера сохранять, как носителя прав нельзя т.к. его могут уволить, не разумнее ли взять все его роли первого уровня? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2002, 12:01:35 |
|
||
|
метки безопасности и принудительный контроль доступа
|
|||
|---|---|---|---|
|
#18+
2 TUnknown А что, после увольнения логины на MS SQL остаются? Интересное кино! Конечно, можно исходить из того, что админ забыл удалить его из списка, но такого админа нужно в шею гнать. Ну и (в моей схеме, во всяком случае) проще использовать ниладическую функцию SYSTEM_USER, чем париться и добывать список ролей, к оторым пользователь относится. ИМХО конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2002, 12:06:37 |
|
||
|
метки безопасности и принудительный контроль доступа
|
|||
|---|---|---|---|
|
#18+
2 Jimmy >>Конечно, можно исходить из того, что админ забыл удалить его из списка, но такого админа нужно в шею гнать. Ну и (в моей схеме, во всяком случае) проще использовать ниладическую функцию SYSTEM_USER, чем париться и добывать список ролей, к оторым пользователь относится. далее только ИМХО и более абстрактно:-) права на объекты -это вещь, которую нужно стараться максимально сделать независимой от быстроменяющихся сущностей, уж если нужно дать права отдельному пользователю на запись, то это должно быть скорее исключением, чем правилом ведь админ сервера и базы могут быть разными людьми, и нужно стремиться, чтобы работа лежала преимущественно на ком-то одном с ограниченными полномочиями, а не размазывать отвественность на нескольких хотя полностью уйти от указания чего либо для юзеров не получится. как ,например, указать права юзера в его роли(по отношению к другим членам) в НТ есть всякие админы, аккаунт админы, принт операторы и т.д., а в MSSQL встроенные роли для прав на отдельные строки не подходят или я в чем-то не прав? PS просто хочу слишком сладкого: сделать такие права, чтобы они позволяли много, но не отходя от ролей:-))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2002, 12:54:48 |
|
||
|
метки безопасности и принудительный контроль доступа
|
|||
|---|---|---|---|
|
#18+
PS если юзера перевели из отдела в отдел, следовательно, вынули и переложили из ролей в роли, снапшот ролей юзера на момент записи строки остался неизменным, а вот юзер уже записи не видит действие администратора сервера, а база только этим пользуется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2002, 12:58:02 |
|
||
|
метки безопасности и принудительный контроль доступа
|
|||
|---|---|---|---|
|
#18+
Я придерживаюсь такого принципа: Сделать все максимально просто. Конечно, можно извратиться и создать очень гибкую систему прав, которая ..... А во что это выльется? Тонны кода, километры листингов и стада ошибок. (ИМХО конечно.) ЗЫ Для моей конкретной задачи решение было найдено, и оно меня устроило. Естественно, что ты сам должен выбрать, что подходит именно тебе. Так что спорить - не имеет смысла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2002, 13:01:19 |
|
||
|
метки безопасности и принудительный контроль доступа
|
|||
|---|---|---|---|
|
#18+
Я сделал так - в базе были выделены объекты, ну пусть документ, картинка, фолдер. Примеры от балды. Каждый объект имеет владельца (пользователя). Пользователи объединены в дерево. Каждый пользователь имеет набор прав - посмотреть, отредактировать, удалить и так далее. У пользователей есть также права на своих пользователей (детей). Реализованно наследование прав и механизм прямых ссылок - вроде как внучек из соседней ветки может получить права на Вас. Сейчас в системе около 5К пользователей и около 300 ссылок. Вся работа с базой идет через SP. В каждую передается userID и на основе его фильтруются записи в запросах. Недостатки - медленно в первый ра (я кеширую права), много кода, который понимаю только я, в будущем может стать горлышком бутылки с производительностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2002, 14:37:45 |
|
||
|
метки безопасности и принудительный контроль доступа
|
|||
|---|---|---|---|
|
#18+
если юзера перевели из отдела в отдел, следовательно, вынули и переложили из ролей в роли, снапшот ролей юзера на момент записи строки остался неизменным, а вот юзер уже записи не видит Получается, что права доступа распределяются между должностями. Нужно просто слегка модернизировать ассоциативную модель, предлагаемую Jimmy, и вместо SYSTEM_USER хранить ключ должности. При этом проверка на принадлежность юзера к должности берётся из собственной таблицы юзеров. Хотя в принципе можно и комбинировать. Я бы ещё добавил в таблицу ассоциаций два поля: объект - наименование поля('sysobjects.xtype') операция - допустимое действие ('S'/'I'/'U') и сделал бы поле значения типом sql_variant. Получили универсальную модель для любого объекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2002, 15:02:30 |
|
||
|
метки безопасности и принудительный контроль доступа
|
|||
|---|---|---|---|
|
#18+
как я понимаю из обсуждения, возможность доступа через view отсекается, как малозначительная? процедура-это конечно хорошо, но лишаться из-за прав доступа view не хочется права доступа на столбцы- для моего случая это слишком круто, тут, видимо, только процедуры помогут а как вы рассмотривате такой вариант: таблица Orders(ордера, клиенты или что угодно) Id, primary key <other> таблица Rights OrderId, foreign key Group, MSSQL role Access битовая маска Select/update/delete view ... from Orders left outer join Rights on OrderId=Id group by ... having sum(is_member(Group))<>0 вот еще где-то нужно приткнуть Access:-) и будет порядок. Если учитывать Access, то придется к каждой связке Role,User приписать его права в этой группе. Это не очень хорошо, т.к. при удалении юзера такая связка останется, но за все надо платить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2002, 17:31:22 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32047873&tid=1820613]: |
0ms |
get settings: |
4ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
43ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 321ms |

| 0 / 0 |
