REVOKE <privilèges> … FROM USER

Retire à un utilisateur un ou plusieurs privilèges sur un objet sécurisable. Les privilèges qui peuvent être révoqués sont spécifiques à chaque objet.

Voir aussi :

Syntaxe

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

Où :

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

Pour plus d’informations sur les privilèges pris en charge pour chaque type d’objet, voir Privilèges de contrôle d’accès.

Paramètres requis

object_name

Indique l’identificateur de l’objet sur lequel les privilèges sont révoqués.

object_type

Spécifie le type d’objet pour les objets au niveau du schéma.

  • 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

Forme plurielle de object_type (par exemple, TABLES, VIEWS).

user_name

Spécifie l’identificateur de l’utilisateur destinataire (l’utilisateur dont les privilèges sont révoqués).

Paramètres facultatifs

GRANT OPTION FOR

Si ce paramètre est spécifié, supprime la possibilité pour l’utilisateur destinataire d’accorder des privilèges à un autre rôle ou utilisateur.

Par défaut : aucune valeur

RESTRICT | CASCADE

Si ce paramètre est spécifié, détermine si l’opération de révocation réussit ou échoue pour les privilèges, selon que les privilèges ont été ou non réattribués à un autre rôle ou utilisateur.

  • RESTRICT : si le privilège révoqué a été réattribué à un autre rôle ou utilisateur, la commande REVOKE échoue.

  • CASCADE : si le privilège révoqué a été réattribué, la commande REVOKE révoque récursivement ces autorisations dépendantes. Si le même privilège sur un objet a été accordé à l’utilisateur cible par un autre concédant (octroi parallèle), cet octroi n’est pas affecté et l’utilisateur cible conserve le privilège.

Par défaut : RESTRICT

Notes sur l’utilisation

  • Les privilèges ne peuvent pas être accordées ou révoquées directement dans une classe.

  • Un privilège peut être accordé à un utilisateur plusieurs fois par différents concédants. Une instruction REVOKE privilege ne révoque que les octrois dont l’utilisateur est le concédant. Toute attribution supplémentaire d’un privilège spécifié par d’autres concédants est ignoré.

    Notez également qu’une instruction REVOKE privilege réussit, même si aucun privilège n’est révoqué. REVOKE privilege ne renvoie une erreur que si un privilège spécifié dispose d’octrois dépendants et si la clause CASCADE est omise dans l’instruction.

  • Plusieurs privilèges peuvent être spécifiés pour le même type d’objet dans une seule instruction GRANT (chaque privilège étant séparé par des virgules), ou le mot clé spécial ALL [ PRIVILEGES ] peut être utilisé pour accorder tous les privilèges applicables au type d’objet spécifié. Notez toutefois que seuls les privilèges détenus et pouvant être accordés par le rôle ou l’utilisateur exécutant la commande GRANT sont effectivement accordés à l’utilisateur cible. Un message d’avertissement est renvoyé pour tout privilège qui n’a pas pu être accordé.

    Vous ne pouvez pas spécifier le mot-clé ALL [ PRIVILEGES ] pour les balises.

  • Pour les zones de préparation :

    • USAGE ne s’applique qu’aux zones de préparation externes.

    • READ | WRITE ne s’appliquent qu’aux zones de préparation internes. De plus, pour accorder le privilège WRITE sur une zone de préparation interne, le privilège READ doit d’abord être accordé sur la zone de préparation.

    Pour plus d’informations sur les zones de préparation externes et internes, consultez CREATE STAGE.

  • Pour les intégrations de stockage :

    • Pour exécuter les commandes suivantes à l’aide d’une zone de préparation externe s’appuyant sur une intégration de stockage, le privilège USAGE sur l’intégration de stockage doit être directement accordé à l’utilisateur ou utiliser un rôle qui possède ce privilège ou en hérite.

      Si vous révoquez le privilège USAGE de l’utilisateur, celui-ci ne peut pas exécuter ces commandes. Pour plus d’informations, voir Privilèges de zone de préparation.

    • Révoquer le privilège USAGE sur une intégration de stockage n’empêche pas un utilisateur d’interroger les tables externes associées à l’intégration de stockage. L’interrogation d’une table externe ne requiert pas le privilège USAGE sur son intégration de stockage sous-jacente.

Exigences en matière de contrôle d’accès

Révoquer des privilèges sur des objets individuels:

Un rôle actif ou un utilisateur remplissant l’un des critères suivants, ou encore un rôle supérieur, peut être utilisé pour révoquer les privilèges sur un objet des utilisateurs :

  • Le rôle ou l’utilisateur est identifié comme le concédant du privilège dans la colonne GRANTED_BY de la sortie SHOW GRANTS.

    Si plusieurs instances d’un privilège ont été accordées sur l’objet spécifié, seules les instances accordées par le rôle de donneur actif sont révoquées.

  • Le rôle ou l’utilisateur dispose du privilège MANAGE GRANTS global.

    Si plusieurs instances d’un privilège ont été accordées sur l’objet spécifié, toutes les instances sont révoquées.

    Notez que seuls les rôles système SECURITYADMIN et supérieurs disposent du privilège MANAGE GRANTS par défaut ; toutefois, ce privilège peut être accordé aux rôles personnalisés.

Dans les schémas d’accès gérés (schémas créés à l’aide de la syntaxe CREATE SCHEMA ... WITH MANAGED ACCESS), seul le propriétaire du schéma (le rôle disposant du privilège OWNERSHIP sur le schéma), un rôle ou un utilisateur disposant du privilège MANAGE GRANTS global ou un rôle supérieur peut révoquer les privilèges sur les objets du schéma.

Exemples

Pour révoquer le privilège USAGE d’un utilisateur spécifique sur une application Streamlit, joe :

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

Pour révoquer le privilège USAGE d’un utilisateur spécifique sur une procédure, user1 :

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