GRANT, предоставления разрешения на схему (Transact-SQL)
Предоставляет разрешения на работу со схемой.
Соглашения о синтаксисе в Transact-SQL
Синтаксис
GRANT permission [ ,...n ] ON SCHEMA :: schema_name
TO database_principal [ ,...n ]
[ WITH GRANT OPTION ]
[ AS granting_principal ]
Аргументы
- permission
Разрешение на работу со схемой, которое может быть предоставлено. Возможные разрешения приведены ниже.
- ON SCHEMA :: схема*_name*
Схема, на работу с которой предоставляется разрешение. Квалификатор области «::» является необходимым.
database_principal
Участник, которому предоставляется разрешение, может быть одним из следующих:- пользователь базы данных
- роль базы данных
- роль приложения
- пользователь базы данных, сопоставленный имени входа Windows
- пользователь базы данных, сопоставленный группе Windows
- пользователь базы данных, сопоставленный сертификатом
- пользователь базы данных, сопоставленный асимметричному ключу
- пользователь базы данных, не сопоставленный серверу-участнику.
- GRANT OPTION
Показывает, что участнику будет дана возможность предоставлять указанное разрешение другим участникам.
AS granting_principal
Указывает участника, от которого участник, выполняющий этот запрос, получает право на предоставление разрешения. Может быть одним из следующих:- пользователь базы данных
- роль базы данных
- роль приложения
- пользователь базы данных, сопоставленный имени входа Windows
- пользователь базы данных, сопоставленный группе Windows
- пользователь базы данных, сопоставленный сертификату
- пользователь базы данных, сопоставленный асимметричному ключу
- пользователь базы данных, не сопоставленный серверу-участнику.
Замечания
Важно! |
---|
Сочетание разрешений ALTER и REFERENCE в некоторых случаях может позволить просматривать данные или выполнять несанкционированные функции. Например: Пользователь с разрешением ALTER на таблицу и разрешением REFERENCE на функцию может создавать вычисляемый столбец на основе функции и в результате — выполнять ее. В этом случае пользователю также требуется разрешение SELECT на вычисляемый столбец. |
Схема является защищаемым объектом уровня базы данных, содержащимся в базе данных, которая является материнской по отношению к нему в иерархии разрешений. Ниже перечислены наиболее специфичные и ограниченные разрешения (вместе с наиболее общими разрешениями, из которых они вытекают), которые могут быть предоставлены для схемы.
Разрешение схемы | Содержится в разрешении схемы | Содержится в разрешении базы данных |
---|---|---|
CONTROL |
CONTROL |
CONTROL |
TAKE OWNERSHIP |
CONTROL |
CONTROL |
ALTER |
CONTROL |
ALTER ANY SCHEMA |
EXECUTE |
CONTROL |
EXECUTE |
INSERT |
CONTROL |
INSERT |
DELETE |
CONTROL |
DELETE |
UPDATE |
CONTROL |
UPDATE |
SELECT |
CONTROL |
SELECT |
REFERENCES |
CONTROL |
REFERENCES |
VIEW DEFINITION |
CONTROL |
VIEW DEFINITION |
Внимание! |
---|
Пользователь с разрешением ALTER на схему может при помощи цепочки владения получить доступ к защищаемым сущностям других схем, включая такие сущности, к которым пользователю явно запрещен доступ. Это происходит потому, что цепочка владения обходит проверки разрешений на объекты, к которым выполняется обращение, когда они принадлежат участнику, владеющему объектами, которые на них ссылаются. Пользователь с разрешением ALTER на схему может создавать процедуры, синонимы и представления, принадлежащие владельцу схемы. Эти объекты получат доступ (через цепочку владения) к данным других схем, принадлежащих владельцу схемы. По возможности следует избегать предоставления разрешения ALTER на схему, если ее владельцу принадлежат также другие схемы. |
Например, эта проблема может возникнуть в следующих сценариях. Предполагается, что у пользователя U1 есть разрешение ALTER на схему S1. Пользователю U1 запрещен доступ к объекту таблицы T1 в схеме S2. Схемы S1 и S2 принадлежат одному и тому же владельцу.
У пользователя U1 есть разрешения CREATE PROCEDURE на базу данных и EXECUTE на схему S1. Поэтому пользователь U1 может создать хранимую процедуру, а затем получить доступ к запрещенному объекту T1 из этой хранимой процедуры.
У пользователя U1 есть разрешения CREATE SYNONYM на базу данных и SELECT на схему S1. Поэтому пользователь U1 может создать в схеме S1 синоним для запрещенного объекта T1, а затем получить доступ к этому объекту с помощью синонима.
У пользователя U1 есть разрешения CREATE VIEW на базу данных и SELECT на схему S1. Поэтому пользователь U1 может создать в схеме S1 представления для запроса данных из запрещенного объекта T1, а затем получить доступ к этому объекту с помощью представления.
Дополнительные сведения см. в статье базы знаний Майкрософт номер 914847.
Разрешения
Объект, предоставляющий разрешение (или участник, указанный параметром AS), должен иметь либо само разрешение, выданное с помощью GRANT OPTION, либо разрешение более высокого уровня, из которого вытекает предоставляемое разрешение.
Если используется параметр AS, вступают в силу следующие дополнительные требования.
AS granting_principal | Необходимо дополнительное разрешение |
---|---|
Пользователь базы данных |
Разрешение IMPERSONATE, связанное с пользователем, членство в фиксированной роли db_securityadmin базы данных, членство в фиксированной роли db_owner базы данных или членство в фиксированной серверной роли sysadmin. |
Пользователь базы данных, сопоставленный имени входа Windows |
Разрешение IMPERSONATE, связанное с пользователем, членство в фиксированной роли db_securityadmin базы данных, членство в фиксированной роли db_owner базы данных или членство в фиксированной серверной роли sysadmin. |
Пользователь базы данных, сопоставленный группе Windows |
Членство в группе Windows, членство в фиксированной роли db_securityadmin базы данных, членство в фиксированной роли db_owner базы данных или членство в фиксированной серверной роли sysadmin. |
Пользователь базы данных, сопоставленный сертификату |
Членство в фиксированной роли db_securityadmin базы данных, членство в фиксированной роли db_owner базы данных или членство в фиксированной серверной роли sysadmin. |
Пользователь базы данных, сопоставленный асимметричному ключу |
Членство в фиксированной роли db_securityadmin базы данных, членство в фиксированной роли db_owner базы данных или членство в фиксированной серверной роли sysadmin. |
Пользователь базы данных, не сопоставленный ни одному серверу-участнику |
Разрешение IMPERSONATE, связанное с пользователем, членство в фиксированной роли db_securityadmin базы данных, членство в фиксированной роли db_owner базы данных или членство в фиксированной серверной роли sysadmin. |
Роль базы данных |
Разрешение ALTER, связанное с ролью, членство в фиксированной роли db_securityadmin базы данных, членство в фиксированной роли db_owner базы данных или членство в фиксированной серверной роли sysadmin. |
Роль приложения |
Разрешение ALTER, связанное с ролью, членство в фиксированной роли db_securityadmin базы данных, членство в фиксированной роли db_owner базы данных или членство в фиксированной серверной роли sysadmin. |
Владельцы объектов могут предоставлять разрешения на работу с объектами, которыми они владеют. Участники, имеющие разрешение CONTROL, связанное с защищаемым объектом, могут предоставлять разрешения на работу с этим объектом.
Сущности, получившие разрешение CONTROL SERVER, такие как элементы фиксированной серверной роли sysadmin, могут предоставлять любые разрешения на работу с любыми защищаемыми объектами сервера. Сущности, получившие разрешение CONTROL, связанное с базой данных, такие как элементы фиксированной роли db_owner базы данных, могут предоставлять любые разрешения на работу с любыми защищаемыми объектами в базе данных. Владельцы разрешения CONTROL, связанного со схемой, могут предоставлять любые разрешения на работу с любыми объектами, содержащимися в данной схеме.
Примеры
А. Предоставление пользователю guest разрешения INSERT на схему HumanResources.
GRANT INSERT ON SCHEMA :: HumanResources TO guest;
Б. Предоставление пользователю базы данных WilJo разрешения SELECT на схему Person.
GRANT SELECT ON SCHEMA :: Person TO WilJo WITH GRANT OPTION;
См. также
Справочник
DENY, запрет разрешений на схему (Transact-SQL)
REVOKE, отмена разрешений на схему (Transact-SQL)
Инструкция GRANT (Transact-SQL)
CREATE CERTIFICATE (Transact-SQL)
CREATE ASYMMETRIC KEY (Transact-SQL)
CREATE APPLICATION ROLE (Transact-SQL)
Другие ресурсы
Разрешения
Участники
Иерархия средств шифрования