Ограничить список баз данных теми, у которых есть разрешение SQL Server
-
03-07-2019 - |
Вопрос
По умолчанию, если вы подключаетесь к удаленному SQL-серверу через учетную запись, имеющую доступ, скажем, к 1 из 10 баз данных.Вы по-прежнему будете видеть в обозревателе объектов все остальные базы данных, очевидно, из-за разрешений вы не можете на самом деле запрашивать их, но вы можете видеть их имена.
Я слышал, что есть метод, отключающий это поведение, но мне не удалось найти ответ, кто-нибудь знает, как это сделать?Приведу пример: у меня есть SQL-сервер MyDbServer, у него 4 базы данных:
- Моя база данных
- Ваша база данных
- Частная база данных
- ReallyPrivateDb
Если вы подключаетесь через учетную запись, у которой есть разрешения только для «YourDatabse», вы все равно увидите список всех других баз данных, попытки выполнения запроса приведут к отказу в разрешении «выбрать» или к аналогичной ошибке.
Из соображений безопасности мы НЕ хотим, чтобы пользователи видели какую-либо базу данных, кроме той, с которой они сопоставлены.
Решение
Этот блог рассказывает о методах сокрытия БД как для SQL 2000, так и для SQL 2005.
Другие советы
После того, как мой клиент столкнулся с выявленными ресурсами, я провел некоторое тестирование и создал это сообщение в блоге с немного большим контекстом и инструкциями о том, как заставить это работать.
Вкратце это:
use master
go
deny VIEW any DATABASE to login1
go
где login1 — это учетная запись входа, которую вы хотите ограничить.