SQL Server 2005, проверка прав

Я пишу приложение на С#, работающее с базой данных SQL Server 2005. Оно использует аутентификацию Windows.

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

Ф.э. Я храню информацию о различных проектах в своей базе данных. У каждого проекта есть лидер, каждый проект принадлежит определенному полю, у каждого поля есть администратор. Так что человек, начавший какой-то проект, должен иметь возможность модифицировать только этот проект. Администратор также может запускать проекты, но по-прежнему не может изменять другие проекты. Это относится к различным случаям выбора, обновления и вставки.

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

Как лучше всего контролировать доступ в моем случае?


person Anatoly Lushnikov    schedule 03.08.2011    source источник


Ответы (1)


Вы не можете обойти тот факт, что разрешения основаны на данных, поэтому вам необходимо проверять данные перед действием. То есть где-то в коде.

  • В «создать» процедуру/представление вам нужно проверить, что текущий пользователь является администратором
  • В процедуре/представлении update вам нужно проверить, соответствует ли пользователь столбцу

Это упрощено, но это то, что вам придется сделать.

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

person gbn    schedule 03.08.2011
comment
Я надеялся, что есть лучший способ. Спасибо. - person Anatoly Lushnikov; 03.08.2011