Инструкция GRANT (Transact-SQL)

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Управляемый экземпляр SQL Azure Конечная точка аналитики аналитики Synapse Analytics Analytics (PDW)SQL Analyticsв Microsoft FabricХранилище в Microsoft Fabric

Предоставляет разрешения на защищаемый объект участнику. Общая концепция заключается в том, чтобы GRANT <some permission> ON <some object> TO <some user, login, or group>. Общее описание разрешений см. в разделе Разрешения (ядро СУБД).

Соглашения о синтаксисе Transact-SQL

Синтаксис

Синтаксис ДЛЯ SQL Server и База данных SQL Azure.

-- Simplified syntax for GRANT
GRANT { ALL [ PRIVILEGES ] }
      | permission [ ( column [ , ...n ] ) ] [ , ...n ]
      [ ON [ class :: ] securable ] TO principal [ , ...n ]
      [ WITH GRANT OPTION ] [ AS principal ]

Синтаксис Для Azure Synapse Analytics и Parallel Data Warehouse и Microsoft Fabric.

GRANT
    <permission> [ , ...n ]
    [ ON [ <class_type> :: ] securable ]
    TO principal [ , ...n ]
    [ WITH GRANT OPTION ]
[;]

<permission> ::=
{ see the tables below }

<class_type> ::=
{
      LOGIN
    | DATABASE
    | OBJECT
    | ROLE
    | SCHEMA
    | USER
}

Примечание.

Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.

Аргументы

ВСЕ

Этот параметр устарел и сохранен только для поддержки обратной совместимости. Он не предоставляет все возможные разрешения. ALL Предоставление эквивалентно предоставлению следующих разрешений.

Защищаемый объект Разрешения
База данных BACKUP DATABASE, BACKUP LOG, CREATE DATABASE, CREATE DEFAULTCREATE TABLECREATE FUNCTIONCREATE PROCEDURECREATE RULEиCREATE VIEW
Скалярные функции EXECUTE и REFERENCES.
Функция с табличным значением DELETE, , INSERT, SELECTREFERENCESиUPDATE
Хранимая процедура EXECUTE
Таблица DELETE, , INSERT, SELECTREFERENCESиUPDATE
Представления DELETE, , INSERT, SELECTREFERENCESиUPDATE

PRIVILEGES

Включено для обеспечения совместимости с требованиями ISO. Не изменяет поведение ALL.

permission

Имя разрешения. Допустимые сопоставления разрешений для защищаемых объектов описаны в следующих разделах.

column

Указывает имя столбца таблицы, на который предоставляется разрешение. Скобки ( и ) обязательны.

class

Указывает класс защищаемого объекта, для которого предоставляется разрешение. Требуется квалификатор :: область.

securable

Указывает защищаемый объект, на который предоставляется разрешение.

TO principal

Имя субъекта. Состав участников, которым можно предоставлять разрешения, меняется в зависимости от защищаемого объекта. В следующих разделах приведены допустимые сочетания.

GRANT OPTION

Показывает, что получающему разрешению будет также дана возможность предоставлять указанное разрешение другим участникам.

AS principal

AS <principal> Используйте предложение, чтобы указать, что субъект, записанный в качестве участника разрешения, должен быть субъектом, кроме лица, выполняющего инструкцию. Например, предположим, что у пользователя Mary есть principal_id12субъект и пользователь Raul15. Мэри выполняет GRANT SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul; таблицу теперь sys.database_permissions указывает на то, что grantor_prinicpal_id15 оператор был (Raul), даже если инструкция была фактически выполнена пользователем 12 (Mary).

AS Использование предложения обычно не рекомендуется, если необходимо явно определить цепочку разрешений. Дополнительные сведения см. в сводке алгоритма проверки разрешений.

Использование AS в этом операторе не означает возможность олицетворения другого пользователя.

Замечания

Полный синтаксис инструкции GRANT является сложным. Предыдущая синтаксическая схема была упрощена, чтобы привлечь внимание к своей структуре. Полный синтаксис предоставления разрешений для определенных защищаемых объектов описан в статьях, перечисленных далее в этой статье.

Инструкцию REVOKE можно использовать для удаления предоставленных разрешений, и DENY инструкцию можно использовать для предотвращения получения субъектом определенного разрешения через .GRANT

Предоставление разрешения удаляет DENY или REVOKE предоставляет это разрешение для указанного защищаемого объекта. Если то же разрешение запрещено на более высоком область, содержащей защищаемый объект, DENY имеет приоритет. Но отмена предоставленного разрешения на более высокий область не имеет приоритета.

Разрешения уровня базы данных выдаются в пределах области указанной базы данных. Если пользователю нужны разрешения на объекты в другой базе данных, необходимо создать для него учетную запись в этой базе данных или предоставить ему разрешение на доступ как к текущей, так и к другим базам данных.

Внимание

Уровень таблицы DENY не имеет приоритета над уровнем GRANTстолбца. Эта несовместимость в иерархии разрешений предусмотрена в целях гарантии обратной совместимости. В будущем выпуске она будет удалена.

Системная хранимая sp_helprotect процедура сообщает разрешения на защищаемый уровень базы данных.

В Microsoft Fabric CREATE USER нельзя явно выполнять в настоящее время. При GRANT выполнении DENY пользователя создается автоматически.

WITH GRANT OPTION

Указывает GRANT ... WITH GRANT OPTION , что субъект безопасности, получающий разрешение, дает возможность предоставить указанное разрешение другим учетным записям безопасности. Если субъект, получающий разрешение, является ролью или группой Windows, AS предложение должно использоваться, если разрешение объекта должно быть дополнительно предоставлено пользователям, которые не являются членами группы или роли. Так как только пользователь, а не группа или роль, может выполнять GRANT инструкцию, определенный член группы или роли должен использовать AS предложение для явного вызова членства в роли или группе при предоставлении разрешения. В следующем примере показано, как WITH GRANT OPTION используется при предоставлении роли или группе Windows.

-- Execute the following as a database owner
GRANT EXECUTE ON TestProc TO TesterRole WITH GRANT OPTION;
EXEC sp_addrolemember TesterRole, User1;

-- Execute the following as User1
-- The following fails because User1 does not have the permission as the User1
GRANT EXECUTE ON TestProc TO User2;

-- The following succeeds because User1 invokes the TesterRole membership
GRANT EXECUTE ON TestProc TO User2 AS TesterRole;

Диаграмма разрешений SQL Server

Диаграмма размера плаката всех разрешений ядро СУБД в формате PDF см. в разделе https://aka.ms/sql-permissions-poster.

Разрешения

Участник (или субъект, указанный с AS параметром), должен иметь либо разрешение с GRANT OPTIONразрешением , либо более высоким разрешением, которое подразумевает предоставление разрешения. При использовании AS параметра применяются дополнительные требования. Дополнительные сведения см. в статьях, посвященных конкретным защищаемым объектам.

Владельцы объектов могут предоставлять разрешения на объекты, которыми они владеют. Субъекты с CONTROL разрешением на защищаемую среду могут предоставить разрешение на обеспечение безопасности.

Предоставление разрешений, таких как члены CONTROL SERVERпредопределенных ролей сервера sysadmin , может предоставить любое разрешение на любой защищаемый сервер. CONTROL Предоставление разрешений на базу данных, например членов предопределенных ролей базы данных db_owner, может предоставить любое разрешение на любой защищаемый объект в базе данных. CONTROL Предоставление разрешений на схему может предоставить любое разрешение на любой объект в схеме.

Примеры

В приведенной ниже таблице перечислены защищаемые объекты и статьи, в которых описывается синтаксис инструкций по работе с ними.

Защищаемый объект Синтаксис GRANT
Роль приложения Grant Database Principal Permissions (Transact-SQL)
Сборка Grant Assembly Permissions (Transact-SQL)
Асимметричный ключ Grant Asymmetric Key Permissions (Transact-SQL)
Группа доступности Разрешения группы доступности GRANT (Transact-SQL)
Сертификат Grant Certificate Permissions (Transact-SQL)
Contract Grant Service Broker Permissions (Transact-SQL)
База данных Grant Database Permissions (Transact-SQL)
Учетные данные для базы данных GRANT, предоставление разрешений на учетные данные для базы данных (Transact-SQL)
Конечная точка Grant Endpoint Permissions (Transact-SQL)
Полнотекстовый каталог ПРЕДОСТАВЛЕНИЕ разрешений полнотекстового текста (Transact-SQL)
Полнотекстовый список стоп-слов ПРЕДОСТАВЛЕНИЕ разрешений полнотекстового текста (Transact-SQL)
Function GRANT, предоставление разрешений на объект (Transact-SQL)
Имя входа Grant Server Principal Permissions (Transact-SQL)
Тип сообщений Grant Service Broker Permissions (Transact-SQL)
Object GRANT, предоставление разрешений на объект (Transact-SQL)
Queue GRANT, предоставление разрешений на объект (Transact-SQL)
Привязка удаленной службы Grant Service Broker Permissions (Transact-SQL)
Role Grant Database Principal Permissions (Transact-SQL)
Маршрут Grant Service Broker Permissions (Transact-SQL)
Схема Grant Schema Permissions (Transact-SQL)
Список свойств поиска Grant Search Property List Permissions (Transact-SQL)
Сервер GRANT, предоставление разрешений на сервер (Transact-SQL)
Service Grant Service Broker Permissions (Transact-SQL)
Хранимая процедура GRANT, предоставление разрешений на объект (Transact-SQL)
Симметричный ключ Grant Symmetric Key Permissions (Transact-SQL)
Синоним GRANT, предоставление разрешений на объект (Transact-SQL)
Системные объекты Grant System Object Permissions (Transact-SQL)
Таблица GRANT, предоставление разрешений на объект (Transact-SQL)
Тип Разрешения типа GRANT (Transact-SQL)
User Grant Database Principal Permissions (Transact-SQL)
Представления GRANT, предоставление разрешений на объект (Transact-SQL)
Коллекция схем XML Grant XML Schema Collection Permissions (Transact-SQL)