Выполнить хранимую процедуру с разными правами пользователя - PullRequest
0 голосов
/ 13 февраля 2020

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

Я нашел возможное решение здесь: Выполнить хранимую процедуру как разрешение другого пользователя - но есть некоторые дополнительные проблемы ...

Итак

  • Я создал хранимую процедуру (как sa) для восстановления базы данных
  • Я создал «прокси-пользователя», у которого есть разрешения CREATE (на самом деле я создаю логин, потому что пользователь находится на уровне базы данных, и я не может предоставить CREATE DB разрешение)
  • В хранимой процедуре я использую EXECUTE AS proxyUser
  • Я предоставляю своему пользователю EXECUTE разрешение на хранимую процедуру

Пока все хорошо, но когда мой пользователь без прав выполняет хранимую процедуру, я получаю «пользователю не разрешено выдавать себя за proxy_user». Кажется логичным, хранимая процедура теперь выполняется в контексте моих пользователей.

Это я могу решить, предоставив безличные права моему пользователю без прав -> все работает, НО теперь в любое время мой пользователь без прав мог Скажите в SQL запросе «Выполнить как» и имеет все права другого пользователя, что недопустимо.

Что я пропускаю / делаю неправильно? Спасибо !!

...