Проблема с разрешениями для хранимой процедуры SQL Server 2008 с использованием шифрования - PullRequest
2 голосов
/ 07 июля 2011

Я организовал базу данных с тремя схемами. В разделе «Пользователь базы данных» я отметил три схемы как собственные схемы пользователя, через которого я подключаюсь (хотя в то время это было хорошей идеей).

Однако это, похоже, не позволяет мне добавлять нужного пользователя db к разрешениям для хранимых процедур, которые также находятся под теми же тремя схемами (не dbo). Я выбираю пользователя БД, выбираю выполнить и затем нажимаю ОК. Вернитесь, и разрешение исчезло.

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

Schemas Greyed Out

У меня не было проблем с разрешениями при разработке сайта ASP.Net, пока я не попытался передать данные клиента в хранимую процедуру INSERT, которая также шифрует пароль клиента. Когда вызывается SP, я получаю следующую ошибку:

Не удается найти симметричный ключ «myKey», потому что он не существует или вы делаете нет разрешения.

Я могу отлично запустить SP в SSMS, и пароль отлично зашифрован.

Где мне не хватает предоставления разрешений? Проблема в серых схемах? Или это проблема ASP.Net c #?

1 Ответ

1 голос
/ 18 июля 2011

Вам нужно будет использовать EXECUTE AS, чтобы изменить разрешение для пользователя базы данных с правами на открытие ключа шифрования.

Если вы попытаетесь запустить SP после использования EXECUTE AS USER = 'ASPUser', вы должны получитьта же проблема.

Вот ссылка на видео с подробной информацией о Безопасность EXECUTE AS и SQL-инъекция и Запись MSDN в EXECUTE AS для процедур и ВЫПОЛНИТЬ КАК ПОЛЬЗОВАТЕЛЬ

...