Что может видеть пользователь против того, что он может сделать - PullRequest
0 голосов
/ 06 ноября 2019

MSSQL позволяет пользователю с ограниченными разрешениями в базе данных перемещаться с использованием SSMS в этой базе данных, как если бы он был администратором. То есть, если у них есть разрешение на просмотр базы данных, они могут просматривать пользователей, все опции для предоставления / отказа могут быть выбраны, но, конечно, ничто не передается в базу данных.

Я слышал, как пользователь хвастается своим уровнем доступа, который я установил и ограничил, но был момент паники. Хотя они могли видеть все базы данных в экземпляре, любая попытка просмотреть информацию сопровождалась запросом отказа в доступе. В базе данных, к которой у них был доступ, они могли выбрать / отменить выбор любого из разрешений для любого пользователя и не видеть никаких подсказок, хотя ни один из вариантов не остался.

Возможно ли «серое»все варианты, которые они на самом деле не могут реализовать?

Ответы [ 2 ]

1 голос
/ 06 ноября 2019

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

1 голос
/ 06 ноября 2019

SSMS является клиентской программой, как и любая другая программа. У него нет особого статуса. У вашего пользователя есть права на чтение системных таблиц, таких как sys.object, sys.server_principals и т. Д. Именно поэтому SSMS может создавать древовидное представление в обозревателе объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...