DENY, запрет разрешений на участника базы данных (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
См. также