Инструкция GRANT (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в базе данных Microsoft Fabric SQL в Microsoft Fabric
Предоставляет разрешения на защищаемый объект участнику. Общая концепция заключается в том, чтобы GRANT <some permission> ON <some object> TO <some user, login, or group>
. Общее описание разрешений см. в разделе Разрешения (ядро СУБД).
Соглашения о синтаксисе Transact-SQL
Синтаксис
Синтаксис базы данных SQL Server, База данных SQL Azure и Базы данных SQL Fabric.
-- 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, параллельного хранилища данных и хранилища 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
}
Аргументы
ВСЕ
Этот параметр устарел и сохранен только для поддержки обратной совместимости. Он не предоставляет все возможные разрешения. ALL
Предоставление эквивалентно предоставлению следующих разрешений.
Защищаемый объект | Разрешения |
---|---|
База данных | BACKUP DATABASE , BACKUP LOG , CREATE DATABASE , CREATE DEFAULT CREATE TABLE CREATE FUNCTION CREATE PROCEDURE CREATE RULE иCREATE VIEW |
Скалярные функции | EXECUTE и REFERENCES . |
Функция с табличным значением | DELETE , , INSERT , SELECT REFERENCES иUPDATE |
Хранимая процедура | EXECUTE |
Таблица | DELETE , , INSERT , SELECT REFERENCES иUPDATE |
Представления | DELETE , , INSERT , SELECT REFERENCES иUPDATE |
PRIVILEGES
Включено для обеспечения совместимости с требованиями ISO. Не изменяет поведение ALL
.
permission
Имя разрешения. Допустимые сопоставления разрешений для защищаемых объектов описаны в следующих разделах.
column
Указывает имя столбца таблицы, на который предоставляется разрешение. Скобки (
и )
обязательны.
class
Указывает класс защищаемого объекта, для которого предоставляется разрешение. Требуется квалификатор ::
области.
securable
Указывает защищаемый объект, на который предоставляется разрешение.
TO principal
Имя субъекта. Состав участников, которым можно предоставлять разрешения, меняется в зависимости от защищаемого объекта. В следующих разделах приведены допустимые сочетания.
GRANT OPTION
Показывает, что получающему разрешению будет также дана возможность предоставлять указанное разрешение другим участникам.
AS principal
AS <principal>
Используйте предложение, чтобы указать, что субъект, записанный в качестве участника разрешения, должен быть субъектом, кроме лица, выполняющего инструкцию. Например, предположим, что у пользователя Mary
есть principal_id
12
субъект и пользователь Raul
15
. Мэри выполняет GRANT SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul;
таблицу теперь sys.database_permissions
указывает на то, что grantor_prinicpal_id
15
оператор был (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
Предоставление разрешений на схему может предоставить любое разрешение на любой объект в схеме.
Примеры
В приведенной ниже таблице перечислены защищаемые объекты и статьи, в которых описывается синтаксис инструкций по работе с ними.