REVOKE CALLER¶
Revoga privilégios que foram concedidos anteriormente a um proprietário de executável usando uma concessão de chamador.
As variações do comando REVOKE CALLER são as seguintes:
REVOKE CALLER — Revogar privilégios específicos em um objeto específico.
REVOKE ALL CALLER PRIVILEGES — Revogar todos os privilégios em um objeto específico. O executável não poderá ser executado com nenhum privilégio do chamador quando tentar acessar o objeto.
REVOKE INHERITED CALLER — Revogar concessões do chamador em todos os objetos atuais e futuros do mesmo tipo quando eles compartilham um esquema, banco de dados ou conta comum. Somente os privilégios em uma lista especificada são revogados.
REVOKE ALL INHERITED CALLER PRIVILEGES — Revogar concessões do chamador em todos os objetos atuais e futuros do mesmo tipo quando eles compartilham um esquema, banco de dados ou conta comum. Todos os privilégios são revogados; o executável não poderá ser executado com nenhum privilégio do chamador.
Sintaxe¶
REVOKE CALLER <object_privilege> [ , <object_privilege> ... ]
ON <object_type> <object_name>
FROM { ROLE | DATABASE ROLE } <grantee_name>
REVOKE ALL CALLER PRIVILEGES
ON <object_type> <object_name>
FROM { ROLE | DATABASE ROLE } <grantee_name>
REVOKE INHERITED CALLER <object_privilege> [ , <object_privilege> ... ]
ON ALL <object_type_plural>
IN { ACCOUNT | DATABASE <db_name> | SCHEMA <schema_name> | APPLICATION <app_name> | APPLICATION PACKAGE <app_pkg_name> }
FROM { ROLE | DATABASE ROLE } <grantee_name>
REVOKE ALL INHERITED CALLER PRIVILEGES
ON ALL <object_type_plural>
IN { ACCOUNT | DATABASE <db_name> | SCHEMA <schema_name> | APPLICATION <app_name> | APPLICATION PACKAGE <app_pkg_name> }
FROM { ROLE | DATABASE ROLE } <grantee_name>
Parâmetros¶
object_privilege [ , object_privilege ... ]
Os privilégios de objeto que você deseja revogar. Os executáveis pertencentes à função especificada não podem mais ser executados com esses privilégios. Para obter uma lista de privilégios para um tipo de objeto específico, consulte Privilégios de controle de acesso.
Use uma lista delimitada por vírgulas para especificar mais de um privilégio de objeto.
ON object_type object_name
O objeto, incluindo seu tipo, para o qual você deseja revogar privilégios. Use a forma singular de
object_type
, por exemplo,TABLE
ouWAREHOUSE
.ON ALL object_type_plural IN ACCOUNT
ou .ON ALL object_type_plural IN DATABASE db_name
ou .ON ALL object_type_plural IN SCHEMA schema_name
ou .ON ALL object_type_plural IN APPLICATION app_name
ou .ON ALL object_type_plural IN APPLICATION PACKAGE app_pkg_name
Revoga privilégios em todos os objetos de um determinado tipo. Use a forma plural do tipo de objeto, por exemplo,
TABLES
ouWAREHOUSES
.É possível usar a instrução REVOKE para revogar o acesso a todos os objetos da conta atual ou apenas aos objetos do banco de dados, esquema, aplicativo ou pacote de aplicativos especificado.
FROM ROLE grantee_name
ou .FROM DATABASE ROLE grantee_name
Proprietário do executável que recebeu anteriormente uma concessão do chamador.
Requisitos de controle de acesso¶
A função usada para executar essa operação deve ter, no mínimo, os seguintes privilégios:
Privilégio |
Objeto |
Notas |
---|---|---|
MANAGE CALLER GRANTS |
Conta |
O privilégio MANAGE CALLER GRANTS em nível de conta refere-se apenas às concessões do chamador. Ele não permite que você revogue privilégios de funções. |
Qualquer privilégio |
Todos os objetos especificados |
Você precisa de pelo menos um privilégio nos objetos especificados no comando REVOKE. Por exemplo, a revogação de uma concessão de chamador em uma tabela exige que você tenha pelo menos um privilégio nessa tabela. |
Para instruções sobre como criar uma função personalizada com um conjunto específico de privilégios, consulte Criação de funções personalizadas.
Para informações gerais sobre concessões de funções e privilégios para executar ações de SQL em objetos protegíveis, consulte Visão geral do controle de acesso.
Exemplos¶
Os executáveis pertencentes a owner_role
não podem mais ser executados com os privilégios do chamador quando acessam exibições na conta atual.
REVOKE ALL INHERITED CALLER PRIVILEGES ON ALL VIEWS IN ACCOUNT FROM ROLE owner_role;
Os executáveis pertencentes a owner_role
não podem mais ser executados com o privilégio USAGE quando acessam o esquema db.sch1
.
REVOKE CALLER USAGE ON SCHEMA db.sch1 FROM ROLE owner_role;