Предоставление разрешений объектам, вызываемым в хранимых процедурах

У нас есть около 55 баз данных поставщиков, работающих в режиме совместимости SQL Server 2000 на сервере SQL Server 2008. Перекрестное владение базой данных включено.

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

Все объекты поставщика и хранимые процедуры отчетности принадлежат dbo.

(Я знаю, что это не идеальная установка. Оставим это в стороне...)

Может ли кто-нибудь сказать мне, когда я предоставляю пользователю execute X отчет о сохраненных процессах для отчетов X, почему я также должен предоставить пользователю X явные разрешения на выборку для таблиц базы данных затронутых поставщиков (тех, которые запрашивает хранимый procs)?

Я думал, что, пока включена цепочка владения и все объекты имеют одно и то же право собственности, этих прав на выполнение хранимого процесса будет достаточно, но они не смогут сказать, что у пользователя X нет прав выбора для таблиц.

Заранее благодарю за любую помощь.

1 ответ

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

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

Другие вопросы по тегам