Вам необходимо создать пользовательскую роль приложения в вашей базе данных, которая может выполнять только эти хранимые процедуры, но не имеет никаких прав для чтения или обновления данных напрямую.
Самый простой подход, который я обычно использую, заключается в следующем:
- Создание пользовательской роли базы данных
db_executor
, которая работает аналогично db_datareader
- Предоставьте этой роли разрешение на выполнение всех текущих и будущих хранимых процедур
- Создайте пользователей, которые получают только эту роль - эти пользователи могут подключаться к вашей базе данных, и они могут выполнять только хранимые процедуры - ничего другого
Шаг 1 - создать новую роль
CREATE ROLE [db_executor]
Шаг 2 - предоставить разрешения
GRANT EXECUTE TO db_executor;
Это дает разрешение на выполнение любых хранимых процедур в этой базе данных - и самое замечательное:это не относится только к хранимым процедурам, которые существуют во время его выполнения - это также включает любые хранимые процедуры, которые вы можете создать в будущем
Шаг 3 - добавьте пользователей к этой роли
Конечно, вы можете сделать это в графическом интерфейсе - или с помощью этого T-SQL:
ALTER ROLE [db_executor] ADD MEMBER [your-user-name-here]