REVOKE <privilégios> … FROM USER

Remove de um usuário um ou mais privilégios em um objeto seguro. Os privilégios que podem ser revogados são específicos do objeto.

Consulte também:

Sintaxe

REVOKE [ GRANT OPTION FOR ]
    {
       { globalPrivileges         | ALL [ PRIVILEGES ] } ON ACCOUNT
     | { accountObjectPrivileges  | ALL [ PRIVILEGES ] } ON { RESOURCE MONITOR | WAREHOUSE | COMPUTE POOL | DATABASE | INTEGRATION | CONNECTION | FAILOVER GROUP | REPLICATION GROUP | EXTERNAL VOLUME } <object_name>
     | { schemaPrivileges         | ALL [ PRIVILEGES ] } ON { SCHEMA <schema_name> | ALL SCHEMAS IN DATABASE <db_name> }
     | { schemaObjectPrivileges   | ALL [ PRIVILEGES ] } ON { <object_type> <object_name> | ALL <object_type_plural> IN SCHEMA <schema_name> }
    }
  FROM [ USER ] <user_name> [ RESTRICT | CASCADE ]
Copy

Onde:

globalPrivileges ::=
  {
      | ATTACH POLICY | AUDIT | BIND SERVICE ENDPOINT
      | APPLY {
         { AGGREGATION | AUTHENTICATION | JOIN | MASKING | PACKAGES | PASSWORD
           | PROJECTION | ROW ACCESS | SESSION } POLICY
         | TAG }
      | EXECUTE { ALERT | DATA METRIC FUNCTION | MANAGED ALERT | MANAGED TASK | TASK }
      | IMPORT SHARE
      | MANAGE { ACCOUNT SUPPORT CASES | EVENT SHARING | GRANTS | LISTING AUTO FULFILLMENT | ORGANIZATION SUPPORT CASES | USER SUPPORT CASES | WAREHOUSES }
      | MODIFY { LOG LEVEL | TRACE LEVEL | SESSION LOG LEVEL | SESSION TRACE LEVEL }
      | MONITOR { EXECUTION | SECURITY | USAGE }
      | OVERRIDE SHARE RESTRICTIONS | PURCHASE DATA EXCHANGE LISTING | RESOLVE ALL
      | READ SESSION
  }
  [ , ... ]
Copy
accountObjectPrivileges ::=
-- For COMPUTE POOL
   { MODIFY | MONITOR | OPERATE | USAGE } [ , ... ]
-- For CONNECTION
   { FAILOVER } [ , ... ]
-- For DATABASE
   { APPLYBUDGET
   | IMPORTED PRIVILEGES | MODIFY | MONITOR | USAGE } [ , ... ]
-- For EXTERNAL VOLUME
   { USAGE } [ , ... ]
-- For FAILOVER GROUP
   { FAILOVER | MODIFY | MONITOR | REPLICATE } [ , ... ]
-- For INTEGRATION
   { USAGE | USE_ANY_ROLE } [ , ... ]
-- For REPLICATION GROUP
   { MODIFY | MONITOR | REPLICATE } [ , ... ]
-- For RESOURCE MONITOR
   { MODIFY | MONITOR } [ , ... ]
-- For USER
   { MONITOR } [ , ... ]
-- For WAREHOUSE
   { APPLYBUDGET | MODIFY | MONITOR | USAGE | OPERATE } [ , ... ]
Copy
schemaPrivileges ::=

    ADD SEARCH OPTIMIZATION | APPLYBUDGET
   | MODIFY | MONITOR | USAGE
   [ , ... ]
Copy
schemaObjectPrivileges ::=
  -- For ALERT
     { MONITOR | OPERATE } [ , ... ]
  -- For DATA METRIC FUNCTION
     USAGE [ , ... ]
  -- For DYNAMIC TABLE
     MONITOR, OPERATE, SELECT [ , ...]
  -- For EVENT TABLE
     { APPLYBUDGET | DELETE | REFERENCES | SELECT | TRUNCATE } [ , ... ]
  -- For FILE FORMAT, FUNCTION (UDF or external function), MODEL, PROCEDURE, SECRET, SEQUENCE, or SNAPSHOT
     USAGE [ , ... ]
  -- For GIT REPOSITORY
     { READ, WRITE } [ , ... ]
  -- For HYBRID TABLE
     { APPLYBUDGET | DELETE | INSERT | REFERENCES | SELECT | TRUNCATE | UPDATE } [ , ... ]
  -- For IMAGE REPOSITORY
     { READ, WRITE } [ , ... ]
  -- For ICEBERG TABLE
     { APPLYBUDGET | DELETE | INSERT | REFERENCES | SELECT | TRUNCATE | UPDATE } [ , ... ]
  -- For MATERIALIZED VIEW
     { APPLYBUDGET | REFERENCES | SELECT } [ , ... ]
  -- For PIPE
     { APPLYBUDGET | MONITOR | OPERATE } [ , ... ]
  -- For { AGGREGATION | AUTHENTICATION | MASKING | JOIN | PACKAGES | PASSWORD | PRIVACY | PROJECTION | ROW ACCESS | SESSION } POLICY or TAG
     APPLY [ , ... ]
  -- For SECRET
     { READ | USAGE } [ , ... ]
  -- For SEMANTIC VIEW
     REFERENCES [ , ... ]
  -- For SERVICE
     { MONITOR | OPERATE } [ , ... ]
  -- For external STAGE
     USAGE [ , ... ]
  -- For internal STAGE
     READ [ , WRITE ] [ , ... ]
  -- For STREAM
     SELECT [ , ... ]
  -- For STREAMLIT
     USAGE [ , ... ]
  -- For TABLE
     { APPLYBUDGET | DELETE | EVOLVE SCHEMA | INSERT | REFERENCES | SELECT | TRUNCATE | UPDATE } [ , ... ]
  -- For TAG
     READ
  -- For TASK
     { APPLYBUDGET | MONITOR | OPERATE } [ , ... ]
  -- For VIEW
     { REFERENCES | SELECT } [ , ... ]
Copy

Para obter mais informações sobre os privilégios compatíveis com cada tipo de objeto, consulte Privilégios de controle de acesso.

Parâmetros obrigatórios

object_name

Especifica o identificador do objeto no qual os privilégios são revogados.

object_type

Especifica o tipo de objeto para objetos do nível de esquema.

  • AGGREGATION POLICY

  • ALERT

  • AUTHENTICATION POLICY

  • CORTEX SEARCH SERVICE

  • DATA METRIC FUNCTION

  • DATASET

  • DYNAMIC TABLE

  • EVENT TABLE

  • EXTERNAL TABLE

  • FILE FORMAT

  • FUNCTION

  • GIT REPOSITORY

  • IMAGE REPOSITORY

  • ICEBERG TABLE

  • JOIN POLICY

  • MASKING POLICY

  • MATERIALIZED VIEW

  • MODEL

  • MODEL MONITOR

  • NETWORK RULE

  • NOTEBOOK

  • PACKAGES POLICY

  • PASSWORD POLICY

  • PIPE

  • PRIVACY POLICY

  • PROCEDURE

  • PROJECTION POLICY

  • ROW ACCESS POLICY

  • SECRET

  • SEMANTIC VIEW

  • SERVICE

  • SESSION POLICY

  • SEQUENCE

  • SNAPSHOT

  • STAGE

  • STREAM

  • STREAMLIT

  • TABLE

  • TAG

  • TASK

  • VIEW

object_type_plural

Forma plural de object_type (por exemplo, TABLES, VIEWS).

user_name

Especifica o identificador do usuário destinatário (o usuário do qual os privilégios são revogados).

Parâmetros opcionais

GRANT OPTION FOR

Se especificado, remove a capacidade do usuário destinatário de conceder os privilégios a outra função ou usuário.

Padrão: sem valor

RESTRICT | CASCADE

Se especificado, determina se a operação de revogação é bem-sucedida ou falha para os privilégios, com base no fato de os privilégios terem sido concedidos novamente a outra função ou usuário.

  • RESTRICT: se o privilégio que está sendo revogado tiver sido concedido novamente a outra função ou usuário, o comando REVOKE falhará.

  • CASCADE: se o privilégio a ser revogado tiver sido revalidado, o comando REVOKE revoga recursivamente estas concessões dependentes. Se o mesmo privilégio em um objeto tiver sido concedido ao usuário de destino por um concedente diferente (concessão paralela), essa concessão não será afetada e o usuário de destino manterá o privilégio.

Padrão: RESTRICT

Notas de uso

  • Os privilégios não podem ser concedidos ou revogados diretamente em nenhuma classe.

  • Um privilégio pode ser concedido a um usuário várias vezes por diferentes concedentes. A instrução REVOKE privilege revoga apenas as concessões para as quais o usuário é o concessor. Quaisquer concessões adicionais de um privilégio especificado por outros concessores são ignoradas.

    Observe também que uma instrução REVOKE privilege é bem-sucedida mesmo que nenhum privilégio seja revogado. REVOKE privilege só retorna um erro se um privilégio especificado tiver concessões dependentes e a cláusula CASCADE for omitida da instrução.

  • Vários privilégios podem ser especificados para o mesmo tipo de objeto em uma única instrução GRANT (com cada privilégio separado por vírgula), ou a palavra-chave especial ALL [ PRIVILEGES ] pode ser usada para conceder todos os privilégios aplicáveis ao tipo de objeto especificado. Observe, no entanto, que somente os privilégios mantidos e concedidos pela função ou pelo usuário que executa o comando GRANT são realmente concedidos ao usuário de destino. Uma mensagem de advertência é gerada para quaisquer privilégios que não puderam ser concedidos.

    Você não pode especificar a palavra-chave ALL [ PRIVILEGES ] para tags.

  • Para estágios:

    • USAGE só se aplica a estágios externos.

    • READ | WRITE só se aplica a estágios internos. Além disso, para conceder o privilégio WRITE em um estágio interno, o privilégio READ deve primeiro ser concedido no estágio.

    Para obter mais informações sobre os estágios externos e internos, consulte CREATE STAGE.

  • Para integrações de armazenamento:

    • Para executar os comandos a seguir usando um estágio externo que depende de uma integração de armazenamento, o privilégio USAGE na integração de armazenamento deve ser concedido diretamente ao usuário ou usar uma função que tenha ou herde o privilégio.

      Se você revogar o privilégio USAGE do usuário, ele não poderá executar esses comandos. Para obter mais informações, consulte Privilégios de estágio.

    • A revogação do privilégio USAGE em uma integração de armazenamento não bloqueia um usuário de consultar tabelas externas associadas à integração de armazenamento. A consulta a uma tabela externa não requer o privilégio USAGE em sua integração de armazenamento subjacente.

Requisitos de controle de acesso

Revogação de privilégios em objetos individuais:

Uma função ativa ou um usuário que atenda a um dos seguintes critérios, ou uma função superior, pode ser usada para revogar privilégios de usuários em um objeto:

  • A função ou o usuário é identificado como o concessor do privilégio na coluna GRANTED_BY na saída SHOW GRANTS.

    Se várias instâncias de um privilégio forem concedidas em um objeto específico, apenas as instâncias concedidas pela função do concessor ativo serão revogadas.

  • A função ou o usuário tem o privilégio global MANAGE GRANTS.

    Se várias instâncias de um privilégio forem concedidas em um objeto específico, todas as instâncias serão revogadas.

    Observe que somente a função do sistema SECURITYADMIN e superior têm o privilégio MANAGE GRANTS por padrão; no entanto, o privilégio pode ser concedido a outras funções personalizadas.

Nos esquemas de acesso gerenciado (esquemas criados usando a sintaxe CREATE SCHEMA ... WITH MANAGED ACCESS), somente o proprietário do esquema (a função com o privilégio OWNERSHIP no esquema), uma função ou usuário com o privilégio global MANAGE GRANTS ou uma função superior pode revogar privilégios em objetos no esquema.

Exemplos

Para revogar o privilégio USAGE em um aplicativo Streamlit de um usuário específico, joe:

REVOKE USAGE ON STREAMLIT streamlit_db.streamlit_schema.streamlit_app FROM USER joe;
Copy

Para revogar o privilégio USAGE em um procedimento de um usuário específico, user1:

REVOKE USAGE ON PROCEDURE mydb.myschema.myprocedure(number) FROM USER user1;
Copy