DENY, запрет разрешения участника на уровне сервера (Transact-SQL)
Запрещает разрешения, предоставленные для имени входа SQL Server.
Применимо для следующих объектов: SQL Server (начиная с SQL Server 2008 до текущей версии). |
Cинтаксические обозначения в Transact-SQL
Синтаксис
DENY permission [ ,...n ] }
ON
{ [ LOGIN :: SQL_Server_login ]
| [ SERVER ROLE :: server_role ] }
TO <server_principal> [ ,...n ]
[ CASCADE ]
[ AS SQL_Server_login ]
<server_principal> ::=
SQL_Server_login
| SQL_Server_login_from_Windows_login
| SQL_Server_login_from_certificate
| SQL_Server_login_from_AsymKey
| server_role
Аргументы
permission
Определяет разрешение, т.е. доступ, который запрещается для имени входа SQL Server. Список разрешений указан в подразделе «Примечания» далее в этом разделе.LOGIN :: SQL_Server_login
Задает имя входа SQL Server, для которого разрешение запрещается. Требуется квалификатор области (::).SERVER ROLE :: server_role
Указывает роль сервера, для которой запрещается разрешение. Требуется квалификатор области (::).TO <server_principal>
Указывает имя входа SQL Server или роль сервера, которой представляется разрешение.TO SQL_Server_login
Задает имя входа SQL Server, для которого запрещается разрешение.SQL_Server_login
Задает имя входа SQL Server.SQL_Server_login_from_Windows_login
Задает имя входа SQL Server, созданное из имени входа Windows.SQL_Server_login_from_certificate
Указывает имя входа SQL Server, сопоставленного с сертификатом.SQL_Server_login_from_AsymKey
Указывает имя входа SQL Server, сопоставленного с ассиметричным ключом.server_role
Название определения роли сервера.CASCADE
Показывает, что запрещаемое разрешение также запрещается для других участников, которым оно было предоставлено данным участником.AS SQL_Server_login
Задает имя входа SQL Server, по которому участник, выполняющий этот запрос, получает право запретить разрешение.
Замечания
Разрешения в области сервера могут быть запрещены только в том случае, если текущей базой данных является master.
Данные о разрешениях сервера можно просмотреть в представлении каталога sys.server_permissions. Данные об участниках на уровне сервера можно просмотреть в представлении каталога sys.server_principals.
Инструкция DENY завершается ошибкой, если разрешение запрещается участнику, который ранее предоставил его через GRANT OPTION, и при этом не указано предложение CASCADE.
Имена входа SQL Server и роли сервера являются защищаемыми объектами уровня сервера. Наиболее специфичные и ограниченные разрешения, которые могут быть запрещены для имени входа или роли сервера SQL Server, перечислены в следующей таблице вместе с общими разрешениями, неявно содержащими их.
Разрешение для имени входа SQL Server или роли сервера |
Содержится в разрешении для имени входа SQL Server или роли сервера |
Содержится в разрешении сервера |
---|---|---|
CONTROL |
CONTROL |
CONTROL SERVER |
IMPERSONATE |
CONTROL |
CONTROL SERVER |
VIEW DEFINITION |
CONTROL |
VIEW ANY DEFINITION |
ALTER |
CONTROL |
ALTER ANY LOGIN ALTER ANY SERVER ROLE |
Разрешения
Для имен входа требуется разрешение CONTROL на имя входа или разрешение ALTER ANY LOGIN на сервер.
Для ролей сервера требуется разрешение CONTROL на роль сервера или разрешение ALTER ANY SERVER ROLE на сервер.
Примеры
А.Запрещение разрешения IMPERSONATE на имя входа
В следующем примере производится запрещение разрешения IMPERSONATE на имя входа SQL Server WanidaBenshoof для имени входа SQL Server, созданного из пользователя Windows AdvWorks\YoonM.
USE master;
DENY IMPERSONATE ON LOGIN::WanidaBenshoof TO [AdvWorks\YoonM];
GO
Б.Запрещение разрешения VIEW DEFINITION с параметром CASCADE
В следующем примере производится запрещение разрешения VIEW DEFINITION на имя входа SQL Server EricKurjan для имени входа SQL Server RMeyyappan. Параметр CASCADE указывает, что разрешение VIEW DEFINITION на EricKurjan будет также запрещено участникам, которым RMeyyappan его предоставил ранее.
USE master;
DENY VIEW DEFINITION ON LOGIN::EricKurjan TO RMeyyappan
CASCADE;
GO
В.Запрещение разрешения VIEW DEFINITION для роли сервера
В следующем примере разрешение VIEW DEFINITION для роли сервера Sales запрещается для роли сервера Auditors.
USE master;
DENY VIEW DEFINITION ON SERVER ROLE::Sales TO Auditors ;
GO
См. также
Справочник
sys.server_principals (Transact-SQL)
sys.server_permissions (Transact-SQL)
GRANT, предоставление разрешений участникам на уровне сервера (Transact-SQL)
REVOKE, отмена разрешений участника на уровне сервера (Transact-SQL)
Функции безопасности (Transact-SQL)
Хранимые процедуры безопасности (Transact-SQL)