Permissões de esquema GRANT (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)Ponto de extremidade de SQL no Microsoft FabricWarehouse no Microsoft Fabric

Concede permissões em um esquema.

Convenções de sintaxe de Transact-SQL

Sintaxe

GRANT permission  [ ,...n ] ON SCHEMA :: schema_name  
    TO database_principal [ ,...n ]  
    [ WITH GRANT OPTION ]  
    [ AS granting_principal ]  

Observação

Para ver a sintaxe do Transact-SQL para o SQL Server 2014 (12.x) e versões anteriores, confira a Documentação das versões anteriores.

Argumentos

permission
Especifica uma permissão que pode ser concedida em um esquema. Para obter uma lista de permissões, consulte a seção Comentários posteriormente neste tópico.

ON SCHEMA :: schema*_name*
Especifica o esquema no qual a permissão está sendo concedida. O qualificador de escopo :: é obrigatório.

database_principal
Especifica a entidade de segurança para o qual a permissão está sendo concedida. Um dos seguintes:

  • usuário de banco de dados
  • função de banco de dados
  • função de aplicativo
  • usuário de banco de dados mapeado para um logon do Windows
  • usuário de banco de dados mapeado para um grupo do Windows
  • usuário de banco de dados mapeado para um certificado
  • usuário de banco de dados mapeado para uma chave assimétrica
  • usuário de banco de dados não mapeado para uma entidade do servidor.

GRANT OPTION
Indica que o principal também terá a capacidade de conceder a permissão especificada a outros principais.

AS granting_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. Um dos seguintes:

  • usuário de banco de dados
  • função de banco de dados
  • função de aplicativo
  • usuário de banco de dados mapeado para um logon do Windows
  • usuário de banco de dados mapeado para um grupo do Windows
  • usuário de banco de dados mapeado para um certificado
  • usuário de banco de dados mapeado para uma chave assimétrica
  • usuário de banco de dados não mapeado para uma entidade do servidor.

Comentários

Importante

Uma combinação das permissões ALTER e REFERENCE em alguns casos pode permitir ao usuário autorizado exibir dados ou executar funções não autorizadas. Por exemplo: Um usuário com a permissão ALTER em uma tabela e a permissão REFERENCE em uma função pode criar uma coluna computada em uma função e fazer com que ela seja executada. Nesse caso, o usuário também precisará da permissão SELECT na coluna computada.

Um esquema é um item protegível em nível de banco de dados contido no banco de dados pai na hierarquia de permissões. As permissões mais específicas e limitadas que podem ser concedidas em um esquema estão listadas abaixo, junto com as permissões mais gerais que as contêm implicitamente.

Permissão de esquema Implícito na permissão de esquema Implícito na permissão de banco de dados
ALTER CONTROL ALTER ANY SCHEMA
CONTROL CONTROL CONTROL
CREATE SEQUENCE ALTER ALTER ANY SCHEMA
Delete (excluir) CONTROL Delete (excluir)
Execute CONTROL Execute
INSERT CONTROL INSERT
REFERENCES CONTROL REFERENCES
SELECT CONTROL SELECT
TAKE OWNERSHIP CONTROL CONTROL
UPDATE CONTROL UPDATE
VIEW CHANGE TRACKING CONTROL CONTROL
VIEW DEFINITION CONTROL VIEW DEFINITION

Cuidado

Um usuário com a permissão ALTER em um esquema pode usar encadeamento de propriedades para acessar protegíveis em outros esquemas, incluindo protegíveis aos quais esse usuário tem acesso negado explicitamente. Isso porque o encadeamento de propriedades ignora verificações de permissões em objetos referenciados quando são de propriedade do principal que possui os objetos que as referenciam. Um usuário com permissão ALTER em um esquema pode criar procedimentos, sinônimos e exibições que pertencem ao proprietário do esquema. Esses objetos terão acesso (por encadeamento de propriedades) a informações em outros esquemas que pertencem ao proprietário do esquema. Quando possível, evite conceder a permissão ALTER em um esquema se o proprietário do esquema também possuir outros esquemas.

Por exemplo, esse problema pode ocorrer nos cenários a seguir. Estes cenários supõem que um usuário, referido como U1, tem a permissão ALTER no esquema de S1. O usuário U1 tem acesso negado a um objeto de tabela, referido como T1, no esquema S2. O esquema S1 e o esquema S2 pertencem ao mesmo proprietário.

O usuário U1 tem a permissão CREATE PROCEDURE no banco de dados e a permissão EXECUTE no esquema de S1. Portanto, o usuário U1 pode criar um procedimento armazenado e acessar o objeto negado T1 no procedimento armazenado.

O usuário U1 tem a permissão CREATE SYNONYM no banco de dados e a permissão SELECT no esquema S1. Portanto, o usuário U1 pode criar um sinônimo no esquema S1 para o objeto negado T1 e acessar o objeto negado T1 usando o sinônimo.

O usuário U1 tem a permissão CREATE VIEW no banco de dados e a permissão SELECT no esquema S1. Portanto, o usuário U1 pode criar uma exibição no esquema S1 para consultar dados do objeto negado T1, e acessar o objeto negado T1 usando a exibição.

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 a opção AS for usada, esses requisitos adicionais se aplicarão.

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 logon 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 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 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_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 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.

Os proprietários de objetos podem conceder permissões nos objetos de sua propriedade. Principais com a permissão CONTROL em um item protegível podem conceder permissão nesse item.

Os usuários autorizados da permissão CONTROL SERVER, como os membros da função de servidor fixa sysadmin, podem conceder qualquer permissão em qualquer protegível do servidor. 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. Os usuários autorizados da permissão CONTROL em um esquema podem conceder qualquer permissão em qualquer objeto dentro do esquema.

Exemplos

a. Concedendo a permissão INSERT no esquema HumanResources para convidado

GRANT INSERT ON SCHEMA :: HumanResources TO guest;  

B. Concedendo a permissão SELECT no esquema Person para o usuário de banco de dados WilJo

GRANT SELECT ON SCHEMA :: Person TO WilJo WITH GRANT OPTION;  

Consulte Também

Permissões de esquema DENY (Transact-SQL)
Permissões de esquema REVOKE (Transact-SQL)
GRANT (Transact-SQL)
Permissões (Mecanismo de Banco de Dados)
Entidades (Mecanismo de Banco de Dados)
CREATE CERTIFICATE (Transact-SQL)
CREATE ASYMMETRIC KEY (Transact-SQL)
CREATE APPLICATION ROLE (Transact-SQL)
Hierarquia de criptografia
sys.fn_builtin_permissions (Transact-SQL)
sys.fn_my_permissions (Transact-SQL)
HAS_PERMS_BY_NAME (Transact-SQL)