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


DENY, запрет разрешений на сервере (Transact-SQL)

Отзывает разрешения на сервере.

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2008 до текущей версии).

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL

Синтаксис

DENY permission [ ,...n ] 
    TO <grantee_principal> [ ,...n ]
    [ CASCADE ]
    [ AS <grantor_principal> ] 

<grantee_principal> ::= SQL_Server_login 
    | SQL_Server_login_mapped_to_Windows_login
    | SQL_Server_login_mapped_to_Windows_group
    | SQL_Server_login_mapped_to_certificate
    | SQL_Server_login_mapped_to_asymmetric_key
    | server_role 

<grantor_principal> ::= SQL_Server_login 
    | SQL_Server_login_mapped_to_Windows_login
    | SQL_Server_login_mapped_to_Windows_group
    | SQL_Server_login_mapped_to_certificate
    | SQL_Server_login_mapped_to_asymmetric_key
    | server_role

Аргументы

  • permission
    Указывает разрешение, которое может быть запрещено на сервере. Список разрешений см. в подразделе «Замечания» далее в этом разделе.

  • CASCADE
    Показывает, что запрещаемое разрешение также запрещается для других участников, которым оно было предоставлено данным участником.

  • TO <server_principal>
    Указывает участника, для которого запрещается разрешение.

  • AS <grantor_principal>
    Указывает участника, от которого участник, выполняющий данный запрос, получает право на запрещение разрешения.

  • SQL_Server_login
    Указывает имя входа SQL Server.

  • SQL_Server_login_mapped_to_Windows_login
    Указывает имя входа SQL Server, сопоставленное с именем входа Windows.

  • SQL_Server_login_mapped_to_Windows_group
    Указывает имя входа SQL Server, сопоставленное с группой Windows.

  • SQL_Server_login_mapped_to_certificate
    Указывает имя входа SQL Server, сопоставленное с сертификатом.

  • SQL_Server_login_mapped_to_asymmetric_key
    Указывает имя входа SQL Server, сопоставленное с асимметричным ключом.

  • server_role
    Указывает роль сервера.

Замечания

Разрешения в области сервера могут быть запрещены только в том случае, если текущей базой данных является master.

Сведения о разрешениях для сервера можно просмотреть в представлении каталога sys.server_permissions, а сведения об участниках на уровне сервера — в представлении каталога sys.server_principals. Сведения о членстве ролей сервера можно просмотреть в представлении каталога sys.server_role_members.

Сервер является наивысшим уровнем в иерархии разрешений. Наиболее часто указываемые и ограниченные разрешения, которые могут быть запрещены на сервере, перечислены в следующей таблице.

Разрешение сервера

Содержится в разрешении сервера

ADMINISTER BULK OPERATIONS

CONTROL SERVER

ALTER ANY AVAILABILITY GROUP

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2012 до текущей версии).

CONTROL SERVER

ALTER ANY CONNECTION

CONTROL SERVER

ALTER ANY CREDENTIAL

CONTROL SERVER

ALTER ANY DATABASE

CONTROL SERVER

ALTER ANY ENDPOINT

CONTROL SERVER

ALTER ANY EVENT NOTIFICATION

CONTROL SERVER

ALTER ANY EVENT SESSION

CONTROL SERVER

ALTER ANY LINKED SERVER

CONTROL SERVER

ALTER ANY LOGIN

CONTROL SERVER

ALTER ANY SERVER AUDIT

CONTROL SERVER

ALTER ANY SERVER ROLE

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2012 до текущей версии).

CONTROL SERVER

ALTER RESOURCES

CONTROL SERVER

ALTER SERVER STATE

CONTROL SERVER

ALTER SETTINGS

CONTROL SERVER

ALTER TRACE

CONTROL SERVER

AUTHENTICATE SERVER

CONTROL SERVER

CONNECT ANY DATABASE

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2014 до текущей версии).

CONTROL SERVER

CONNECT SQL

CONTROL SERVER

CONTROL SERVER

CONTROL SERVER

CREATE ANY DATABASE

ALTER ANY DATABASE

CREATE AVAILABILITY GROUP

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2012 до текущей версии).

ALTER ANY AVAILABILITY GROUP

CREATE DDL EVENT NOTIFICATION

ALTER ANY EVENT NOTIFICATION

CREATE ENDPOINT

ALTER ANY ENDPOINT

CREATE SERVER ROLE

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2012 до текущей версии).

ALTER ANY SERVER ROLE

CREATE TRACE EVENT NOTIFICATION

ALTER ANY EVENT NOTIFICATION

EXTERNAL ACCESS ASSEMBLY

CONTROL SERVER

IMPERSONATE ANY LOGIN

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2014 до текущей версии).

CONTROL SERVER

SELECT ALL USER SECURABLES

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2014 до текущей версии).

CONTROL SERVER

SHUTDOWN

CONTROL SERVER

UNSAFE ASSEMBLY

CONTROL SERVER

VIEW ANY DATABASE

VIEW ANY DEFINITION

VIEW ANY DEFINITION

CONTROL SERVER

VIEW SERVER STATE

ALTER SERVER STATE

Замечания

Следующие три разрешения сервера добавлены в SQL Server 2014.

  • Разрешение CONNECT ANY DATABASE
    Предоставьте разрешение CONNECT ANY DATABASE имени входа, которому нужно подключаться ко всем существующим базам данных и ко всем новым базам, которые могут быть созданы в будущем. Не предоставляет каких-либо разрешений в базах данных за пределами соединения. Объедините с SELECT ALL USER SECURABLES или VIEW SERVER STATE, чтобы разрешить процессу аудита просмотр всех данных или всех состояний базы данных в экземпляре SQL Server.

  • Разрешение IMPERSONATE ANY LOGIN
    После предоставления разрешает процессу среднего уровня олицетворять учетную запись клиентов, подключающихся к ней, так как она подключается к базам данных. При запрещении имени входа с высоким уровнем прав может быть запрещено олицетворение других имен входа. Например, имени входа с разрешением CONTROL SERVER можно запретить олицетворение других имен входа.

  • Разрешение SELECT ALL USER SECURABLES
    После предоставления имя входа, например аудитор, сможет просматривать данные во всех базах данных, к которым может подключаться пользователь. При запрещении предотвращает доступ к объектам, если они не будут находиться в схеме sys.

Разрешения

Необходимо иметь разрешение CONTROL SERVER или быть владельцем защищаемого объекта. При использовании предложения AS указанный участник должен быть владельцем защищаемого объекта, разрешения на который у него запрещены.

Примеры

А.Запрет разрешения CONNECT SQL для пользователя SQL Server с указанным именем входа и участников, которым этот пользователь его предоставил

В следующем примере разрешение CONNECT SQL запрещается для пользователя SQL Server с именем входа Annika и для участников, которым он предоставил это разрешение.

USE master;
DENY CONNECT SQL TO Annika CASCADE;
GO

Б.Запрет разрешения CREATE ENDPOINT для пользователя SQL Server с помощью параметра AS

В следующем примере разрешение CREATE ENDPOINT запрещается для пользователя ArifS. Пример использует параметр AS для указания пользователя MandarP в качестве участника, от которого текущий участник получает права для выполнения.

USE master;
DENY CREATE ENDPOINT TO ArifS AS MandarP;
GO

См. также

Справочник

Инструкция GRANT (Transact-SQL)

DENY (Transact-SQL)

DENY, запрет разрешений на сервере (Transact-SQL)

REVOKE, отмена разрешений сервера (Transact-SQL)

sys.fn_builtin_permissions (Transact-SQL)

sys.fn_my_permissions (Transact-SQL)

HAS_PERMS_BY_NAME (Transact-SQL)

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

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