Permissões de principal do banco de dados GRANT (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics PDW (Analytics Platform System) Ponto de extremidade de análise do SQL Warehouse no Microsoft Fabric
Concede permissões em um usuário de banco de dados, uma função de banco de dados ou uma função de aplicativo no SQL Server.
Convenções de sintaxe de Transact-SQL
Sintaxe
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
Argumentos
permission
Especifica uma permissão que pode ser concedida na entidade do banco de dados. Para obter uma lista de permissões, consulte a seção Comentários mais adiante neste tópico.
USER ::database_user
Especifica a classe e o nome do usuário no qual a permissão está sendo concedida. O qualificador de escopo (::) é necessário.
ROLE ::database_role
Especifica a classe e o nome da função na qual a permissão está sendo concedida. O qualificador de escopo (::) é necessário.
APPLICATION ROLE ::application_role
Especifica a classe e o nome da função de aplicativo na qual a permissão está sendo concedida. O qualificador de escopo (::) é necessário.
WITH GRANT OPTION
Indica que o principal também terá a capacidade de conceder a permissão especificada a outros principais.
AS <database_principal>
Especifica uma entidade de segurança da qual a entidade de segurança que executa esta consulta deriva seu direito de conceder a permissão.
Database_user
Especifica um usuário do banco de dados.
Database_role
Especifica uma função de banco de dados.
Application_role
Aplica-se a: SQL Server 2008 (10.0.x) e posterior e Banco de Dados SQL.
Especifica uma função de aplicativo.
Database_user_mapped_to_Windows_User
Especifica um usuário do banco de dados mapeado para um usuário do Windows.
Database_user_mapped_to_Windows_Group
Especifica um usuário do banco de dados mapeado para um grupo do Windows.
Database_user_mapped_to_certificate
Especifica um usuário do banco de dados mapeado para um certificado.
Database_user_mapped_to_asymmetric_key
Especifica um usuário do banco de dados mapeado para uma chave assimétrica.
Database_user_with_no_login
Especifica um usuário do banco de dados sem nenhuma entidade de segurança correspondente no nível de servidor.
Comentários
Informações sobre as entidades de banco de dados estão visíveis na exibição do catálogo sys.database_principals. Informações sobre permissões do nível de banco de dados estão visíveis na exibição do catálogo sys.database_permissions.
Permissões do usuário do banco de dados
Um usuário do banco de dados é um item protegível do nível do banco de dados contido pelo banco de dados que é seu pai na hierarquia de permissões. As permissões mais específicas e limitadas que podem ser concedidas em um usuário de banco de dados estão listadas na tabela a seguir, junto com as permissões mais gerais que as incluem implicitamente.
Permissão do usuário do banco de dados | Indicado pela permissão do usuário do banco de dados | Implícito na permissão de banco de dados |
---|---|---|
CONTROL | CONTROL | CONTROL |
IMPERSONATE | CONTROL | CONTROL |
ALTER | CONTROL | ALTER ANY USER |
VIEW DEFINITION | CONTROL | VIEW DEFINITION |
Permissões da função de banco de dados
Uma função de banco de dados é um item protegível do nível do banco de dados contido pelo banco de dados que é seu pai na hierarquia de permissões. As permissões mais específicas e limitadas que podem ser concedidas em um função de banco de dados estão listadas na tabela a seguir, junto com as permissões mais gerais que as incluem implicitamente.
Permissão da função de banco de dados | Indicado pela permissão da função de banco de dados | Implícito na permissão de banco de dados |
---|---|---|
CONTROL | CONTROL | CONTROL |
TAKE OWNERSHIP | CONTROL | CONTROL |
ALTER | CONTROL | ALTER ANY ROLE |
VIEW DEFINITION | CONTROL | VIEW DEFINITION |
Permissões de função de aplicativo
Uma função de aplicativo é um item protegível do nível do banco de dados contido pelo banco de dados que é seu pai na hierarquia de permissões. As permissões mais específicas e limitadas que podem ser concedidas em uma função de aplicativo são listadas na tabela a seguir, junto com as permissões mais gerais que as incluem implicitamente.
Permissão de função de aplicativo | Indicado pela permissão de função de aplicativo | Implícito na permissão de banco de dados |
---|---|---|
CONTROL | CONTROL | CONTROL |
ALTER | CONTROL | ALTER ANY APPLICATION ROLE |
VIEW DEFINITION | CONTROL | VIEW DEFINITION |
Permissões
O concessor (ou a entidade de segurança especificada com a opção AS) deve ter a própria permissão com GRANT OPTION ou uma permissão superior que tenha a permissão que está sendo concedida implícita.
Se você estiver usando a opção AS, os requisitos adicionais a seguir serão aplicáveis.
AS granting_principal | Permissão adicional necessária |
---|---|
Usuário de banco de dados | Permissão IMPERSONATE no usuário, associação na função de banco de dados fixa db_securityadmin, associação na função de banco de dados fixa db_owner ou associação na função de servidor fixa sysadmin. |
Usuário de banco de dados mapeado para um usuário do Windows | Permissão IMPERSONATE no usuário, associação na função de banco de dados fixa db_securityadmin, associação na função de banco de dados fixa db_owner ou associação na função de servidor fixa sysadmin. |
Usuário de banco de dados mapeado para um grupo do Windows | Associação no grupo do Windows, associação na função de banco de dados fixa db_securityadmin, associação na função de banco de dados fixa db_owner ou associação na função de servidor fixa sysadmin. |
Usuário de banco de dados mapeado para um certificado | Associação na função de banco de dados fixa db_securityadmin, associação na função de banco de dados fixa db_owner ou associação na função de servidor fixa sysadmin. |
Usuário de banco de dados mapeado para uma chave assimétrica | Associação à função de banco de dados fixa db_securityadminfixed, associação à função de banco de dados fixa db_owner ou associação à função de servidor fixa sysadmin. |
Usuário de banco de dados não mapeado para nenhuma entidade de segurança de servidor | Permissão IMPERSONATE no usuário, associação na função de banco de dados fixa db_securityadmin, associação na função de banco de dados fixa db_owner ou associação na função de servidor fixa sysadmin. |
Função de banco de dados | Permissão ALTER na função, associação na função de banco de dados fixa db_securityadminfixed, associação na função de banco de dados fixa db_owner ou associação na função de servidor fixa sysadmin. |
Função de aplicativo | Permissão ALTER na função, associação na função de banco de dados fixa db_securityadmin, associação na função de banco de dados fixa db_owner ou associação na função de servidor fixa sysadmin. |
As entidades que têm a permissão CONTROL em um protegível podem conceder a permissão nesse protegível.
Os usuários autorizados da permissão CONTROL em um banco de dados, como os membros da função de banco de dados fixa db_owner, podem conceder qualquer permissão para qualquer item de segurança do banco de dados.
Exemplos
a. Concessão da permissão CONTROL em um usuário para outro usuário
O exemplo a seguir concede a permissão CONTROL
no usuário AdventureWorks2022
Wanida
para o usuário RolandX
.
GRANT CONTROL ON USER::Wanida TO RolandX;
GO
B. Concessão da permissão VIEW DEFINITION em uma função para um usuário com GRANT OPTION
O exemplo a seguir concede permissão VIEW DEFINITION
em AdventureWorks2022
função SammamishParking
junto com GRANT OPTION
para usuário de banco de dados JinghaoLiu
.
GRANT VIEW DEFINITION ON ROLE::SammamishParking
TO JinghaoLiu WITH GRANT OPTION;
GO
C. Concessão da permissão IMPERSONATE em um usuário para uma função de aplicativo
O exemplo a seguir concede permissão no usuário IMPERSONATE
HamithaL
para AdventureWorks2022
função de aplicativo AccountsPayable17
.
Aplica-se a: SQL Server 2008 (10.0.x) e posterior e Banco de Dados SQL.
GRANT IMPERSONATE ON USER::HamithaL TO AccountsPayable17;
GO
Consulte Também
Permissões de principal do banco de dados DENY (Transact-SQL)
Permissões de principal do banco de dados REVOKE (Transact-SQL)
sys.database_principals (Transact-SQL)
sys.database_permissions (Transact-SQL)
CREATE USER (Transact-SQL)
CREATE APPLICATION ROLE (Transact-SQL)
CREATE ROLE (Transact-SQL)
GRANT (Transact-SQL)
Permissões (Mecanismo de Banco de Dados)
Entidades (Mecanismo de Banco de Dados)