SQL Server 2005 - Запретить просмотр “Безопасности”, “Серверных объектов”, “Репликации” и “Управления”?
-
21-09-2019 - |
Вопрос
Я могу запретить просмотр базы данных конкретного пользователя, выполнив что-то вроде этого:
DENY VIEW ANY DATABASE TO Myuser
Но есть ли способ также запретить удаленному пользователю просматривать "Безопасность", "Серверные объекты", "Репликацию" и "Управление" при входе в систему через SSMS?
Спасибо.
Решение
Эти категории SSMS представляют собой совокупность различных функций на стороне сервера.Возьмем, к примеру, вкладку "Безопасность", там показаны "Логины", "Роли сервера" и "Учетные данные".Рассмотрим узел "Логины":
- показывает существующий логин, то есть просмотр поверх
sys.server_principal
s и видимость объектов в этом представлении каталога ограничена объектами (логинами), на которых текущий пользователь имеет право собственности или имеет определение вида разрешение окончено. - Позволяет добавить новый логин, который означает
CREATE LOGIN
а это, в свою очередь, требуетALTER ANY LOGIN
илиALTER LOGIN
разрешения. - Позволяет удалить логин, что означает
DROP LOGIN
и для этого требуетсяALTER ANY LOGIN
.
Теперь теоретически вы могли бы запретить ОПРЕДЕЛЕНИЕ ВИДА для логинов, запретить ИЗМЕНЯТЬ ЛЮБЫЕ ЛОГИНЫ и запретить ИЗМЕНЯТЬ ЛОГИНЫ пользователям, но вы не сможете отрицать право собственности входа в систему, так что пользователь все равно будет что-то там видеть (свой собственный логин).Так что это проигранная битва.Вы могли бы применить аналогичные рассуждения к любой другой панели в SSMS, которую хотите скрыть, и вы достигнете аналогичных результатов.
Тем не менее, вы подходите к этому с неправильной точки зрения.Безопасность никогда полагается на ОТКАЗ, всегда полагается на РАЗРЕШЕНИЕ.У ваших пользователей не должно быть никаких ненужных прав, и точка.Вам не нужно явно что-либо отрицать, оголять какие-то экстраординарные обстоятельства.