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.
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 ]
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 } [ , ... ]
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;