- Catégories :
Fonctions contextuelles (Objet de session)
INVOKER_SHARE¶
Renvoie le nom du partage qui a directement accédé à la table ou à la vue dans laquelle la fonction INVOKER_SHARE est invoquée, sinon la fonction renvoie NULL.
Dans ce chapitre :
Syntaxe¶
INVOKER_SHARE()
Arguments¶
Aucun.
Notes sur l’utilisation¶
Si vous utilisez la fonction INVOKER_SHARE avec une politique de masquage, vérifiez que votre compte Snowflake est bien en Enterprise Edition ou une version supérieure.
Utilisez la fonction INVOKER_SHARE dans une politique qui est attachée à une table ou une vue qui est directement appelée par un partage.
Si la fonction INVOKER_SHARE est utilisée à l’intérieur d’une Vue d’ensemble des fonctions définies par l’utilisateur dans une politique de masquage directement attachée à une table ou à une vue, INVOKER_SHARE renvoie NULL parce que le contexte de la fonction INVOKER_SHARE est le propriétaire UDF et non le partage.
Pour aider à déterminer si une table ou une vue a été directement ou indirectement appelée par un partage, envisagez d’utiliser la fonction CURRENT_ACCOUNT dans une politique de masquage. Cette fonction renvoie le compte Snowflake pour la session en cours de l’utilisateur, ce qui peut aider à déterminer si la table ou la vue est appelée à partir d’un compte consommateur de partage de données.
Exemples¶
Prenons l’exemple d’un compte de fournisseur de partage de données dont la politique de masquage est définie sur une colonne d’une vue sécurisée. Il y a deux partages différents qui peuvent accéder à la vue sécurisée pour prendre en charge deux consommateurs différents de partage de données.
Le fournisseur de partage de données crée la politique suivante pour utiliser des UDFs afin d’identifier le partage auquel on accède. Si un utilisateur du compte consommateur de partage de données tente d’interroger les données via l’un ou l’autre des partages, il voit les données en fonction de la façon dont les UDFs sont écrites, sinon il voit une valeur masquée fixe.
create or replace masking policy mask_share as (val string) returns string -> case when invoker_share() in ('SHARE1') then mask1_function(val) when invoker_share() in ('SHARE2') then mask2_function(val) else '***MASKED***' end;Copy