powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Реализация системы безопасности
16 сообщений из 16, страница 1 из 1
Реализация системы безопасности
    #33150324
Демиург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день

Хотел спросить у знающих товарищей, каким образом можно осуществить такое:

Допустим есть таблица, которая содержит реквизиты документов, т.е. фактически это табица документов. Теперь нужно сделать так, что бы некоторые пользователи могли видеть одни документы(записи в таблице), но не видеть другие и тд.

Думал организовать это с помощью курсоров (например делаем выборку из таблицы документов, только тех записей которые удов. определенным условиям, которые связаны с правами пользователя). Соответсвенно пользователь не может сделать выборку из самой таблицы (у него нет прав на SELECT но есть на INSERT).

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

А как тогда реализовать безопасность?
...
Рейтинг: 0 / 0
Реализация системы безопасности
    #33150333
Paul Sacks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для этих целей используют представления. Они представляют собой средство, которое позволяет пользователям видеть то, что им положено...
...
Рейтинг: 0 / 0
Реализация системы безопасности
    #33150386
Демиург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно чуть подробней

Еще как средство - Хранимые Процедуры
...
Рейтинг: 0 / 0
Реализация системы безопасности
    #33150388
Демиург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да и еще
Может я совсем дуб, но под курсораси я Вьюшки подрузомевал


( Щас полетят камни ? )
...
Рейтинг: 0 / 0
Реализация системы безопасности
    #33150449
Paul Sacks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну это специальный вид доступа к данным. Те же самые "виртуальные" таблицы, которые построены на основе физических. Это средство хорошо организовано в MS SQL Server. А Вы на накой СУБД сидите?
...
Рейтинг: 0 / 0
Реализация системы безопасности
    #33150479
Демиург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я на ней и сижу. Делал несколько тестовых вьюшек.
Но вот где не натыкаюсь в форуме с помощью них делать не советуют.

Например написали что если зайти в QA и написать запрос типа SELECT * FROM MyView - то пользователь может увидеть данные которые ему видеть не пологается


А есть ли примеры (ссылки на форумы идт) где обсуждалась бы реализация такой системы?
...
Рейтинг: 0 / 0
Реализация системы безопасности
    #33150500
Paul Sacks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДемиургЯ на ней и сижу. Делал несколько тестовых вьюшек.
Но вот где не натыкаюсь в форуме с помощью них делать не советуют.

Например написали что если зайти в QA и написать запрос типа SELECT * FROM MyView - то пользователь может увидеть данные которые ему видеть не пологается


А есть ли примеры (ссылки на форумы идт) где обсуждалась бы реализация такой системы?

В представлении необходимо указывать только те поля, которые должен видеть пользователь. Если, например, в представление вы указали field1 и field2, а в самой таблице еще и есть field3 и field4, то при выполнении
Код: plaintext
1.
SELECT * FROM MyView
Вы и увидите field1 и field2.
...
Рейтинг: 0 / 0
Реализация системы безопасности
    #33150527
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Физически Вы вряд ли запретите просмотр или редактирование только части строк.
Это можно сделать только в некоторых частных случаях.
Лучше всего сделать это на уровне приложения, которое само не даст выполнить запрещенное действие.
...
Рейтинг: 0 / 0
Реализация системы безопасности
    #33150552
Демиург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVФизически Вы вряд ли запретите просмотр или редактирование только части строк.
Это можно сделать только в некоторых частных случаях.
Лучше всего сделать это на уровне приложения, которое само не даст выполнить запрещенное действие.

Да но приложение тогда должно иметь полный доступ к бд. Соотв-нно если пользователь узнал Логин и Пароль под которым коннектится прога - то он может сделать с базой что захочет. Не так ли?


2 Paul Sacks

я тоже так думал (и пробовал - получалось), а тут вот натыкаюсь

http://www.sql.ru/forum/actualthread.aspx?tid=41745&hl=%e1%e5%e7%ee%ef%e0%f1%ed%ee%f1%f2%fc
...
Рейтинг: 0 / 0
Реализация системы безопасности
    #33150914
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ходят слухи, что в Юкон появится механизм (в Оракле начиная с версии 8.1.7 - ): - FGAC Fine Grain Access Control или Row Level Security), который может сделать то, что нужно Вам.

P.S. Link
...
Рейтинг: 0 / 0
Реализация системы безопасности
    #33151164
Templar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Реализация системы безопасности
    #33151478
Демиург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо

Таким образом - насколько я понял вьюшки - это не тормоза, и использование их вовсе не показатель непрофиссионализма, а вполне допустимая вещь. И если с таким подходом система и будет работать медленней, то не на много?
...
Рейтинг: 0 / 0
Реализация системы безопасности
    #33151617
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторСоотв-нно если пользователь узнал Логин и Пароль под которым коннектится прога - то он может сделать с базой что захочет. Не так ли?
Да. Для избежания этого делают суррогатные пароли. Тогда пользователь не знает истинного пароля к СУБД. В ЛЮБОЙ СИСТЕМЕ вход "в обход" клиентской части чреват ужасными последствиями. От этого практически нереально защититься. Завесить систему можно обычным тупым SELECT. Поэтому лучше, чтобы юзер не знал настоящий логин/пароль.
Что касается вьюх, то на них безопасность произвольной сложности сделать крайне трудно. Гораздо проще её сделать на клиентской части.
ЗЫ: Наверно лучшее решение - разумное сочетание нескольких способов.
...
Рейтинг: 0 / 0
Реализация системы безопасности
    #33168066
Есть следующее решение этого вопроса.

1. Необходимо создать 3 дополнительные таблицы.

Таблица 1 содержит имена пользователей (USER_NAME) SQL сервера, назовем ее
USERS.
Пример:
ALLA
MARINA
SVETA

Таблица 2 содержит имена групп (GROUP_NAME), в которые объединены
пользователи
SQL сервера, назовем ее GROUPS.
Пример:
ALL
PART

Таблица 3 (GROUP_NAME, USER_NAME) является bridge table между таблицами 1 и
2,
она содержит связь между пользователями и группами, назовем ее GROUPS_USERS.
Пример:
ALL, ALLA
PART, ALLA
ALL, MARINA
PART, SVETA

2. В исходную таблицу SOURCE_TABLE необходимо добавить поле c именем группы.
Допустим в этой таблице (ID, NAME, GROUP_NAME) есть записи:
1, apple, all
2, orange, part

3. Создать представление типа
CREATE VIEW source_view AS
SELECT * FROM source_table
WHERE group_name IN (SELECT group_name FROM groups_users WHERE user_name =
USER)
Где USER это функция базы данных для получения имени пользователя.

4. Дать пользователям доступ только к представлению source_view
Тогда пользователь ALLA будет видеть записи
1, apple, all
2, orange, part
Соответственно пользователь MARINA будет видеть записи
1, apple, all
Соответственно пользователь SVETA будет видеть записи
2, orange, part

Это универсальный механизм, который используется в реально работающей
системе.
Естественно за это решение необходимо платить созданием дополнительных
табличек, поля и их сопровождением. Еще понадобятся внешние ключи и индексы.
Будет изменяться список пользователей и групп и это тоже необходимо
поддерживать.

У Oracle появился этот механизм начиная кажется с версии 9i.
Смотрите подробное описание в "Label Security Administrator's Guide".
Суть его похожа, сервер на лету переписывает ваши запросы для
разграничения доступа к записям таблицы.






"Демиург" <nospam@sql.ru>; wrote in message news:1676619@sql.ru...
Добрый день

Хотел спросить у знающих товарищей, каким образом можно осуществить такое:

Допустим есть таблица, которая содержит реквизиты документов, т.е.
фактически это табица документов. Теперь нужно сделать так, что бы некоторые
пользователи могли видеть одни документы(записи в таблице), но не видеть
другие и тд.

Думал организовать это с помощью курсоров (например делаем выборку из
таблицы документов, только тех записей которые удов. определенным условиям,
которые связаны с правами пользователя). Соответсвенно пользователь не может
сделать выборку из самой таблицы (у него нет прав на SELECT но есть на
INSERT).

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

А как тогда реализовать безопасность?
Тема Ответить


Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Реализация системы безопасности
    #33172085
Grim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ламерский вопрос - что такое QA?
...
Рейтинг: 0 / 0
Реализация системы безопасности
    #33172177
Фотография Dim Grishin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Grimламерский вопрос - что такое QA?
Query Analyzer


иногда бывает:
Question&Answer
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Реализация системы безопасности
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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