SQL Server: явные права на схему?
Когда я даю разрешения для определенной схемы в SQL Server, я хочу запретить некоторые операции определенных пользователей. Нужно ли это явно отрицать или это так, что когда пользователь получает разрешение на эту схему, права на эту схему автоматически отклоняются для других пользователей?
2 ответа
По умолчанию права на объекты в схеме не предоставляются пользователю. Однако есть несколько способов, которыми пользователь может получить права на объект. Например, права могут быть предоставлены явно пользователю и / или группе, в которой пользователь является участником.
DENY
Команда запрещает права для пользователя или группы, даже если пользователю были предоставлены права на объект. Например, предположим, что пользователь A является членом группы MyGroup, и группе было предоставлено право доступа к таблице MyTable. Все пользователи в MyGroup могут запросить MyTable. Теперь вы можете запретить доступ к MyTable для пользователя A. Пользователь A не сможет запрашивать MyTable, но остальные члены группы могут по-прежнему запрашивать таблицу.
Так что, вероятно, лучше явно запретить права пользователям, которые не должны иметь доступ к схеме.
Думайте о схеме в SQL как о дереве. Чем дальше назад к корню схемы, что пользователь имеет разрешенное право, тем дальше вверх по стволу и ветвям пользователь будет поддерживать это разрешение, пока вы не откажетесь. Если у пользователя А есть разрешения на выполнение хранимых процедур в базе данных, то у него есть права доступа ко всем хранимым процессам в этой БД, и если вы не хотите, чтобы у них были права на запуск одного сингла, вы должны пометить его как Отрицать. То же самое касается прав на чтение, запись, обновление и т. Д. Если у пользователя есть эти права на более высоком уровне, то да, вам нужно неявно отрицать. Я не могу думать ни о чем (включая вход в систему), на который у пользователя есть права, если вы не предоставите ему этот доступ в первую очередь. Имея в виду, конечно, некоторые из них могут быть предоставлены при создании пользователя.
Последнее, что я скажу, это то, что это никогда не повредит. Я часто буду указывать разрешить или запретить элементы, которые более чувствительны к безопасности, даже если я знаю, что так и должно быть.