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>
Copy

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 ou WAREHOUSE.

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 ou WAREHOUSES.

É 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;
Copy

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;
Copy