Ограничить список баз данных теми, у которых есть разрешение SQL Server

StackOverflow https://stackoverflow.com/questions/201292

Вопрос

По умолчанию, если вы подключаетесь к удаленному SQL-серверу через учетную запись, имеющую доступ, скажем, к 1 из 10 баз данных.Вы по-прежнему будете видеть в обозревателе объектов все остальные базы данных, очевидно, из-за разрешений вы не можете на самом деле запрашивать их, но вы можете видеть их имена.

Я слышал, что есть метод, отключающий это поведение, но мне не удалось найти ответ, кто-нибудь знает, как это сделать?Приведу пример: у меня есть SQL-сервер MyDbServer, у него 4 базы данных:

  1. Моя база данных
  2. Ваша база данных
  3. Частная база данных
  4. ReallyPrivateDb

Если вы подключаетесь через учетную запись, у которой есть разрешения только для «YourDatabse», вы все равно увидите список всех других баз данных, попытки выполнения запроса приведут к отказу в разрешении «выбрать» или к аналогичной ошибке.

Из соображений безопасности мы НЕ хотим, чтобы пользователи видели какую-либо базу данных, кроме той, с которой они сопоставлены.

Это было полезно?

Решение

Этот блог рассказывает о методах сокрытия БД как для SQL 2000, так и для SQL 2005.

Другие советы

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

Вкратце это:

use master
go
deny VIEW any DATABASE to login1
go

где login1 — это учетная запись входа, которую вы хотите ограничить.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top