Поделиться через


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)

CREATE LOGIN (Transact-SQL)

Функции безопасности (Transact-SQL)

Хранимые процедуры безопасности (Transact-SQL)

Основные понятия

Участники (компонент Database Engine)

Разрешения (компонент Database Engine)