У меня есть пользователи, видящие связанный сервер, который они не должны видеть.
Связанный сервер определен так, что только я буду иметь к нему доступ, но каждый сможет его увидеть и использовать.
Я создал новый связанный сервер, выполнив следующие действия:
- Подключите обозреватель объектов SSMS к экземпляру SQL Server
- Разверните
Server Objects
, щелкните правой кнопкой мышиLinked Servers
и щелкните левой кнопкой мышиNew Linked Server...
- При
General
закладке выбратьSQL Server
дляServer type
и написать имя сервера - Под
Security
вкладкой в верхней части нажмитеAdd
«sa» asLocal Login
, введитеRemote User
имя иRemote Password
- Под
Security
вкладкой в нижней части (подFor a login not defined in the list above, connections will:
) выберите первый вариант:Not be made
- Нажмите
OK
и начните тестирование
Теперь единственный человек, который должен видеть связанный сервер, - это я («sa»), но каким-то образом другие пользователи могут его видеть и использовать.
Примечание 1. Пользователи, которые могут использовать связанный сервер, имеют разрешения на удаленном сервере, они не видят данные, которые не должны видеть, они просто могут получить к ним доступ со связанного сервера, когда им это не нужно.
Примечание 2: я единственный sysadmin
в обоих случаях.
sql-server
security
ssms
linked-server
Рой Гавиш
источник
источник
Ответы:
Невозможно «спрятать» связанный сервер или предотвратить попытки его использования неавторизованными пользователями . Все, что вы можете контролировать, - есть ли у них доступ с другой стороны. Связанный сервер сам по себе не является реальным объектом; как синоним, вы не предоставляете доступ к псевдониму, только к вещам, на которые он ссылается.
Попробуйте, и вы увидите, что некоторые из ваших предположений (например, «логин ... не может видеть связанный сервер в проводнике объектов») ложны. Я сделал это:
sys.servers
чтобы увидеть список связанных серверов.Я смог выполнить следующий запрос без проблем:
Однако мне не удалось выполнить запросы к несистемным базам данных, поскольку я не предоставил явный доступ к какой-либо несистемной базе данных или объектам внутри. Например:
Получил эту ошибку:
Я ожидаю, что вы можете добиться более ограничительных результатов, явно отказав в доступе к определенным объектам на связанном сервере (или
DENY CONNECT SQL
к этому логину в целом), но это не ограничивает его влияние на связанный сервер; это также влияет на прямые связи.В любом случае, я не вижу смысла того, что вы пытаетесь достичь:
источник
Вы можете использовать первую опцию «Не делаться с» отображением входа, как показано ниже:
Вот результат с отображенным логином:
И вот что происходит с другим аккаунтом
источник