Модель безопасности объектов связанных серверов

Мне нужно заблокировать доступ к связанному объекту сервера на сервере MSSQL.

Я строю представления на базе данных хоста, из которой я запрашиваю заполнение промежуточной таблицы на моем сервере хранилища. Я использую Data Tools/SSIS для извлечения данных вида. Чтобы упростить пакет служб SSIS, я использую OPENQUERYсинтаксис для запроса объекта связанного сервера, который существует на моем сервере хранилища и подключается к другим серверам SQL, серверам Oracle и т. д. через объекты связанного сервера.

Чтобы обеспечить доступ к связанным серверам, я настроил локальную регистрацию SQL на хосте базы данных, который имеет доступ для чтения, затем я использую "Быть ​​созданным с использованием этого контекста безопасности:" и пропускаю локальную регистрацию SQL. Это работает просто отлично.

Теперь я понимаю, что у меня есть проблема: любой пользователь с доступом к хранилищу может запросить связанный объект сервера из-за этого скрытого контекста безопасности! Я не хочу этого! Мне нужны люди, которые должны иметь доступ, чтобы иметь возможность запрашивать (чтобы я мог писать свои пакеты служб SSIS), а также учетную запись службы агента SQL Server, чтобы иметь доступ, чтобы при выполнении задания агента SQL Server от имени этого пользователя он мог успешно запросить связанный сервер.

Я полагаю, что ключ к блокировке доступа к запросу к связанному объекту сервера находится где-то в "Входе локального сервера в сопоставления входа в систему удаленного сервера", но мне трудно это выяснить. Когда я пытаюсь добавить, например, NT SERVICE\SQLAgent привязанный к локальному логину с доступом, затем сохраняю, я нажимаю "Ошибка входа в систему для NT AUTHORITY\ANONYMOUS LOGON" при сохранении.

Любые идеи о том, как я могу разрешить группам безопасности, которые имеют доступ, и учетной записи службы агента SQL Server для запроса связанного сервера, но не остальным людям с доступом к хранилищу?

1 ответ

Это известно как проблема "двойного прыжка"

( https://blogs.technet.microsoft.com/askds/2008/06/13/understanding-kerberos-double-hop/)

и чтобы избавиться от ошибки анонимного входа в систему, вам необходимо правильно настроить сквозную аутентификацию Kerberos;

https://blogs.msdn.microsoft.com/farukcelik/2008/01/02/how-to-set-up-a-kerberos-authentication-scenario-with-sql-server-linked-servers/

https://www.databasejournal.com/features/mssql/article.php/3696506/Setting-Up-Delegation-for-Linked-Servers.htm

Однако это довольно сложно - вы упоминаете, что для "упрощения" пакета служб SSIS вы используете связанный сервер, однако SSIS решает именно эту проблему... Почему бы вам просто не использовать SSIS для копирования данных с другого сервера, чтобы избежать использования связанный сервер?