Безопасность для связанных серверов

При соединении со связанным сервером (например, когда он обрабатывает распределенный запрос) отправляющий сервер указывает имя входа и пароль для подключения к принимающему серверу от его имени. Чтобы это соединение работало, необходимо создать сопоставление имен входа между связанными серверами с помощью системных хранимых процедур SQL Server.

Сопоставления имен входа для связанных серверов добавляются с помощью процедуры sp_addlinkedsrvlogin, а удаляются процедурой sp_droplinkedsrvlogin. При сопоставлении имен входа для связанного сервера устанавливаются удаленное имя входа и удаленный пароль для указанного связанного сервера и локального имени входа. При подключении сервера SQL Server к связанному серверу для выполнения распределенного запроса или хранимой процедуры SQL Server ищет сопоставления для текущего имени входа, выполняющего запрос или процедуру. Если сопоставление имени входа существует, SQL Server отправляет соответствующие удаленные имя входа и пароль при подключении к связанному серверу.

Например, сопоставление для связанного сервера S1 настроено на использование локального имени входа U1 для удаленного имени входа U2 с удаленным паролем 8r4li034j7$. При выполнении распределенного запроса под локальным именем входа U1, которое получает доступ к таблице, хранящейся на связанном сервере S1, в качестве идентификатора пользователя и пароля для подключения SQL Server к связанному серверу S1 передаются U2 и 8r4li034j7$.

Установленное по умолчанию сопоставление в конфигурации связанного сервера предназначено для эмуляции текущих учетных данных безопасности для имени входа. Такое сопоставление называется самосопоставлением. При добавлении связанного сервера с помощью процедуры sp_addlinkedserver для всех локальных имен входа добавляется самосопоставление по умолчанию. Самосопоставление для проверенных имен входа в Windows поддерживается, если доступно делегирование учетных записей безопасности и связанный сервер поддерживает проверку подлинности Windows.

ПримечаниеПримечание

По возможности используйте проверку подлинности Windows.

Самосопоставление не будет работать для имен входа, использующих проверку подлинности Windows, если делегирование учетных записей безопасности недоступно на сервере клиента либо отправляющем сервере, или же если связанный сервер или поставщик не распознает режима проверки подлинности Windows. Поэтому необходимо настроить локальное сопоставление имен входа от имени входа, использующего проверку подлинности Windows, к конкретному имени входа на связанном сервере, не поддерживающему такую проверку. В этом случае, если связанный сервер является экземпляром SQL Server, для удаленного имени входа будет использоваться проверка подлинности SQL Server.

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

ПримечаниеПримечание

Чтобы создавать наилучшие планы запросов при использовании таблицы на связанном сервере, обработчику запросов необходима статистика распределения данных на связанном сервере. У пользователей с ограниченными разрешениями для столбцов в таблице могут отсутствовать разрешения, необходимые для получения необходимых статистических данных, в связи с чем эти пользователи могут получить менее эффективные планы запросов и производительность их работы может быть снижена. Если связанный сервер является экземпляром SQL Server, чтобы получать все доступные статистические данные, пользователь должен быть владельцем таблицы или членом предопределенной роли сервера sysadmin, предопределенной роли базы данных bd_owner или bd_ddladmin на связанном сервере.

Тестирование связанных серверов

В обозревателе объектов щелкните правой кнопкой мыши связанный сервер и выберите пункт Проверить соединение.