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)
REVOKE, отмена разрешений сервера (Transact-SQL)
sys.fn_builtin_permissions (Transact-SQL)
sys.fn_my_permissions (Transact-SQL)
HAS_PERMS_BY_NAME (Transact-SQL)