Разрешения объекта GRANT (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в Microsoft Fabric
Предоставляет разрешения на таблицу, представление, функцию с табличным значением, хранимую процедуру, расширенную хранимую процедуру, скалярную функцию, агрегатную функцию, очередь обслуживания или синоним.
Соглашения о синтаксисе Transact-SQL
Синтаксис
GRANT <permission> [ ,...n ] ON
[ OBJECT :: ][ schema_name ]. object_name [ ( column_name [ ,...n ] ) ]
TO <database_principal> [ ,...n ]
[ WITH GRANT OPTION ]
[ AS <database_principal> ]
<permission> ::=
ALL [ PRIVILEGES ] | permission [ ( column_name [ ,...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.
Внимание
Разрешение ALL является устаревшим и сохраняется только для совместимости.
PRIVILEGES
Включено для совместимости с ANSI-92. Не изменяет работу ALL.
column_name
Указывает имя столбца в таблице, представление или функции с табличным значением, на которых предоставляется разрешение. Указание круглых скобок ( ) обязательно. В столбце могут предоставляться только разрешения SELECT, REFERENCES, UPDATE и UNMASK. column_name можно указать в предложении разрешений или после защищаемого имени.
Внимание
Запрет (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 CHANGE TRACKING |
CONTROL |
VIEW CHANGE TRACKING |
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
в базе данных AdventureWorks2022
.
Этот пример не работает в Microsoft Fabric, так как он использует пользователя для входа, прошедшего проверку подлинности SQL, но этот же пример будет работать для пользователя Microsoft Entra ID Fabric, например RosaQdM@contoso.com
.
GRANT SELECT ON OBJECT::Person.Address TO RosaQdM;
GO
B. Предоставление разрешения EXECUTE для хранимой процедуры
В следующем примере предоставляется разрешение EXECUTE
на хранимую процедуру HumanResources.uspUpdateEmployeeHireInfo
роли приложения Recruiting11
.
USE AdventureWorks2022;
GRANT EXECUTE ON OBJECT::HumanResources.uspUpdateEmployeeHireInfo
TO Recruiting11;
GO
C. Предоставление разрешения REFERENCES для представления с помощью GRANT OPTION
В следующем примере предоставляется разрешение REFERENCES
на столбец BusinessEntityID
в представлении HumanResources.vEmployee
пользователю Wanida
с параметром GRANT OPTION
.
Этот пример не работает в Microsoft Fabric, так как он использует пользователя для входа, прошедшего проверку подлинности SQL, но этот же пример будет работать для пользователя Microsoft Entra ID Fabric, например Wanida@contoso.com
.
GRANT REFERENCES (BusinessEntityID) ON OBJECT::HumanResources.vEmployee
TO Wanida WITH GRANT OPTION;
GO
D. Предоставление разрешения SELECT для таблицы без использования фразы OBJECT
В следующем примере предоставляется разрешение SELECT
пользователю RosaQdM
на таблицу Person.Address
в базе данных AdventureWorks2022
.
Этот пример не работает в Microsoft Fabric, так как он использует пользователя для входа, прошедшего проверку подлинности SQL, но этот же пример будет работать для пользователя Microsoft Entra ID Fabric, например RosaQdM@contoso.com
.
GRANT SELECT ON Person.Address TO RosaQdM;
GO
Е. Предоставление разрешения SELECT для таблицы учетной записи домена
В следующем примере предоставляется разрешение SELECT
пользователю AdventureWorks2022\RosaQdM
на таблицу Person.Address
в базе данных AdventureWorks2022
.
Этот пример, как записано, не работает в Microsoft Fabric, так как он использует учетную запись домена, но этот же пример будет работать для пользователя Microsoft Entra ID Fabric, например RosaQdM@contoso.com
.
GRANT SELECT ON Person.Address TO [AdventureWorks2022\RosaQdM];
GO
F. Предоставление разрешения EXECUTE на процедуру роли
В следующем примере создается роль, а затем ей предоставляется разрешение EXECUTE
на процедуру uspGetBillOfMaterials
в базе данных AdventureWorks2022
.
CREATE ROLE newrole ;
GRANT EXECUTE ON dbo.uspGetBillOfMaterials TO newrole ;
GO
G. Предоставление разрешения UNMASK для столбца
В следующем примере предоставляется UNMASK
разрешение, часть динамического маскирования данных, для столбца email
в таблице Data.Membership
пользователю OutreachCoordinator
.
Динамическое маскирование данных в настоящее время не поддерживается в Microsoft Fabric.
GRANT UNMASK ON OBJECT::Data.Membership (email) to OutreachCoordinator;
GO
Связанный контент
- Deny Object Permissions (Transact-SQL)
- РАЗРЕШЕНИЯ ОБЪЕКТА REVOKE (Transact-SQL)
- Представления каталога объектов (Transact-SQL)
- Разрешения (ядро СУБД)
- Субъекты (ядро СУБД)
- Защищаемые объекты
- sys.fn_builtin_permissions (Transact-SQL)
- HAS_PERMS_BY_NAME (Transact-SQL)
- sys.fn_my_permissions (Transact-SQL)
- Динамическое маскирование данных
- Безопасность на уровне строк