Предоставление разрешений объектам, вызываемым в хранимых процедурах
У нас есть около 55 баз данных поставщиков, работающих в режиме совместимости SQL Server 2000 на сервере SQL Server 2008. Перекрестное владение базой данных включено.
У нас также есть собственная база данных отчетов на этом сервере, где хранятся только хранимые процедуры. Эти хранимые процедуры запрашивают таблицы базы данных поставщиков для наших целей отчетности.
Все объекты поставщика и хранимые процедуры отчетности принадлежат dbo.
(Я знаю, что это не идеальная установка. Оставим это в стороне...)
Может ли кто-нибудь сказать мне, когда я предоставляю пользователю execute X отчет о сохраненных процессах для отчетов X, почему я также должен предоставить пользователю X явные разрешения на выборку для таблиц базы данных затронутых поставщиков (тех, которые запрашивает хранимый procs)?
Я думал, что, пока включена цепочка владения и все объекты имеют одно и то же право собственности, этих прав на выполнение хранимого процесса будет достаточно, но они не смогут сказать, что у пользователя X нет прав выбора для таблиц.
Заранее благодарю за любую помощь.
1 ответ
Если у вас включена цепочка владения в обеих базах данных, а пользователь, выполняющий хранимую процедуру, является членом базы данных вендора, ему не нужны права на таблицы.
Исключение составляют случаи, когда вы используете динамический SQL, и в этом случае вам нужно предоставить доступ к базовым таблицам, а цепочки безопасности не применяются к динамическому SQL, поскольку динамический SQL выполняется вне области действия исходной хранимой процедуры.