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


DENY, запрет разрешений на участника базы данных (Transact-SQL)

Запрещает разрешения, предоставленные пользователю базы данных, роли базы данных или роли приложения.

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

Синтаксис

DENY permission [ ,...n ]  
    ON 
    {  [ USER :: database_user ]
       | [ ROLE :: database_role ]
       | [ APPLICATION ROLE :: application_role ]
    }
    TO <database_principal> [ ,...n ]
    [ CASCADE ]
        [ AS <database_principal> ]

<database_principal> ::=
        Database_user 
    | Database_role 
    | Application_role 
    | Database_user_mapped_to_Windows_User 
    | Database_user_mapped_to_Windows_Group 
    | Database_user_mapped_to_certificate 
    | Database_user_mapped_to_asymmetric_key 
    | Database_user_with_no_login

Аргументы

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

  • USER ::database_user
    Указывает класс и имя пользователя, для которых запрещается разрешение. Требуется квалификатор области (::).

  • ROLE ::database_role
    Указывает класс и имя роли, для которой запрещается разрешение. Требуется квалификатор области (::).

  • APPLICATION ROLE ::application_role
    Указывает класс и имя роли приложения, для которой запрещается разрешение. Требуется квалификатор области (::).

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

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

  • Database_user
    Указывает пользователя базы данных.

  • Database_role
    Указывает роль базы данных.

  • Application_role
    Указывает роль приложения.

  • Database_user_mapped_to_Windows_User
    Указывает пользователя базы данных, сопоставленного с пользователем Windows.

  • Database_user_mapped_to_Windows_Group
    Указывает пользователя базы данных, сопоставленного с группой Windows.

  • Database_user_mapped_to_certificate
    Указывает пользователя базы данных, сопоставленного с сертификатом.

  • Database_user_mapped_to_asymmetric_key
    Указывает пользователя базы данных, сопоставленного с асимметричным ключом.

  • Database_user_with_no_login
    Указывает пользователя базы данных, не сопоставленного с участником уровня сервера.

Замечания

Разрешения пользователя базы данных

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

Разрешение пользователя базы данных

Содержится в разрешении пользователя базы данных

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

CONTROL

CONTROL

CONTROL

IMPERSONATE

CONTROL

CONTROL

ALTER

CONTROL

ALTER ANY USER

VIEW DEFINITION

CONTROL

VIEW DEFINITION

Разрешения роли базы данных

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

Разрешение роли базы данных

Содержится в разрешении роли базы данных

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

CONTROL

CONTROL

CONTROL

TAKE OWNERSHIP

CONTROL

CONTROL

ALTER

CONTROL

ALTER ANY ROLE

VIEW DEFINITION

CONTROL

VIEW DEFINITION

Разрешения роли приложения

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

Разрешение роли приложения

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

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

CONTROL

CONTROL

CONTROL

ALTER

CONTROL

ALTER ANY APPLICATION ROLE

VIEW DEFINITION

CONTROL

VIEW DEFINITION

Разрешения

Требуется разрешение CONTROL для указанного участника или разрешение, неявно включающее в себя разрешение CONTROL.

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

Примеры

А.Запрет разрешения CONTROL на одного пользователя другому

Следующий пример отклоняет разрешение CONTROL от пользователя Wanida базы данных AdventureWorks2012 к пользователю RolandX.

USE AdventureWorks2012;
DENY CONTROL ON USER::Wanida TO RolandX;
GO

Б.Запрет разрешения VIEW DEFINITION на роль пользователю, которому оно было предоставлено параметром GRANT OPTION

Следующий пример запрещает разрешение VIEW DEFINITION для роли SammamishParking базы данных AdventureWorks2012 пользователю базы данных JinghaoLiu. Используется параметр CASCADE, поскольку пользователю JinghaoLiu было предоставлено разрешение VIEW DEFINITION параметром WITH GRANT OPTION.

USE AdventureWorks2012;
DENY VIEW DEFINITION ON ROLE::SammamishParking 
    TO JinghaoLiu CASCADE;
GO

В.Запрет разрешения IMPERSONATE на пользователя роли приложения

Следующий пример запрещает разрешение IMPERSONATE для пользователя HamithaL базы данных AdventureWorks2012 роли приложения AccountsPayable17.

USE AdventureWorks2012;
DENY IMPERSONATE ON USER::HamithaL TO AccountsPayable17;
GO  

См. также

Справочник

GRANT, предоставление разрешений на участника базы данных (Transact-SQL)

REVOKE, отмена разрешений на участника базы данных (Transact-SQL)

sys.database_principals (Transact-SQL)

sys.database_permissions (Transact-SQL)

CREATE USER (Transact-SQL)

CREATE APPLICATION ROLE (Transact-SQL)

CREATE ROLE (Transact-SQL)

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

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

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

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