Permissões de esquema GRANT (Transact-SQL)GRANT Schema Permissions (Transact-SQL)

APLICA-SE A: simSQL Server (a partir do 2008) simBanco de Dados SQL do Azure simSQL Data Warehouse do Azure simParallel Data Warehouse APPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Concede permissões em um esquema.Grants permissions on a schema.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

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

ArgumentosArguments

permissionpermission
Especifica uma permissão que pode ser concedida em um esquema.Specifies a permission that can be granted on a schema. Para obter uma lista de permissões, consulte a seção Comentários posteriormente neste tópico.For a list of the permissions, see the Remarks section later in this topic..

ON SCHEMA :: schema _nameON SCHEMA :: schema _name
Especifica o esquema no qual a permissão está sendo concedida.Specifies the schema on which the permission is being granted. O qualificador de escopo :: é obrigatório.The scope qualifier :: is required.

database_principaldatabase_principal
Especifica a entidade de segurança para o qual a permissão está sendo concedida.Specifies the principal to which the permission is being granted. Um dos seguintes:One of the following:

  • usuário de banco de dadosdatabase user
  • função de banco de dadosdatabase role
  • função de aplicativoapplication role
  • usuário de banco de dados mapeado para um logon do Windowsdatabase user mapped to a Windows login
  • usuário de banco de dados mapeado para um grupo do Windowsdatabase user mapped to a Windows group
  • usuário de banco de dados mapeado para um certificadodatabase user mapped to a certificate
  • usuário de banco de dados mapeado para uma chave assimétricadatabase user mapped to an asymmetric key
  • usuário de banco de dados não mapeado para uma entidade do servidor.database user not mapped to a server principal.

GRANT OPTIONGRANT OPTION
Indica que o principal também terá a capacidade de conceder a permissão especificada a outros principais.Indicates that the principal will also be given the ability to grant the specified permission to other principals.

AS granting_principalAS 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.Specifies a principal from which the principal executing this query derives its right to grant the permission. Um dos seguintes:One of the following:

  • usuário de banco de dadosdatabase user
  • função de banco de dadosdatabase role
  • função de aplicativoapplication role
  • usuário de banco de dados mapeado para um logon do Windowsdatabase user mapped to a Windows login
  • usuário de banco de dados mapeado para um grupo do Windowsdatabase user mapped to a Windows group
  • usuário de banco de dados mapeado para um certificadodatabase user mapped to a certificate
  • usuário de banco de dados mapeado para uma chave assimétricadatabase user mapped to an asymmetric key
  • usuário de banco de dados não mapeado para uma entidade do servidor.database user not mapped to a server principal.

RemarksRemarks

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.A combination of ALTER and REFERENCE permissions in some cases could allow the grantee to view data or execute unauthorized functions. Por exemplo: um usuário com permissão ALTER em uma tabela e permissão REFERENCE em uma função pode criar uma coluna computada em uma função e fazer com que seja executada.For example: A user with ALTER permission on a table and REFERENCE permission on a function can create a computed column over a function and have it be executed. Nesse caso, o usuário também precisará da permissão SELECT na coluna computada.In this case, the user must also have SELECT permission on the computed column.

Um esquema é um item protegível em nível de banco de dados contido no banco de dados pai na hierarquia de permissões.A schema is a database-level securable contained by the database that is its parent in the permissions hierarchy. 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.The most specific and limited permissions that can be granted on a schema are listed below, together with the more general permissions that include them by implication.

Permissão de esquemaSchema permission Implícito na permissão de esquemaImplied by schema permission Implícito na permissão de banco de dadosImplied by database permission
ALTERALTER CONTROLCONTROL ALTER ANY SCHEMAALTER ANY SCHEMA
CONTROLCONTROL CONTROLCONTROL CONTROLCONTROL
CREATE SEQUENCECREATE SEQUENCE ALTERALTER ALTER ANY SCHEMAALTER ANY SCHEMA
Delete (excluir)DELETE CONTROLCONTROL Delete (excluir)DELETE
ExecuteEXECUTE CONTROLCONTROL ExecuteEXECUTE
INSERTINSERT CONTROLCONTROL INSERTINSERT
REFERENCESREFERENCES CONTROLCONTROL REFERENCESREFERENCES
SELECTSELECT CONTROLCONTROL SELECTSELECT
TAKE OWNERSHIPTAKE OWNERSHIP CONTROLCONTROL CONTROLCONTROL
UPDATEUPDATE CONTROLCONTROL UPDATEUPDATE
VIEW CHANGE TRACKINGVIEW CHANGE TRACKING CONTROLCONTROL CONTROLCONTROL
VIEW DEFINITIONVIEW DEFINITION CONTROLCONTROL VIEW DEFINITIONVIEW 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.A user with ALTER permission on a schema can use ownership chaining to access securables in other schemas, including securables to which that user is explicitly denied access. 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.This is because ownership chaining bypasses permissions checks on referenced objects when they are owned by the principal that owns the objects that refer to them. 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.A user with ALTER permission on a schema can create procedures, synonyms, and views that are owned by the schema's owner. Esses objetos terão acesso (por encadeamento de propriedades) a informações em outros esquemas que pertencem ao proprietário do esquema.Those objects will have access (via ownership chaining) to information in other schemas owned by the schema's owner. Quando possível, evite conceder a permissão ALTER em um esquema se o proprietário do esquema também possuir outros esquemas.When possible, you should avoid granting ALTER permission on a schema if the schema's owner also owns other schemas.

Por exemplo, esse problema pode ocorrer nos cenários a seguir.For example, this issue may occur in the following scenarios. Estes cenários supõem que um usuário, referido como U1, tem a permissão ALTER no esquema de S1.These scenarios assume that a user, referred as U1, has the ALTER permission on the S1 schema. O usuário U1 tem acesso negado a um objeto de tabela, referido como T1, no esquema S2.The U1 user is denied to access a table object, referred as T1, in the schema S2. O esquema S1 e o esquema S2 pertencem ao mesmo proprietário.The S1 schema and the S2 schema are owned by the same owner.

O usuário U1 tem a permissão CREATE PROCEDURE no banco de dados e a permissão EXECUTE no esquema de S1.The U1 user has the CREATE PROCEDURE permission on the database and the EXECUTE permission on the S1 schema. Portanto, o usuário U1 pode criar um procedimento armazenado e acessar o objeto negado T1 no procedimento armazenado.Therefore, the U1 user can create a stored procedure, and then access the denied object T1 in the stored procedure.

O usuário U1 tem a permissão CREATE SYNONYM no banco de dados e a permissão SELECT no esquema S1.The U1 user has the CREATE SYNONYM permission on the database and the SELECT permission on the S1 schema. 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.Therefore, the U1 user can create a synonym in the S1 schema for the denied object T1, and then access the denied object T1 by using the synonym.

O usuário U1 tem a permissão CREATE VIEW no banco de dados e a permissão SELECT no esquema S1.The U1 user has the CREATE VIEW permission on the database and the SELECT permission on the S1 schema. 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.Therefore, the U1 user can create a view in the S1 schema to query data from the denied object T1, and then access the denied object T1 by using the view.

Para obter mais informações, consulte o Artigo número 914847 da Base de Dados da Microsoft.For more information, see the Microsoft KB Article number 914847.

PermissõesPermissions

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.The grantor (or the principal specified with the AS option) must have either the permission itself with GRANT OPTION, or a higher permission that implies the permission being granted.

Se a opção AS for usada, esses requisitos adicionais se aplicarão.If using the AS option, these additional requirements apply.

AS granting_principalAS granting_principal Permissão adicional necessáriaAdditional permission required
Usuário de banco de dadosDatabase user 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.IMPERSONATE permission on the user, membership in the db_securityadmin fixed database role, membership in the db_owner fixed database role, or membership in the sysadmin fixed server role.
Usuário de banco de dados mapeado para um logon do WindowsDatabase user mapped to a Windows login 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.IMPERSONATE permission on the user, membership in the db_securityadmin fixed database role, membership in the db_owner fixed database role, or membership in the sysadmin fixed server role.
Usuário de banco de dados mapeado para um grupo do WindowsDatabase user mapped to a Windows group 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.Membership in the Windows group, membership in the db_securityadmin fixed database role, membership in the db_owner fixed database role, or membership in the sysadmin fixed server role.
Usuário de banco de dados mapeado para um certificadoDatabase user mapped to a certificate 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.Membership in the db_securityadmin fixed database role, membership in the db_owner fixed database role, or membership in the sysadmin fixed server role.
Usuário de banco de dados mapeado para uma chave assimétricaDatabase user mapped to an asymmetric key 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.Membership in the db_securityadmin fixed database role, membership in the db_owner fixed database role, or membership in the sysadmin fixed server role.
Usuário de banco de dados não mapeado para nenhuma entidade de segurança de servidorDatabase user not mapped to any server principal 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.IMPERSONATE permission on the user, membership in the db_securityadmin fixed database role, membership in the db_owner fixed database role, or membership in the sysadmin fixed server role.
Função de banco de dadosDatabase role 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.ALTER permission on the role, membership in the db_securityadmin fixed database role, membership in the db_owner fixed database role, or membership in the sysadmin fixed server role.
Função de aplicativoApplication role 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.ALTER permission on the role, membership in the db_securityadmin fixed database role, membership in the db_owner fixed database role, or membership in the sysadmin fixed server role.

Os proprietários de objetos podem conceder permissões nos objetos de sua propriedade.Object owners can grant permissions on the objects they own. Principais com a permissão CONTROL em um item protegível podem conceder permissão nesse item.Principals with CONTROL permission on a securable can grant permission on that securable.

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.Grantees of CONTROL SERVER permission, such as members of the sysadmin fixed server role, can grant any permission on any securable in the server. 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.Grantees of CONTROL permission on a database, such as members of the db_owner fixed database role, can grant any permission on any securable in the database. Os usuários autorizados da permissão CONTROL em um esquema podem conceder qualquer permissão em qualquer objeto dentro do esquema.Grantees of CONTROL permission on a schema can grant any permission on any object within the schema.

ExemplosExamples

A.A. Concedendo a permissão INSERT no esquema HumanResources para convidadoGranting INSERT permission on schema HumanResources to guest

GRANT INSERT ON SCHEMA :: HumanResources TO guest;  

b.B. Concedendo a permissão SELECT no esquema Person para o usuário de banco de dados WilJoGranting SELECT permission on schema Person to database user WilJo

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

Consulte TambémSee Also

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