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


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
    • пользователь базы данных, сопоставленный сертификату
    • пользователь базы данных, сопоставленный асимметричному ключу
    • пользователь базы данных, не сопоставленный серверу-участнику.

Замечания

ms187940.note(ru-ru,SQL.90).gifВажно!
Сочетание разрешений 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

ms187940.Caution(ru-ru,SQL.90).gifВнимание!
Пользователь с разрешением 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)

Другие ресурсы

Разрешения
Участники
Иерархия средств шифрования

Справка и поддержка

Получение помощи по SQL Server 2005