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

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

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

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

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

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


person Mitchel Sellers    schedule 14.10.2008    source источник


Ответы (3)


В этом блоге рассказывается о методах сокрытия баз данных как для SQL 2000, так и для SQL 2005.

person Tom H    schedule 14.10.2008

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

person Mitchel Sellers    schedule 15.10.2008
comment
Похоже, недостатком является то, что только один пользователь одновременно может быть dbo. Следовательно, у клиента может быть только 1 пользователь базы данных... Верно? - person NotMe; 16.10.2008

Вкратце это:

use master
go
deny VIEW any DATABASE to login1
go

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

person NotMe    schedule 14.10.2008
comment
На самом деле это не совсем понятно, статья в блоге была немного сложной для понимания, но ключ в том, что пользователь должен быть DBO рассматриваемой статьи. - person Mitchel Sellers; 16.10.2008
comment
Было бы неплохо, если бы в SQL Server Management Studio вы могли щелкнуть правой кнопкой мыши базу данных и сказать, чтобы показать только эту базу данных для этого профиля. Но это никогда не будет так просто. Мой сценарий таков: когда я захожу на свой SQL Server в Godaddy с помощью SQL Server Management Studio, я вижу сотни других баз данных и каждый раз должен прокручивать вниз. В следующий раз я назову свою базу данных _AAAMydatabase. - person Eric Bishard; 16.10.2014