Catégories :

Fonctions contextuelles (Objet de session)

INVOKER_ROLE

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

Utilisez la fonction INVOKER_ROLE dans une Sécurité au niveau des colonnes expression SQL de politique de masquage.

Voir aussi :

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

Dans ce chapitre :

Syntaxe

INVOKER_ROLE()

Arguments

Aucun.

Notes sur l’utilisation

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;