Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Проектирование системы секьюрити
|
|||
|---|---|---|---|
|
#18+
Господа, доброго времени суток. Существует система документооборота, к которой необходимо прикрутить секьюрити средствами БД. Хотел посоветоваться как это лучше сделать и какие технологии предпочтительней использовать. Дело в том, что : 1. Секьюрити необходимо разработать на уровне записей таблице (в том числе). Если бы задача стояла использовать ограничения на столбцы или таблицы, то это одно... но здесь нужно и на записи также. Так как предположим есть некоторый общий журнал документов и однин юзер должен видеть в нем некоторые записи - другой же нет. 2. Секьюрити должно быть построено не на пользователях, а на группах. Пользователи прямых привелегий не имеют. Все работает только на уровне групп. 3. Один пользователь может входить в несколько групп сразу. 4. Реализовать это дело необходимо для Оракла (9) и СКЛ Сервера(2000). Что можно было бы использовать? Мне очень смутно представляется такая схема: 1. Все таблицы создаются только под админовским экаунтом (в его схеме) 2. Когда происходит грант группе на доступ к какой-либо таблице, то : а) на самом деле админовская схема (экаунт) создает например хранимую процедуру, которая будучи создана администратором имеет полный доступ к необходимой таблице, б) уровень доступа к записи (SELECT, INSERT, UPDATE, DELETE) ограничивает внутри своего кода. в) Затем на эту хранимую процедуру даются права EXECUTE группе. Так происходит грант. г) Сама хранимая процедура должна возвращать видимо курсор с выбранными данными 3. На вход хранимой процедуры должны поступать условия выборки данных, к которым она сама будет прибавлять ещё свое WHERE, где будет каким-либо условием ограничивать область видимости выбираемых данных, т.е. чтобы они выбирались только из тех, что видны пользователю. Как реализовать вот это самое ограничение области видимости (WHERE) непонятно. Очевидно, что нужно прибавить к каждой таблице метаданных системы по столбцу, по которому собственно и будет происходить ограничение видимости.. типа ID_GROUP. НО так как количество групп не постоянно (они создаются, удаляются, меняются их привелегии), то одним столбцом четко идентифицирующим группу не обойдешся.. Можно в этом столбце на битовом уровне содержать маску, которая бы описывала бы все группы, имеющие отношение к этой записи, а затем идти в спец. таблицу метаданных описывающих группы и их права и считывать все эти вещи отдельно.. Короче, что-то все слишком мутно и сложно... - одни расплывчатые идеи. В Оракле смотрел Fine Granted Access Control - вроде и подходит и не подходит.. - непонятно. Что смотреть у МС СКЛ не знаю. Далее.. Если делать секьюрити на уровне записей, когда, как в моем случае, рекордсеты транслируются через уровень хранимых процедур + условие WHERE довольно сложное и идет по нескольким таблицам, подразумеваю, что должно быть бешенное падение производительности - она же имеет очень серьезный приоритет (производительность). Возможно каким-то образом можно привинтить материализованные вью или ещё что, что позволит оставить скорость выборки данных на уровне.. В общем, вот такие мысли.. Наверняка кто-то уже сталкивался с подобными задачами и успешно решал их - буду рад конструктивному диалогу. PS Хочется решить задачу применительно к каждой из описываемых СУБД отдельно, используя самые сильные её стороны, заточенные специально для данных задач. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2004, 08:42 |
|
||
|
Проектирование системы секьюрити
|
|||
|---|---|---|---|
|
#18+
В форуме по мсскл уже все тебе рассказали, можно еще предложить такую схему Код: 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. Можно также: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2004, 12:00 |
|
||
|
Проектирование системы секьюрити
|
|||
|---|---|---|---|
|
#18+
Можно SP, но по-моему проще использовать предствления, это позволит тебе определять допуск к подмножеству строк в таблице и задавать как угодно сложные правила доступа, а в случае крайней необходимости можно безболезненно поменять предсталение. К таблицам напрямую лучше никого не пускать, появляется много ненужных проблем, представления ничем не хуже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2004, 04:08 |
|
||
|
|

start [/forum/topic.php?fid=32&tid=1546572]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
173ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 275ms |

| 0 / 0 |
