- 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¶
Aucun.
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;