Kategorien:

Kontextfunktionen (Sitzungsobjekt)

INVOKER_SHARE

Gibt den Namen der Freigabe zurück, die direkt auf die Tabelle oder die Ansicht zugegriffen hat, wo die INVOKER_SHARE-Funktion aufgerufen wurde, andernfalls gibt die Funktion NULL zurück.

Unter diesem Thema:

Syntax

INVOKER_SHARE()

Argumente

Keine.

Nutzungshinweise

  • Wenn Sie die Funktion INVOKER_SHARE mit Sicherheit auf Spaltenebene verwenden möchten, muss Ihr Snowflake-Konto die Enterprise Edition oder höher sein.

  • Verwenden Sie die Funktion INVOKER_SHARE in einer Richtlinie, die an eine Tabelle oder Ansicht angehängt ist, die direkt von einer Freigabe aufgerufen wird.

  • Wenn die Funktion INVOKER_SHARE in einer Schreiben von benutzerdefinierten Funktionen (UDFs) innerhalb einer Maskierungsrichtlinie verwendet wird, die direkt an eine Tabelle oder Ansicht angehängt ist, gibt INVOKER_SHARE den Wert NULL zurück, da der Kontext der INVOKER_SHARE-Funktion nicht die Freigabe, sondern der UDF-Eigentümer ist.

  • Um leichter feststellen zu können, ob eine Tabelle oder Ansicht direkt oder indirekt von einer Freigabe aufgerufen wurde, sollten Sie die CURRENT_ACCOUNT-Funktion in einer Maskierungsrichtlinie verwenden. Diese Funktion gibt das Snowflake-Konto für die aktuelle Sitzung des Benutzers zurück, was bei der Bestimmung helfen kann, ob die Tabelle oder Ansicht von einem Data Sharing-Verbraucherkonto aus aufgerufen wird.

Beispiele

Betrachten Sie ein Data Sharing-Anbieterkonto, bei dem eine Maskierungsrichtlinie in einer Spalte mit einer sicheren Ansicht festgelegt ist. Es gibt zwei verschiedene Freigaben, die auf die sichere Ansicht zugreifen können, um zwei verschiedene Data Sharing-Verbraucher zu unterstützen.

Der Data Sharing-Anbieter erstellt die folgende Richtlinie zur Verwendung von UDFs, um festzustellen, auf welche Freigabe zugegriffen wird. Wenn ein Benutzer im Data Sharing-Verbraucherkonto versucht, die Daten über eine der beiden Freigaben abzufragen, sieht er Daten auf der Grundlage der Schreibweise der UDFs, andernfalls wird ein fest maskierter Wert angezeigt.

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;
Zurück zum Anfang