REVOKE <privilégios> … FROM ROLE¶
Remove um ou mais privilégios em um objeto protegível de uma função ou função de banco de dados. Os privilégios que podem ser revogados são específicos do objeto.
- Funções:
Os privilégios que podem ser revogados de funções são agrupados nas seguintes categorias:
Privilégios globais
Privilégios para objetos de conta (monitores de recursos, warehouses virtuais e bancos de dados)
Privilégios para esquemas
Privilégios para objetos de esquema (tabelas, visualizações, estágios, formatos de arquivo, UDFs e sequências)
- Funções de banco de dados:
Os privilégios que podem ser revogados de funções de banco de dados são agrupados nas seguintes categorias:
Privilégios para o banco de dados que contém a função de banco de dados.
Privilégios para esquemas no banco de dados que contém a função de banco de dados.
Privilégios para objetos de esquema (tabelas, exibições, estágios, formatos de arquivo, UDFs e sequências) no banco de dados que contém a função de banco de dados.
- Consulte também:
Sintaxe¶
Funções de conta:
Funções de banco de dados:
Onde:
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_nameEspecifica o identificador do objeto no qual os privilégios são revogados.
object_typeEspecifica o tipo de objeto para objetos do nível de esquema.
AGENTAGGREGATION POLICYALERTAUTHENTICATION POLICYCORTEX SEARCH SERVICEDATA METRIC FUNCTIONDATASETDBT PROJECTDYNAMIC TABLEEVENT TABLEEXPERIMENTEXTERNAL TABLEFILE FORMATFUNCTIONGATEWAYGIT REPOSITORYIMAGE REPOSITORYICEBERG TABLEINTERACTIVE TABLEJOIN POLICYMASKING POLICYMATERIALIZED VIEWMCP SERVERMODELMODEL MONITORNETWORK RULENOTEBOOKONLINE FEATURE TABLEPACKAGES POLICYPASSWORD POLICYPIPEPRIVACY POLICYPROCEDUREPROJECTION POLICYROW ACCESS POLICYSECRETSEMANTIC VIEWSERVICESESSION POLICYSEQUENCESNAPSHOTSNAPSHOT POLICYSNAPSHOT SETSTAGESTORAGE LIFECYCLE POLICYSTREAMSTREAMLITTABLETAGTASKTYPEVIEWWORKSPACE
object_type_pluralForma plural de
object_type(por exemplo,TABLES,VIEWS).role_nameEspecifica o identificador da função do destinatário (ou seja, a função da qual os privilégios são revogados).
database_role_nameEspecifica o identificador da função do banco de dados destinatário (ou seja, a função da qual os privilégios são revogados). Se o identificador não estiver totalmente qualificado (na forma de
db_name.database_role_name), o comando procura a função do banco de dados no banco de dados atual para a sessão.
Parâmetros opcionais¶
GRANT OPTION FORSe especificado, elimina a capacidade do destinatário de conceder os privilégios a outra função.
Padrão: sem valor
ON FUTURESe especificado, remove apenas os privilégios concedidos a objetos de esquema novos (ou seja, futuros) de um tipo especificado (como tabelas ou exibições) em vez de objetos existentes. Note que quaisquer privilégios concedidos para objetos existentes são retidos.
RESTRICT | CASCADESe 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.
RESTRICT: se o privilégio que está sendo revogado foi novamente concedido a outra função, 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:
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:
A função é identificada como concessora 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 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.
Em esquemas de acesso gerenciado (ou seja, esquemas criados usando a sintaxe CREATE SCHEMA … WITH MANAGED ACCESS), somente o proprietário do esquema (ou seja, a função com o privilégio OWNERSHIP no esquema) ou uma função com o privilégio global MANAGE GRANTS, ou uma função superior, pode revogar privilégios em objetos no esquema.
- Revogação de concessões em objetos futuros de um tipo específico:
Nível do banco de dados
O privilégio global MANAGE GRANTS é necessário para revogar privilégios em objetos futuros em um banco de dados. Somente a função do sistema SECURITYADMIN e superior têm o privilégio MANAGE GRANTS; no entanto, o privilégio pode ser concedido a outras funções personalizadas.
Nível do esquema
Em esquemas de acesso gerenciado (ou seja, esquemas criados usando a sintaxe CREATE SCHEMA … WITH MANAGED ACCESS), o proprietário do esquema (ou seja, a função com o privilégio OWNERSHIP no esquema) 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¶
Os privilégios não podem ser concedidos ou revogados diretamente em nenhuma classe. No entanto, você pode criar uma instância de uma classe e revogar funções de instância de uma função de conta. Revogue o privilégio CREATE <class_name> no esquema para evitar que uma função crie uma instância de uma classe.
Um privilégio pode ser concedido a uma função 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.
Observe também que 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.
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, entretanto, que somente os privilégios detidos e concedíveis pela função que executa o comando GRANT são de fato concedidos à função de destino. Uma mensagem de advertência é gerada para quaisquer privilégios que não puderam ser concedidos.Você não pode especificar esta palavra-chave para tags.
Os privilégios concedidos a uma determinada função são automaticamente herdados por quaisquer outras funções às quais a função é concedida, bem como quaisquer outras funções de nível superior dentro da hierarquia de funções. Para obter mais detalhes, consulte Visão geral do controle de acesso.
Para bancos de dados, o privilégio IMPORTED PRIVILEGES se aplica somente a bancos de dados compartilhados (ou seja, bancos de dados criados a partir de um compartilhamento). Para obter mais detalhes, consulte Consumo de dados importados.
Para esquemas e objetos em esquemas, é fornecida uma opção para conceder privilégios a todos os objetos do mesmo tipo dentro do contêiner (ou seja, um banco de dados ou esquema). Esta é uma opção de conveniência; internamente, o comando é expandido em uma série de comandos individuais GRANT em cada objeto. Somente os objetos que atualmente existem dentro do contêiner são afetados.
Entretanto, observe que, no modelo Snowflake, a concessão de privilégios em massa não é uma prática recomendada. Em vez disso, o Snowflake recomenda criar uma função compartilhada e usar a função para criar objetos que são automaticamente acessíveis a todos os usuários a quem foi concedida a função.
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 detalhes sobre 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, é necessário usar uma função que tenha ou herde o privilégio USAGE na integração de armazenamento.
Se você revogar o privilégio USAGE da função, ela 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 uma função 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.
Ao conceder privilégios a um UDF individual, é preciso especificar os tipos de dados para os argumentos, se houver, para o 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 um exemplo, consulte Exemplos (neste tópico). Para obter mais detalhes, consulte Visão geral das funções definidas pelo usuário.Ao conceder privilégios em 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.OWNERSHIP é um privilégio válido em todos os tipos de objetos que oferecem suporte a concessões futuras.
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.
Para revogar privilégios em tabelas híbridas, use a palavra-chave padrão TABLE ou TABLES. Você não pode especificar HYBRID TABLE ou HYBRID TABLES.
To revoke privileges on interactive tables, use the standard TABLE or TABLES keyword. You cannot specify INTERACTIVE TABLE or INTERACTIVE TABLES.
Exemplos¶
Funções¶
Revogar o privilégio de criar um warehouse na conta da função analyst:
Revogar os privilégios necessários para operar (ou seja, suspender ou retomar) o warehouse report_wh da função analyst:
Revogar apenas o privilégio GRANT OPTION para o privilégio OPERATE no warehouse report_wh da função analyst. A função retém o privilégio OPERATE, mas não pode mais conceder o privilégio OPERATE no warehouse a outras funções:
Revogar o privilégio SELECT em todas as tabelas existentes no esquema mydb.myschema da função analyst:
Revogar todos os privilégios em dois UDFs (com o mesmo nome no esquema atual) da função analyst:
Observe que os UDFs têm argumentos diferentes, que é como o Snowflake identifica exclusivamente UDFs com o mesmo nome. Para obter mais detalhes sobre a nomenclatura de UDF, consulte Visão geral das funções definidas pelo usuário.
Revogar todos os privilégios em dois procedimentos armazenados (com o mesmo nome no esquema atual) da função analyst:
Observe que os dois procedimentos armazenados têm argumentos diferentes, que é como o Snowflake identifica de forma única os procedimentos com o mesmo nome.
Revogar os privilégios SELECT e INSERT concedidos em todas as tabelas futuras criadas no esquema mydb.myschema da função role1:
Revogar o privilégio USAGE em um notebook chamado mynotebook da função finance:
Funções de banco de dados¶
Revogar o privilégio SELECT em todas as tabelas existentes no esquema mydb.myschema da função do banco de dados mydb.dr1:
Revogar todos os privilégios em dois UDFs (com o mesmo nome no esquema atual) da função do banco de dados mydb.dr1:
Observe que os UDFs têm argumentos diferentes, que é como o Snowflake identifica exclusivamente UDFs com o mesmo nome. Para obter mais detalhes sobre a nomenclatura de UDF, consulte Visão geral das funções definidas pelo usuário.
Revogar todos os privilégios em dois procedimentos armazenados (com o mesmo nome no esquema atual) da função de banco de dados mydb.dr1:
Observe que os dois procedimentos armazenados têm argumentos diferentes, que é como o Snowflake identifica de forma única os procedimentos com o mesmo nome.
Revogar os privilégios SELECT e INSERT concedidos em todas as tabelas futuras criadas no esquema mydb.myschema da função de banco de dados mydb.dr1:
Revogar o privilégio USAGE em um notebook a partir de uma função de banco de dados mydb.dr1: