Permissões de objeto DENY (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure
Nega permissões em um membro da classe OBJECT de protegíveis. Esses são membros da classe OBJECT: tabelas, exibições, funções com valor de tabela, procedimentos armazenados, procedimentos armazenados estendidos, funções escalares, funções de agregação, filas de serviço e sinônimos.
Convenções de sintaxe de Transact-SQL
Sintaxe
DENY <permission> [ ,...n ] ON
[ OBJECT :: ][ schema_name ]. object_name [ ( column [ ,...n ] ) ]
TO <database_principal> [ ,...n ]
[ CASCADE ]
[ AS <database_principal> ]
<permission> ::=
ALL [ PRIVILEGES ] | permission [ ( column [ ,...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
Argumentos
permission
Especifica uma permissão que pode ser negada em um objeto contido em esquema. Para obter uma lista de permissões, consulte a seção Comentários mais adiante neste tópico.
ALL
A negação de ALL não nega todas as possíveis permissões. A negação de ALL é equivalente a negar todas as permissões ANSI-92 aplicáveis ao objeto especificado. O significado ALL varia desta forma:
- Permissões de função escalar: EXECUTE, REFERENCES.
- Permissões de função com valor de tabela: DELETE, INSERT, REFERENCES, SELECT, UPDATE.
- Permissões de procedimento armazenado: EXECUTE.
- Permissões de tabela: DELETE, INSERT, REFERENCES, SELECT, UPDATE.
- Permissões de exibição: DELETE, INSERT, REFERENCES, SELECT, UPDATE.
PRIVILEGES
Incluído para conformidade com 92 ANSI. Não altera o comportamento de ALL.
column
Especifica o nome de uma coluna em uma tabela, exibição ou função com valor de tabela na qual a permissão está sendo negada. Os parênteses ( ) são necessários. Apenas permissões SELECT, REFERENCES e UPDATE podem ser negadas em uma coluna. column pode ser especificada na cláusula de permissões ou depois do nome protegível.
Cuidado
Um DENY em nível de tabela não tem precedência sobre um GRANT em nível de coluna. Essa inconsistência na hierarquia de permissões foi preservada para compatibilidade com versões anteriores. No SQL Server, esse comportamento será diferente se o servidor estiver configurado para ser executado com a Configuração de servidor de conformidade de critérios comuns habilitada. No entanto, isso deve ser usado com cuidado e não como uma prática geral.
ON [ OBJETO :: ] [ schema_name ] . object_name
Especifica o objeto no qual a permissão está sendo negada. A frase OBJECT será opcional se schema_name for especificado. Se a frase OBJECT for usada, o qualificador de escopo ( :: ) será necessário. Se schema_name não for especificado, o esquema padrão será usado. Se schema_name for especificado, o qualificador de escopo de esquema ( . ) será obrigatório.
TO <database_principal>
Especifica a entidade à qual a permissão está sendo negada.
CASCADE
Indica que a permissão que está sendo negada também é negada a outros principais aos quais ela foi concedida por esse principal.
AS <database_principal>
Especifica uma entidade de segurança da qual a entidade de segurança que executa essa consulta deriva seu direito de negar 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
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
As informações sobre objetos são visível em várias exibições do catálogo. Para obter mais informações, confira Exibições do catálogo de objeto (Transact-SQL).
Um objeto é um protegível em nível de esquema contido pelo esquema que é seu pai na hierarquia de permissões. As permissões mais específicas e limitadas que podem ser negadas em um objeto são listadas na tabela a seguir, junto com as permissões mais gerais que as incluem implicitamente.
Permissão de objeto | Implícito na permissão de objeto | Implícito na permissão de esquema |
---|---|---|
ALTER | CONTROL | ALTER |
CONTROL | CONTROL | CONTROL |
Delete (excluir) | CONTROL | Delete (excluir) |
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 |
Permissões
Requer a permissão CONTROL no objeto.
Se a cláusula AS for usada, o principal especificado deverá ser proprietário do objeto no qual as permissões estão sendo negadas.
Exemplos
Os exemplos a seguir usam o banco de dados AdventureWorks.
a. Negação da permissão SELECT em uma tabela
O exemplo a seguir nega a permissão SELECT
ao usuário RosaQdM
na tabela Person.Address
.
DENY SELECT ON OBJECT::Person.Address TO RosaQdM;
GO
B. Negação da permissão EXECUTE em um procedimento armazenado
O exemplo a seguir nega a permissão EXECUTE
no procedimento armazenado HumanResources.uspUpdateEmployeeHireInfo
para uma função de aplicativo chamada Recruiting11
.
DENY EXECUTE ON OBJECT::HumanResources.uspUpdateEmployeeHireInfo
TO Recruiting11;
GO
C. Negação da permissão REFERENCES em uma exibição com CASCADE
O exemplo a seguir nega a permissão REFERENCES
na coluna BusinessEntityID
na exibição HumanResources.vEmployee
para o usuário Wanida
com CASCADE
.
DENY REFERENCES (BusinessEntityID) ON OBJECT::HumanResources.vEmployee
TO Wanida CASCADE;
GO
Consulte Também
Permissões de objeto de GRANT (Transact-SQL)
permissões de objeto REVOKE (Transact-SQL)
Exibições do catálogo de objeto (Transact-SQL)
Permissões (Mecanismo de Banco de Dados)
Entidades (Mecanismo de Banco de Dados)
Protegíveis
sys.fn_builtin_permissions (Transact-SQL)
HAS_PERMS_BY_NAME (Transact-SQL)
sys.fn_my_permissions (Transact-SQL)