Я хотел бы настроить «читающего» пользователя на моем экземпляре SQL Server 2012. Я хотел бы предоставить ему право на выполнение любой хранимой процедуры, или функции, или прямого оператора SQL, который извлекает данные из всех таблиц и представлений, но не обновляет и не вставляет (т.е. читает что-либо и ничего не пишет).
Могу ли я установить это, не предоставляя конкретных прав для каждой функции или хранимой процедуры по имени, а предоставив ему право на выполнение любой функции или хранимой процедуры, просто забрав право изменять таблицы?
Изменится ли что-нибудь, если я вместо этого запущу SQL Server 2008?
Разъяснения и дополнения:
- Если хранимая процедура изменяет данные, пользователь должен получить сообщение об ошибке (либо отказать в модификации, либо полностью отказаться от доступа к хранимой процедуре).
- Если потенциальное решение предполагает отказ в разрешениях, могу ли я просто не предоставлять определенные разрешения вместо отказа?
- Можно ли применить deny ко всем таблицам, представлениям и т. Д. (Существующим сейчас и в будущем) в базе данных одним оператором?
GRANT
для предоставления разрешений, DENY
для отклонения разрешений и REVOKE
для удаления GRANT
или DENY
. Без GRANT
или DENY
пользователь может наследовать разрешения, скажем, от получения доступа к хранимой процедуре.
DENY DELETE, INSERT, UPDATE
используете базу данных или схему, я считаю, что это повлияет только на таблицы и представления.