DENY, запрет разрешения участника на уровне сервера (Transact-SQL)

Область применения: SQL Server Управляемый экземпляр SQL Azure

Запрещает разрешения, предоставленные при входе SQL Server.

Соглашения о синтаксисе 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 SERVER
IMPERSONATE ПРОИЗВОДИТЕЛЬНОСТИ CONTROL SERVER
VIEW DEFINITION ПРОИЗВОДИТЕЛЬНОСТИ VIEW ANY DEFINITION
ИЗМЕНИТЬ ПРОИЗВОДИТЕЛЬНОСТИ 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  

B. Запрещение разрешения VIEW DEFINITION с параметром CASCADE

В следующем примере запрещено VIEW DEFINITION разрешение на вход SQL Server в имя входа EricKurjan RMeyyappanSQL Server. Параметр CASCADE указывает, что разрешение VIEW DEFINITION на EricKurjan будет также запрещено участникам, которым RMeyyappan его предоставил ранее.

USE master;  
DENY VIEW DEFINITION ON LOGIN::EricKurjan TO RMeyyappan   
    CASCADE;  
GO   

C. Запрещение разрешения 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 Server Principal Permissions (Transact-SQL)
REVOKE Server Principal Permissions (Transact-SQL)
CREATE LOGIN (Transact-SQL)
Субъекты (ядро СУБД)
Разрешения (ядро СУБД)
Функция безопасности (Transact-SQL)
Хранимые процедуры безопасности (Transact-SQL)