Вопрос по схемам и безопасности - PullRequest
1 голос
/ 27 октября 2009

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

Я настроил схему под названием Отчеты. Владельцем этой схемы является логин - Report_Admin. Этот пользователь имеет выборочный доступ к таблицам. Затем я дал изменить и выполнить в схеме отчетов для моей учетной записи автора отчетов. Dbo владеет таблицей - поэтому он работает, если dbo также владеет схемой отчетов - но тогда удаление также будет работать в процедуре!

Мы используем службы отчетов и хотели бы иметь весь SQL в базе данных для удобства обслуживания.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 28 октября 2009

Вы не добьетесь успеха, используя цепочку владения, как вы уже обнаружили. Решение может быть таким: report_writer должен создавать свои отчеты с условием EXECUTE AS SELF, чтобы они выполнялись с правами доступа report_writer. Затем группа report_reader сможет использовать разрешение EXECUTE для схемы reports для выполнения указанных отчетов, и отчеты смогут читать данные благодаря предложению execute as.

0 голосов
/ 28 октября 2009

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

Создание роли базы данных для пользователей. Предоставьте data_reader этой роли в разработке. Как при разработке, так и при производстве предоставьте права на выполнение хранимых процедур. Насколько я знаю, вам придется предоставить право на выполнение каждой хранимой процедуры.

...