Как ограничить список баз данных, видимых пользователю?

Как ограничить список баз данных, видимых пользователю?Хорошо быть администратором. Подключаемся к серверу, разворачиваем список баз данных и до каждой базы нам есть дело!

А в сценариях хостинга или персональной аналитики обычно другая картина. Разворачиваем огромный список баз и листаем, листаем, листаем его в поисках той единственной, к которой у нас есть доступ.

Вот один из наших учебных серверов. У каждого пользователя есть своя база данных, в которой он — полноправный хозяин. Есть также несколько баз, в которые пользователь может заглянуть с ограниченными правами. А к большинству баз данных у пользователя вообще нет никакого доступа. Но все эти факторы не принимаются во внимание SQL-сервером, мы всё равно видим весь список.

Давайте посмотрим, что тут можно придумать.

Пользователь «Фёдор Самородов», подключившись, видит список баз данных благодаря тому, что у роли public есть разрешение VIEW ANY DATABASE.

Вы можете это разрешение отозвать (тогда это изменит картину для всех пользователей), либо запретить индивидуально для некоторых пользователей. Попробуем запретить просмотр этих метаданных для нашего пользователя:

Это сработало! Правда, стало ещё хуже — теперь мы не видим вообще никаких баз, кроме master и tempdb.

Заметьте, что на сам доступ к базам это не повлияло. Если мы знаем название нужной базы данных, то сможем переключиться в её контекст.

К сожалению, добиться желаемой гибкости мы не сможем. В общем случае такая задача не решаема. SQL Server покажет нам только те базы, владельцами которых мы являемся. Причём, учитывается именно фактор владения, членства в роли db_owner недостаточно.

На практике это означает, что вы сможете ограничить видимость баз данных только в тех сценариях, когда пользователи сами владеют своими персональными базами. То есть чтобы пользователь увидел в списке базу данных, его нужно сделать её владельцем.

Автор: Самородов Федор Анатольевич

Запись опубликована в рубрике Полезно и интересно с метками . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Войти с помощью: