REVOKE <privilèges> FROM APPLICATION ROLE

Révoque pour un rôle d’application un ou plusieurs privilèges d’accès à un objet sécurisé au niveau du schéma. Les privilèges qui peuvent être révoqués sont spécifiques à chaque objet.

Pour plus de détails sur les rôles et les objets sécurisables, voir Aperçu du contrôle d’accès.

Variations :

GRANT OWNERSHIP , GRANT <privilèges> … TO APPLICATION ROLE

Syntaxe

Rôles de comptes :

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

Où :

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

Pour plus de détails 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 accordés.

object_type

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

  • 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

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

Notez que les autorisations globales sur les canaux ne sont pas autorisées.

name

Spécifie l’identificateur du rôle d’application destinataire (c’est-à-dire le rôle auquel les privilèges sont accordés).

Paramètres facultatifs

FUTURE

Si spécifié, supprime uniquement les privilèges accordés sur les nouveaux objets de schéma (futurs) d’un type spécifié (par exemple, tables ou vues) plutôt que sur les objets existants. Notez que tous les privilèges accordés sur les objets existants sont conservés.

RESTRICT | CASCADE

Si spécifié, détermine si l’opération de révocation réussit ou échoue pour les privilèges, en fonction du fait que les privilèges ont été réattribués à un autre rôle d’application.

RESTRICT

Si le privilège révoqué a été réattribué à un autre rôle d’application, 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é au rôle cible par un autre concédant (accord parallèle), cette autorisation ne sera pas affectée et le rôle cible conservera le privilège.

Par défaut : RESTRICT

Exigences en matière de sécurité

Révoquer des privilèges sur des objets individuels

Vous pouvez utiliser un rôle actif qui répond à l’un des critères suivants, ou un rôle supérieur, pour révoquer les privilèges d’autres rôles sur un objet :

  • Le rôle est identifié comme le donneur du privilège dans la colonne GRANTED_BY de la sortie SHOW GRANTS.

    Si vous avez plusieurs instances d’un privilège accordées sur l’objet spécifié, seules les instances accordées par le rôle du concédant actif de privilèges sont révoquées.

  • Le rôle possède le privilège global MANAGE GRANTS.

    Si vous avez plusieurs instances d’un privilège 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.

Les rôles suivants peuvent révoquer les privilèges des objets d’un schéma d’accès géré (c’est-à-dire les schémas créés à l’aide de la syntaxe CREATE SCHEMA… WITH MANAGED ACCESS) :

  • Le rôle d’application, car ce rôle est le propriétaire du schéma (c’est-à-dire qu’il a le privilège OWNERSHIP sur le schéma).

  • Un rôle avec le privilège global MANAGE GRANTS.

Révocation des autorisations sur les futurs objets d’un type spécifié

Dans les schémas d’accès gérés, le rôle d’application ou un rôle disposant du privilège global MANAGE GRANTS peut révoquer les privilèges sur les objets futurs du schéma.

Dans les schémas standards, le privilège global MANAGE GRANTS est requis pour révoquer des privilèges sur des objets futurs au sein du schéma.

Notes sur l’utilisation

  • Un privilège peut être accordé à un rôle d’application plusieurs fois par différents concédants. Un instruction de <privilège> REVOKE ne révoque que les autorisations pour lesquelles le rôle actif, ou un rôle inférieur dans une hiérarchie, est le concédant. Toute attribution supplémentaire d’un privilège spécifié par d’autres concédants est ignoré.

    Une instruction REVOKE <privilège> est réussie même si aucun privilège n’est révoqué. Une instruction de <privilège> REVOKE renvoie une erreur uniquement si un privilège spécifié possède des autorisations dépendantes et si la clause CASCADE est omise dans l’instruction.

  • Lorsque vous révoquez des privilèges sur une UDF individuelle, vous devez spécifier les types de données pour les arguments, le cas échéant, pour l’UDF sous la forme udf_name ( [ arg_data_type , ... ] ). Ceci est nécessaire parce que Snowflake utilise des types de données d’argument pour résoudre les UDFs qui ont le même nom dans un schéma. Pour plus de détails, reportez-vous à Vue d’ensemble des fonctions définies par l’utilisateur.

  • Lorsque vous révoquez des privilèges à une procédure stockée particulière, vous devez spécifier les types de données pour les arguments, le cas échéant, pour la procédure sous la forme procedure_name ( [ arg_data_type , ... ] ). Ceci est nécessaire parce que Snowflake utilise des types de données d’argument pour résoudre les procédures stockées qui ont le même nom dans un schéma.

  • Autorisations futures : la révocation des autorisations futures ne supprime que les autorisations de privilèges pour des objets futurs d’un type spécifié. Les privilèges accordés sur les objets existants sont conservés.

    Pour plus d’informations, voir les schémas d’accès gérés.

Exemple

Révoquer le privilège SELECT sur une vue à partir d’un rôle d’application :

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