Прошу прощения, если этот вопрос повторяет другой, уже заданный. Я искал несколько часов и не нашел того, который подходит моей ситуации.
Желаемый результат
Пользователь, использующий аутентификацию SQL, имеет права на выполнение для Database1 на Server1 (экземпляр по умолчанию), и это все. Пользователь выполняет хранимую процедуру, которая в рамках своего процесса обращается к базе данных 2 на сервере Server1 \ Instance2. Я хотел бы, чтобы это было безопасно и просто (оба важны).
Больше информации
Мои учетные данные Windows имеют доступ к обоим экземплярам (которые находятся на одном сервере). Поэтому я могу без труда выполнить хранимую процедуру под своим логином. Однако я не хочу предоставлять пользователю мой уровень доступа. Мне также нужно использовать логин SQL, так как пользователь не будет в домене.
Я хотел бы предоставить хранимой процедуре мой уровень доступа только для этой процедуры. Поскольку я являюсь системным администратором, это даст пользователю все необходимое для этой процедуры. Если бы я заставил это работать, я бы, вероятно, создал учетную запись именно для этой цели, а не использовал мою, но в любом случае это было бы безопасно, так как я контролирую, что делает хранимый процесс.
Я попытался поместить оператор «WITH EXECUTE AS» в свой хранимый процесс, но не смог получить его, чтобы получить информацию для входа в Windows. Когда я вставлю его, я получу следующую ошибку при компиляции хранимого процесса:
Невозможно выполнить от имени пользователя домен \ jdoe, так как он не существует или у вас нет разрешения.
Как я уже сказал, на обоих серверах пользователь sysadmin, поэтому я не уверен, что ему еще нужно.
Я посмотрел на следующее:
- ДОВЕРЕННЫЙ - я бы предпочел не выставлять свою базу данных, и это выглядит страшно
- Связанный сервер - я не хочу давать дополнительные разрешения. Я не доверяю другой базе данных иметь доступ к моей базе данных, и я не доверяю своей базе данных иметь доступ ко всей другой базе данных.
- Сертификаты - это кажется сложным и сложным. Если я не смогу найти очень простой способ сделать это и поддерживать его, я не уверен, что это стоит того.
- Цепочка владения - Опять страшно. Похоже, что это вызывает больше проблем безопасности, когда моя цель - предотвратить проблемы безопасности.
- Зеркальный пользователь - я даже создал одного (очевидно, другого SID) пользователя на другом экземпляре сервера и дал ему тот же пароль. Нет идти
Я чувствую, что упускаю что-то очевидное, но я не уверен, что это такое. Так как я целый день бился об стену, я, наверное, слишком близко, чтобы это увидеть. Я был бы очень признателен, если бы кто-то здесь мог помочь мне или указать мне правильное направление. Я скажу, что я прочитал много статей MSDN (мальчик, я ненавижу их - они, кажется, никогда не говорят мне то, что я хочу знать). То, что я действительно хотел бы, является простым, легким для того, чтобы следовать за учебником, который ведет меня через, как сделать это. Если не считать этого, даже общее указание направления, в котором я должен идти, было бы полезно.