Для запрещения пользователю доступа к объектам базы данных используется команда DENY:
DENY
{ разрешение [,...n] }{ ON таблица | представление [(поле[,...n])]
| ON [хранимая процедура[,...n] }
TO учетная запись [,...n][CASCADE]
Параметры данной команды аналогичны параметрам командам GRANT. Параметр CASCADE позволяет отозвать права не только у конкретного пользователя, но также и у всех пользователей, кому он предоставил данные права.
Неявное отклонение подобно запрещению доступа с тем отличием, что оно действует только на том уровне, на котором определено. Т.е. если пользователю на определенном уровне доступ отклонен, то он может его получить на другом уровне, например, через членство в роли, имеющей на это право.
Замечание. По умолчанию доступ пользователя к данным неявно отклонен.
Для неявного отклонения доступа к данным используется следующая команда:
REVOKE [GRANT OPTION FOR]
{ разрешение [,...n] }{ ON таблица | представление [(поле[,...n])]
| ON [хранимая процедура[,...n] }
TO учетная запись [,...n][CASCADE]
Смысл параметров аналогичен параметрам команд GRANT и DENY. Параметр GRANT OPTION FOR используется, когда необходимо отозвать право, предоставленное параметром WITH GRANT OPTION команды GRANT. При этом пользователь сохраняет разрешение на доступ к объекту, но теряет возможность предоставлять разрешение другим пользователям.
Замечание. Необходимо помнить следующий принцип: разрешение имеет самый низкий приоритет, а запрещение – самый высокий. Т.е. доступ к данным может быть получен только явным его предоставлением при отсутствии запрещения доступа на любом другом уровне. Если доступ явно не предоставлен, пользователь не может работать с данными.
Работа с разрешениями пользователя может выполняться и с помощью графического интерфейса утилиты администрирования Management Studio. Чтобы назначить полномочия объекту безопасности необходимо выбрать его в группе Users (для изменения разрешения конкретного пользователя базы данных) или в группе Roles (для разрешений определенной роли). Для этих целей используется вкладка Securables (см. рис. 6.5).
В появившейся вкладке перечислены все объекты базы данных, с возможными правами доступа. Можно установить одно из трех состояний доступа: предоставление (галочка), запрещение (крестик) и неявное отклонение (пустое поле) – в соответствующем поле.
Рис. 6.5. Назначение прав пользователю БД
Краткие итоги. Были рассмотрены ключевые компоненты системы безопасности MS SQL Server 2008, определено назначение серверных ролей и ролей БД. На примерах показаны способы разрешения или запрещения определенных действий пользователя на сервере.