Catégories :

Fonctions contextuelles (Objet de session)

INVOKER_ROLE

Renvoie le nom du rôle de niveau compte de l’objet qui exécute la requête ou NULL si le nom du rôle est un rôle de base de données.

Voir aussi :

Rubriques de sécurité avancées au niveau des colonnes

Dans ce chapitre :

Syntaxe

INVOKER_ROLE()
Copy

Arguments

Aucune.

Notes sur l’utilisation

  • Si vous utilisez la fonction INVOKER_ROLE avec une politique de masquage, vérifiez que votre compte Snowflake est bien en Enterprise Edition ou une version supérieure.

  • Le tableau suivant résume la relation entre le contexte de la requête et le rôle que la fonction évalue.

    Contexte

    Rôle évalué

    Utilisateur

    CURRENT_ROLE

    Table

    CURRENT_ROLE.

    Vue

    Afficher le rôle du propriétaire.

    UDF

    Rôle du propriétaire de l’UDF.

    Procédure stockée avec droit de l’appelant

    CURRENT_ROLE.

    Procédure stockée avec droit du propriétaire

    Rôle du propriétaire de la procédure stockée.

    Tâche

    Rôle de propriétaire de tâche.

    Flux

    Rôle qui interroge un flux donné.

  • Le diagramme suivant montre la relation entre un exécutant de requête, les rôles dans Snowflake et les politiques de masquage sur les tables ou les vues.

    Rôle de l'invocateur - Plusieurs vues

    Où :

    • R0, R1, R2, R3

      Sont des rôles dans Snowflake.

    • P1, P2, P3

      Sont des politiques de masquage dans Snowflake.

    • V1, V2

      Sont des vues dans Snowflake.

    • T

      Est une table dans Snowflake.

    Sur la base de ce diagramme, les valeurs de CURRENT_ROLE et INVOKER_ROLE dans une requête sont les suivantes :

    Politique

    CURRENT_ROLE

    INVOKER_ROLE

    P1

    R3

    R1

    P2

    R3

    R2

    P3

    R3

    R3

Exemples

Ces exemples montrent comment utiliser INVOKER_ROLE dans une expression SQL de politique de masquage.

Renvoi de NULL pour les utilisateurs non autorisés :

CREATE OR REPLACE MASKING POLICY mask_string AS
(val string) RETURNS string ->
CASE
  WHEN INVOKER_ROLE() IN ('ANALYST') THEN val
  ELSE NULL
END;
Copy

Renvoi d’une valeur masquée statique pour les utilisateurs non autorisés :

CREATE OR REPLACE MASKING POLICY mask_string AS
(val string) RETURNS string ->
CASE
  WHEN INVOKER_ROLE() IN ('ANALYST') THEN val
  ELSE '********'
END;
Copy

Renvoi d’une valeur de hachage en utilisant SHA2, SHA2_HEX pour les utilisateurs non autorisés :

CREATE OR REPLACE MASKING POLICY mask_string AS
(val string) RETURNS string ->
CASE
  WHEN INVOKER_ROLE() IN ('ANALYST') THEN val
  ELSE SHA2(val)
END;
Copy