REVOKE <privilégios> FROM APPLICATION ROLE

Revoga um ou mais privilégios de acesso em um objeto de nível de esquema protegível de uma função de aplicativo. Os privilégios que podem ser revogados são específicos do objeto.

Para obter mais detalhes sobre funções e objetos protegíveis, consulte Visão geral do controle de acesso.

Variações:

GRANT OWNERSHIP , GRANT <privilégios> … TO APPLICATIONROLE

Sintaxe

Funções de conta:

REVOKE [ GRANT OPTION FOR ]
    {
    | { schemaPrivileges         | ALL [ PRIVILEGES ] } ON { SCHEMA <schema_name> | ALL SCHEMAS IN DATABASE <db_name> }
    | { schemaPrivileges         | ALL [ PRIVILEGES ] } ON { FUTURE SCHEMAS IN DATABASE <db_name> }
    | { schemaObjectPrivileges   | ALL [ PRIVILEGES ] } ON { <object_type> <object_name> | ALL <object_type_plural> IN SCHEMA <schema_name> }
    | { schemaObjectPrivileges   | ALL [ PRIVILEGES ] } ON FUTURE <object_type_plural> IN { DATABASE <db_name> | SCHEMA <schema_name> }
    }
  FROM APPLICATION ROLE <name> [ RESTRICT | CASCADE ]
Copy

Onde:

schemaObjectPrivileges ::=
  -- For ALERT
     { MONITOR | OPERATE } [ , ... ]
  -- For DYNAMIC TABLE
     OPERATE, SELECT [ , ...]
  -- For EVENT TABLE
     { INSERT | SELECT } [ , ... ]
  -- For FILE FORMAT, FUNCTION (UDF or external function), PROCEDURE, SECRET, or SEQUENCE
     USAGE [ , ... ]
  -- For PIPE
     { APPLYBUDGET | MONITOR | OPERATE } [ , ... ]
  -- For { MASKING | PACKAGES | PASSWORD | ROW ACCESS | SESSION } POLICY or TAG
     APPLY [ , ... ]
  -- For SECRET
     READ, USAGE [ , ... ]
  -- For external STAGE
     USAGE [ , ... ]
  -- For internal STAGE
     READ [ , WRITE ] [ , ... ]
  -- For STREAM
     SELECT [ , ... ]
  -- For TABLE
     { APPLYBUDGET | DELETE | EVOLVE SCHEMA | INSERT | REFERENCES | SELECT | TRUNCATE | UPDATE } [ , ... ]
  -- For TAG
     READ
  -- For TASK
     { APPLYBUDGET | MONITOR | OPERATE } [ , ... ]
  -- For VIEW
     { REFERENCES | SELECT } [ , ... ]
  -- For MATERIALIZED VIEW
     { APPLYBUDGET | REFERENCES | SELECT } [ , ... ]
Copy

Para obter mais detalhes sobre os privilégios suportados para 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 concedidos.

object_type

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

  • ALERT

  • DYNAMIC TABLE

  • EVENT TABLE

  • EXTERNAL TABLE

  • FILE FORMAT

  • FUNCTION

  • MASKING POLICY

  • MATERIALIZED VIEW

  • NETWORK RULE

  • PACKAGES POLICY

  • PASSWORD POLICY

  • PIPE

  • PROCEDURE

  • ROW ACCESS POLICY

  • SECRET

  • SESSION POLICY

  • SEQUENCE

  • STAGE

  • STREAM

  • TABLE

  • TAG

  • TASK

  • VIEW

object_type_plural

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

Observe que não são permitidas concessões em massa em canais.

name

Especifica o identificador da função do aplicativo (ou seja, a função à qual os privilégios são concedidos).

Parâmetros opcionais

FUTURE

Se especificado, apenas remove privilégios concedidos em novos (ou seja, futuros) objetos de esquema de um tipo especificado (por exemplo, tabelas ou exibições) em vez de objetos existentes. Note que quaisquer privilégios concedidos para objetos existentes são retidos.

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 reatribuídos a outra função do aplicativo.

RESTRICT

Se o privilégio que está sendo revogado foi novamente concedido a outra função do aplicativo, o comando REVOKE falha.

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 à função de destino por um concessor diferente (concessão paralela), essa concessão não será afetada e a função de destino manterá o privilégio.

Padrão: RESTRICT

Exigências de segurança

Revogação de privilégios em objetos individuais

Você pode usar uma função ativa que atenda aos critérios a seguir, ou uma função superior, podem ser usadas para revogar os privilégios em um objeto de outras funções de aplicativo:

  • A função é identificada como concessora do privilégio na coluna GRANTED_BY na saída SHOW GRANTS.

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

  • A função tem o privilégio global MANAGE GRANTS.

    Se você tiver várias instâncias de um privilégio 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.

As funções a seguir podem revogar privilégios de objetos em um esquema de acesso gerenciado (ou seja, esquemas criados usando a sintaxe CREATE SCHEMA … WITH MANAGED ACCESS):

  • A função de aplicativo por causa desta função é o proprietário do esquema (ou seja, tem o privilégio OWNERSHIP no esquema).

  • Uma função com o privilégio global MANAGE GRANTS.

Revogação de concessões em objetos futuros de um tipo específico

Em esquemas de acesso gerenciado, a função do aplicativo ou uma função com o privilégio global MANAGE GRANTS pode revogar privilégios em objetos futuros no esquema.

Em esquemas padrão, o privilégio global MANAGE GRANTS é necessário para revogar privilégios sobre objetos futuros no esquema.

Notas de uso

  • Um privilégio pode ser concedido a uma função de aplicativo várias vezes por concessores diferentes. Uma instrução REVOKE <privilege> só revoga concessões para os quais a função ativa, ou uma função inferior em uma hierarquia, é o concessor. Quaisquer concessões adicionais de um privilégio especificado por outros concessores são ignoradas.

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

  • Ao revogar privilégios de uma UDF individual, é preciso especificar os tipos de dados para os argumentos, se houver, para a UDF sob a forma de udf_name ( [ arg_data_type , ... ] ). Isto é necessário porque o Snowflake usa tipos de dados de argumentos para resolver UDFs que têm o mesmo nome dentro de um esquema. Para obter mais detalhes, consulte Visão geral das funções definidas pelo usuário.

  • Ao revogar privilégios de um procedimento individual armazenado, você deverá especificar os tipos de dados para os argumentos, se houver, para o procedimento na forma de procedure_name ( [ arg_data_type , ... ] ). Isto é necessário porque o Snowflake usa tipos de dados de argumentos para resolver procedimentos armazenados que têm o mesmo nome dentro de um esquema.

  • Concessões futuras: Revogar concessões futuras só remove as concessões de privilégios para objetos futuros de um tipo especificado. Quaisquer privilégios concedidos para objetos existentes são mantidos.

    Para obter mais informações, consulte esquemas de acesso gerenciado.

Exemplo

Revogar o privilégio SELECT em uma exibição de uma função de aplicativo:

REVOKE SELECT ON VIEW data.views.credit_usage
  FROM APPLICATION ROLE app_snowflake_credits;
Copy