GRANT, предоставление разрешений на объект (Transact-SQL)
Предоставляет разрешения на таблицу, представление, функцию, возвращающую табличное значение, хранимую процедуру, расширенную хранимую процедуру, скалярную функцию, статистическую функцию, очередь обслуживания или синоним.
Соглашения о синтаксисе в Transact-SQL
Синтаксис
GRANT <permission> [ ,...n ] ON
[ OBJECT :: ][ schema_name ]. object_name [ ( column [ ,...n ] ) ]
TO <database_principal> [ ,...n ]
[ WITH GRANT OPTION ]
[ AS <database_principal> ]
<permission> ::=
ALL [ PRIVILEGES ] | permission [ ( column [ ,...n ] ) ]
<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
Указывает разрешение, которое может быть предоставлено на содержащийся в схеме объект. Список разрешений см. в подразделе «Примечания» далее в этом разделе.
ALL
Предоставление ALL не включает все возможные разрешения, оно эквивалентно предоставлению всех разрешений ANSI-92, применимых к указанному объекту. Значение ALL различается для разных типов объектов:разрешения на скалярные функции: EXECUTE, REFERENCES;
разрешения на функции, возвращающие табличное значение: DELETE, INSERT, REFERENCES, SELECT, UPDATE;
разрешения на хранимые процедуры: EXECUTE.
разрешения на таблицы: DELETE, INSERT, REFERENCES, SELECT, UPDATE;
разрешения на представления: DELETE, INSERT, REFERENCES, SELECT, UPDATE.
- PRIVILEGES
Включено для совместимости с ANSI-92. Не изменяет поведение аргумента ALL.
column
Указывает имя столбца в таблице, представление или функции, возвращающей табличное значение, на которых предоставляется разрешение. Указание круглых скобок ( ) обязательно. На столбец могут быть предоставлены только разрешения SELECT, REFERENCES и UPDATE. Аргумент column может быть указан в предложении PERMISSIONS или после имени защищаемого объекта.Внимание! В SQL Server 2005 запрет (DENY) уровня таблицы имеет меньший приоритет, чем предоставление разрешения (GRANT) уровня столбца. Такая несогласованность в иерархии разрешений сохранена в целях обратной совместимости.
- ON [ OBJECT :: ] [ schema_name ] . object_name
Указывает объект, на который предоставляется разрешение. Фраза OBJECT необязательна, если указан аргумент schema_name. Если же она указана, указание квалификатора области (::) обязательно. Если не указан аргумент schema_name, подразумевается схема по умолчанию. Если указан аргумент schema_name, обязательно указание квалификатора области схемы (.).
- TO <database_principal>
Указывает участника, которому предоставляется разрешение.
- WITH GRANT OPTION
Указывает, что участнику также дается возможность предоставлять указанное разрешение другим участникам.
- 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
Указывает пользователя базы данных без соответствующего участника на уровне сервера.
Замечания
Важно! |
---|
Сочетание разрешений ALTER и REFERENCE в некоторых случаях может позволить просматривать данные или выполнять несанкционированные функции. Например: Пользователь с разрешением ALTER на таблицу и разрешением REFERENCE на функцию может создавать вычисляемый столбец на основе функции и в результате — выполнять ее. В этом случае пользователю также требуется разрешение SELECT на вычисляемый столбец. |
Сведения об объектах доступны через различные представления каталога. Дополнительные сведения см. в разделе Представления каталога объектов (Transact-SQL).
Объект является защищаемым на уровне схемы. Он содержится в схеме, которая является его родителем в иерархии разрешений. В следующей таблице перечислен ряд отдельных разрешений, которые могут быть предоставлены на объект, а также наиболее общие разрешения, которые неявно их подразумевают.
Разрешение объекта | Содержится в разрешении объекта | Содержится в разрешении схемы |
---|---|---|
ALTER |
CONTROL |
ALTER |
CONTROL |
CONTROL |
CONTROL |
DELETE |
CONTROL |
DELETE |
EXECUTE |
CONTROL |
EXECUTE |
INSERT |
CONTROL |
INSERT |
RECEIVE |
CONTROL |
CONTROL |
REFERENCES |
CONTROL |
REFERENCES |
SELECT |
RECEIVE |
SELECT |
TAKE OWNERSHIP |
CONTROL |
CONTROL |
UPDATE |
CONTROL |
UPDATE |
VIEW DEFINITION |
CONTROL |
VIEW DEFINITION |
Разрешения
Участник, предоставляющий разрешение (или участник, указанный параметром AS), должен иметь разрешение, предоставленное с помощью параметра GRANT OPTION, либо разрешение более высокого уровня, которое неявно содержит предоставляемое разрешение.
При использовании параметра AS налагаются следующие дополнительные требования.
AS | Необходимо дополнительное разрешение |
---|---|
Пользователь базы данных |
Разрешение 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. |
Примеры
А. Предоставление разрешения SELECT на таблицу
В следующем примере предоставляется разрешение SELECT
пользователю RosaQdM
на таблицу Person.Address
в базе данных AdventureWorks
.
USE AdventureWorks;
GRANT SELECT ON OBJECT::Person.Address TO RosaQdM;
GO
Б. Предоставление разрешения EXECUTE на хранимую процедуру
В следующем примере предоставляется разрешение EXECUTE
на хранимую процедуру HumanResources.uspUpdateEmployeeHireInfo
роли приложения Recruiting11
.
USE AdventureWorks;
GRANT EXECUTE ON OBJECT::HumanResources.uspUpdateEmployeeHireInfo
TO Recruiting11;
GO
В. Предоставление разрешения REFERENCES на представление с параметром GRANT OPTION
В следующем примере предоставляется разрешение REFERENCES
на столбец EmployeeID
в представлении HumanResources.vEmployee
пользователю Wanida
с параметром GRANT OPTION
.
USE AdventureWorks;
GRANT REFERENCES (EmployeeID) ON OBJECT::HumanResources.vEmployee
TO Wanida WITH GRANT OPTION;
GO
См. также
Справочник
DENY, запрет разрешений на объект (Transact-SQL)
REVOKE, отмена разрешения (Transact-SQL)
Представления каталога объектов (Transact-SQL)
Другие ресурсы
Разрешения
Участники
Защищаемые объекты