Ограничить авторизацию в SQL Server для хранимых процедур - только вызовы - PullRequest
0 голосов
/ 09 ноября 2019

Чтобы сохранить целостность данных моей базы данных, я пытаюсь неавторизовать все запросы, которые не являются вызовами хранимой процедуры. Но я не хочу, чтобы запросы, которые я запускаю непосредственно с SQL Server, были заблокированы, потому что тогда я не смогу вносить какие-либо изменения в базу данных (если база данных не может различить «внутренние» запросы и «внешние» запросы, возможно, запросы будутбыть разрешенным под определенным разрешением). Как я могу сделать такую ​​вещь?

1 Ответ

0 голосов
/ 09 ноября 2019

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

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

  • Создание пользовательской роли базы данных 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...