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 ]
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
}
[ , ... ]
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 } [ , ... ]
schemaPrivileges ::=
ADD SEARCH OPTIMIZATION | APPLYBUDGET
| MODIFY | MONITOR | USAGE
[ , ... ]
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 } [ , ... ]
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;
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;