Могу ли я выполнить запросы структуры сущностей как роли базы данных? - PullRequest
1 голос
/ 22 июня 2011

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

Например, у нас есть роль A, в которую входят пользователи AD, которые будут обращаться к базе данных, а роли A предоставлены только права на выполнение для сохранения хранимых процедур. Если я использую Entity Framework, запросы будут выполняться как фактические пользователи, а не как роль базы данных, и поэтому эти пользователи могут подключаться к базе данных напрямую и что-то с ней делать.

Я не слишком знаком с безопасностью базы данных. Может кто-нибудь объяснить, действительно ли то, что сказал мой менеджер, действительно?

Если так, есть ли обходной путь, чтобы я все еще мог использовать Entity Framework, не нарушая структуру безопасности базы данных компании? (Т.е. использовать роль для выполнения запросов вместо реальных пользователей AD)

1 Ответ

2 голосов
/ 22 июня 2011

Роль базы данных - объект уровня базы данных. Учетная запись пользователя, используемая для запуска вашего приложения, должна сначала войти на сервер. Затем разрешения для этой учетной записи оцениваются на основе пользователей базы данных или ролей базы данных. Если ваша учетная запись приложения будет членом roleA, у нее должны быть разрешения «для доступа к базе данных», но если доступ означает, что только члены roleA могут выполнять SP, вы можете забыть о любых запросах linq или ESQL, поскольку безопасность базы данных просто не позволит вам звонить их (это вызовет исключение безопасности).

Единственным преимуществом EF в этом случае является автоматическое отображение результирующего набора SP на сущность / сложный тип / пользовательский тип. Линк-сущности не могут быть использованы, а сущности могут быть изменены только с помощью отображенных хранимых процедур.

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