- 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.
Dans ce chapitre :
Syntaxe¶
INVOKER_ROLE()
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
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.
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;
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;
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;