Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Безопасность на уровне записей 
:(
    Опции темы
Kosteles
Дата 16.2.2008, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 12.2.2008

Репутация: нет
Всего: нет



Добрый день!

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

Позволяет ли MS SQL Server 2005 организовывать разграничение прав доступа для каждой записи таблицы?
Или это только возможно с помощью отдельных программных модулей (например, через файл сервер)?
Как считается лучше реализовать данное разграничение?

Заранее благодарю.

С уважением,
Kosteles.
PM MAIL   Вверх
ТоляМБА
Дата 19.2.2008, 06:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: нет
Всего: 252



Вводишь новое поле ID_Sotrudn, записываешь туда например ID сотрудника вводившего запись.
Например у сотрудника Иванова будет 1, у Петрова 2 и т.д. Все сотрудники входят в базу под своим именем.
К запросу на выборку, например
Код
Select Field1, Field2
from Table1
добавляешь условие
Код
where ID_Sotrudn=1
 (1-будет определяться автоматом если зашел Иванов)
и всё - Иванов увидит только свои записи, естественно все последующие вводимые им данные пойдут с его айдишником.
Как вариант разграничение по группам, если пользователей много
PM   Вверх
SergKO
Дата 19.2.2008, 06:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 14.3.2005

Репутация: 17
Всего: 20



Цитата(ТоляМБА @  19.2.2008,  06:13 Найти цитируемый пост)
Как вариант разграничение по группам, если пользователей много 

Это вариант разграничения по сотрудникам. Если требуется разграничить по группам, то в поле ID_Sotrudn (точнее ID_Subdivision) надо будет занести идентификатор группы, к которой относится сотрудник Иванов. Тогда если Иванов перейдет в другой отдел, то он потеряет доступ к этой записи.
Вообще это самый простой способ. 
Лучше иметь таблицу со списком сотрудников, таблицу групп, таблицу связи сотрудника с группой, и таблицу, в которой будет id записи и id группы или групп, которым разрешен доступ к записи.
PM MAIL   Вверх
SharedNoob
Дата 19.2.2008, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 25.6.2007
Где: UA

Репутация: 2
Всего: 5



2SergKO
А вот если уж речь зашла о списке, я бы сделал древовидную структуру списка сотрудников, то есть верхний уровень, група, сотрудник. Далее имеем строковый код каждой позиции, тобиш Все = '1.', группа 1 '1.2.', пользователь группы 1 '1.2.3'. Ну а дальше использовать like @ID+'%'. 
PM MAIL ICQ Skype   Вверх
SergKO
Дата 19.2.2008, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 14.3.2005

Репутация: 17
Всего: 20



SharedNoob, дело вкуса. Но поищите по форумам сколько там вопросов связанных с работой с деревьями.
PM MAIL   Вверх
SharedNoob
Дата 20.2.2008, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 25.6.2007
Где: UA

Репутация: 2
Всего: 5



SergKO
Цитата

...
Если требуется разграничить по группам, то в поле ID_Sotrudn (точнее ID_Subdivision) надо будет занести идентификатор группы, к которой относится сотрудник Иванов
...


Цитата

Лучше иметь таблицу со списком сотрудников, таблицу групп, таблицу связи сотрудника с группой, и таблицу, в которой будет id записи и id группы или групп, которым разрешен доступ к записи.


Это все правильно, единственно что можно добавить что для полного комфорта в записи можно добавлять не ID_Sotrudn, а скажем некий уровень доступа, настройка для которого тоже будет в какой нибудь таблице аля (IDGroup int, AccessLevel int). Хотя я не оспариваю тот факт что наличие в записи информации о том кто и когда это запись добавил/изменил тоже является необходимостью для любой более ли менее серьезной БД.

Ну а на счет дерева, дык для него просто нужно меньше всяческих надстроек, хотя и работать с ним менее удобно чем с джоинами на таблицы настроек. 

PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0469 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.