MSSQL позволяет пользователю с ограниченными разрешениями на базу данных перемещаться с использованием SSMS в этой базе данных, как если бы он был администратором. Т.е., если у них есть разрешение на просмотр базы данных, они могут просматривать пользователей, все опции для предоставления / отказа могут быть выбраны, но, конечно, ничто не передается в базу данных.
Абсолютно неверно.
По умолчанию public
роли сервера предоставлено разрешение VIEW ANY DATABASE
, и единственное, что вам разрешено делать, когда вы получаете это разрешение, - это list
базы данных на сервере, т. Е. Делать select * from sys.databases
или "see"базы данных в SSMS Object Explorer
. Только «видеть» означает только знать database names
. Любой login
, кроме члена sysadmin
роли сервера или owner
базы данных (единственный login
, имеющий authorization
в базе данных), который не является mapped
до database
, не может access
база данных вообще.
Это означает, что вы не можете ничего "увидеть" в этом database
.
И они могут смотреть на пользователей, все опции для предоставления / отклонения доступны для выбора
вообще не соответствует действительности, они просто не могут "открыть" узел базы данных, гдеони не отображаются (имеют connect
для базы данных).
Кроме того, даже если login
имеет разрешение connect
для базы данных и не имеет других permission
, даже если он может «открываться»узел базы данных, он будет видеть в «пользователях» только своего собственного пользователя.
Так что дважды проверьте permissions
вашего «пользователя с ограниченными разрешениями на базу данных», вы наверняка просто не видели все его permissions
.
Вы проверяете permissions
, выдавая себя за соответствующий login
следующим образом:
use your_db;
execute as login = 'limited_login';
select *
from sys.fn_my_permissions(null, 'server');
--CONNECT SQL
--VIEW ANY DATABASE
select *
from sys.fn_my_permissions(null, 'database');
revert;
Первый набор разрешений - server level permissions
, и если есть какие-либо permission
другиечем CONNECT SQL
и VIEW ANY DATABASE
ваш login
не настолько "ограничен", как вы думаете.
Во втором наборе перечислены database level permissions
, и если вы видите что-то вроде view definition
, это ключэто «видение пользователей».
Возможно ли «выделить» все опции, которые они на самом деле не могут реализовать?
Просто отмените view definition
на те users