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 Sécurité au niveau des colonnes, vérifiez que votre compte Snowflake est bien l’édition Enterprise ou une version plus récente.

  • 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 Fonctions définies par l’utilisateur (UDFs) 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.

case
  when invoker_share() in 'SHARE1' then mask1_function(val)
  when invoker_share() in 'SHARE2' then mask2_function(val)
  else '***MASKED***'
end;