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 APPLICATION ROLE (Transact-SQL)
Инструкция GRANT (Transact-SQL)