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
базы данных AdventureWorks
к пользователю RolandX
.
USE AdventureWorks;
DENY CONTROL ON USER::Wanida TO RolandX;
GO
Б. Запрет разрешения VIEW DEFINITION от роли к пользователю, которому оно было предоставлено параметром GRANT OPTION
Следующий пример запрещает разрешение VIEW DEFINITION
для роли SammamishParking
базы данных AdventureWorks
пользователю базы данных JinghaoLiu
. Используется параметр CASCADE
, поскольку пользователю JinghaoLiu
было предоставлено разрешение VIEW DEFINITION параметром WITH GRANT OPTION.
USE AdventureWorks;
DENY VIEW DEFINITION ON ROLE::SammamishParking
TO JinghaoLiu CASCADE;
GO
В. Запрет разрешения IMPERSONATE от пользователя к роли приложения
Следующий пример запрещает разрешение IMPERSONATE
для пользователя HamithaL
базы данных AdventureWorks
роли приложения AccountsPayable17
.
USE AdventureWorks;
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)