Catégories :

Fonctions contextuelles (Objet de session)

INVOKER_ROLE

Renvoie le nom de rôle de l’objet exécutant la requête.

Voir aussi :

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

Dans ce chapitre :

Syntaxe

INVOKER_ROLE()

Arguments

Aucun.

Notes sur l’utilisation

  • Si vous utilisez la fonction INVOKER_ROLE avec Sécurité au niveau des colonnes, vérifiez que votre compte Snowflake est bien l’édition Enterprise ou une version plus récente.

  • Le tableau suivant résume la relation entre la requête et la valeur INVOKER_ROLE dans l’expression SQL de politique de masquage.

    Requête dans laquelle la politique de masquage s’applique

    Valeur renvoyée par INVOKER_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.

    Invoker Role Many Views

    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 :

case
  when invoker_role() IN ('ANALYST') then val
  else NULL
end;

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

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 :

case
  when invoker_role() in ('ANALYST') then val
  else sha2(val) -- return hash of the column value
end;