GRANT, предоставление разрешений на участника базы данных (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в базе данных Microsoft Fabric SQL в Microsoft Fabric
Предоставляет разрешения на роль пользователя базы данных, роли базы данных или приложения в SQL Server.
Соглашения о синтаксисе Transact-SQL
Синтаксис
GRANT permission [ ,...n ]
ON
{ [ USER :: database_user ]
| [ ROLE :: database_role ]
| [ APPLICATION ROLE :: application_role ]
}
TO <database_principal> [ ,...n ]
[ WITH GRANT OPTION ]
[ AS <database_principal> ]
<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
Указывает разрешение, которое может быть предоставлено участнику базы данных. Список разрешений см. в подразделе "Примечания" далее в этом разделе.
USER ::database_user
Указывает класс и имя пользователя, которому предоставляется разрешение. Квалификатор области (::) является обязательным.
ROLE ::database_role
Указывает класс и имя роли, которой предоставляется разрешение. Квалификатор области (::) является обязательным.
APPLICATION ROLE ::application_role
Указывает класс и имя роли приложения, которой предоставляется разрешение. Квалификатор области (::) является обязательным.
WITH GRANT OPTION
Показывает, что участнику будет дана возможность предоставлять указанное разрешение другим участникам.
AS <database_principal>
Указывает участника, от которого участник, выполняющий данный запрос, наследует право на предоставление разрешения.
Database_user
Указывает пользователя базы данных.
Database_role
Указывает роль базы данных.
Application_role
Область применения: SQL Server 2008 (10.0.x) и более поздних версий База данных SQL.
Указывает роль приложения.
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
Указывает пользователя базы данных, не сопоставленного с субъектом серверного уровня.
Замечания
Данные о субъектах базы данных отображаются в представлении каталога sys.database_principals. Данные о разрешениях уровня базы данных отображаются в представлении каталога sys.database_permissions.
Разрешения пользователя базы данных
Пользователь базы данных — это защищаемый объект уровня базы данных, содержащийся в базе данных, являющейся родительским элементом в иерархии разрешений. Наиболее специфичные и ограниченные разрешения, которые можно предоставлять пользователю базы данных, перечислены в следующей таблице вместе с более общими разрешениями, неявно их содержащими.
Разрешение пользователя базы данных | Содержится в разрешении пользователя базы данных | Содержится в разрешении базы данных |
---|---|---|
ПРОИЗВОДИТЕЛЬНОСТИ | ПРОИЗВОДИТЕЛЬНОСТИ | ПРОИЗВОДИТЕЛЬНОСТИ |
IMPERSONATE | ПРОИЗВОДИТЕЛЬНОСТИ | ПРОИЗВОДИТЕЛЬНОСТИ |
ИЗМЕНИТЬ | ПРОИЗВОДИТЕЛЬНОСТИ | ИЗМЕНИТЬ ПОЛЬЗОВАТЕЛЯ |
VIEW DEFINITION | ПРОИЗВОДИТЕЛЬНОСТИ | VIEW DEFINITION |
Разрешения роли базы данных
Роль базы данных — это защищаемый объект уровня базы данных, содержащийся в базе данных, являющейся родительским элементом в иерархии разрешений. Наиболее специфичные и ограниченные разрешения, которые можно предоставлять роли базы данных, перечислены в следующей таблице вместе с более общими разрешениями, неявно их содержащими.
Разрешение роли базы данных | Содержится в разрешении роли базы данных | Содержится в разрешении базы данных |
---|---|---|
ПРОИЗВОДИТЕЛЬНОСТИ | ПРОИЗВОДИТЕЛЬНОСТИ | ПРОИЗВОДИТЕЛЬНОСТИ |
TAKE OWNERSHIP | ПРОИЗВОДИТЕЛЬНОСТИ | ПРОИЗВОДИТЕЛЬНОСТИ |
ИЗМЕНИТЬ | ПРОИЗВОДИТЕЛЬНОСТИ | ALTER ANY ROLE |
VIEW DEFINITION | ПРОИЗВОДИТЕЛЬНОСТИ | VIEW DEFINITION |
Разрешения роли приложения
Роль приложения — это защищаемый объект уровня базы данных, содержащийся в базе данных, являющейся родительским элементом в иерархии разрешений. Наиболее специфичные и ограниченные разрешения, которые можно предоставлять роли приложения, перечислены далее вместе с более общими разрешениями, неявно их содержащими.
Разрешение роли приложения | Содержится в разрешении роли приложения | Содержится в разрешении базы данных |
---|---|---|
ПРОИЗВОДИТЕЛЬНОСТИ | ПРОИЗВОДИТЕЛЬНОСТИ | ПРОИЗВОДИТЕЛЬНОСТИ |
ИЗМЕНИТЬ | ПРОИЗВОДИТЕЛЬНОСТИ | ALTER ANY APPLICATION ROLE |
VIEW DEFINITION | ПРОИЗВОДИТЕЛЬНОСТИ | VIEW DEFINITION |
Разрешения
Объект, предоставляющий разрешение (или участник, указанный параметром 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 на базу данных, такие как члены предопределенной роли базы данных db_owner, могут предоставлять любое разрешение на любой защищаемый объект в базе данных.
Примеры
А. Предоставление разрешения CONTROL на пользователя другому пользователю
В следующем примере пользователю CONTROL
предоставляется разрешение AdventureWorks2022
на пользователя Wanida
базы данных RolandX
.
GRANT CONTROL ON USER::Wanida TO RolandX;
GO
B. Предоставление пользователю разрешения VIEW DEFINITION на роль с параметром GRANT OPTION
В следующем примере разрешение VIEW DEFINITION
на роль AdventureWorks2022
базы данных SammamishParking
, с параметром GRANT OPTION
, предоставляется пользователю этой базы данных, JinghaoLiu
.
GRANT VIEW DEFINITION ON ROLE::SammamishParking
TO JinghaoLiu WITH GRANT OPTION;
GO
В. Предоставление роли приложения разрешения IMPERSONATE на пользователя
В следующем примере показано предоставление разрешения IMPERSONATE
пользователю HamithaL
на роль приложения AdventureWorks2022
AccountsPayable17
.
Область применения: SQL Server 2008 (10.0.x) и более поздних версий База данных SQL.
GRANT IMPERSONATE ON USER::HamithaL TO AccountsPayable17;
GO
См. также
DENY Database Principal Permissions (Transact-SQL)
ОТМЕНА разрешений субъекта базы данных (Transact-SQL)
sys.database_principals (Transact-SQL)
sys.database_permissions (Transact-SQL)
СОЗДАНИЕ ПОЛЬЗОВАТЕЛЯ (Transact-SQL)
CREATE APPLICATION ROLE (Transact-SQL)
CREATE ROLE (Transact-SQL)
GRANT (Transact-SQL)
Разрешения (ядро СУБД)
Субъекты (ядро СУБД)