- Kategorien:
Kontextfunktionen (Sitzungsobjekt)
INVOKER_ROLE¶
Gibt den Namen der Rolle auf Kontoebene des Objekts zurück, das die Abfrage ausführt, oder NULL, wenn der Name der Rolle eine Datenbankrolle ist.
- Siehe auch:
Unter diesem Thema:
Syntax¶
INVOKER_ROLE()
Argumente¶
Keine.
Nutzungshinweise¶
Wenn Sie die Funktion INVOKER_ROLE mit Sicherheit auf Spaltenebene verwenden möchten, muss Ihr Snowflake-Konto die Enterprise Edition oder höher sein.
In der folgenden Tabelle ist die Beziehung zwischen der Abfrage und dem INVOKER_ROLE-Wert im SQL-Ausdruck der Maskierungsrichtlinie zusammengefasst.
Abfrage, wo die Maskierungsrichtlinie gilt
Rückgabewert von INVOKER_ROLE
Ansicht
Rolle des Eigentümers der Ansicht
UDF
Rolle des Eigentümers der UDF
Gespeicherte Prozedur mit Aufruferrecht
Gespeicherte Prozedur mit Eigentümerrecht
Rolle des Eigentümers der gespeicherten Prozedur
Aufgabe
Rolle des Eigentümers der Aufgabe
Stream
Die Rolle, die einen bestimmten Stream abfragt.
Die folgende Abbildung zeigt die Beziehung zwischen einem Abfrageausführenden, den Rollen in Snowflake und den Maskierungsrichtlinien für Tabellen oder Ansichten.
Wobei:
R0, R1, R2, R3
Rollen in Snowflake.
P1, P2, P3
Maskierungsrichtlinien in Snowflake.
V1, V2
Ansichten in Snowflake.
T
Eine Tabelle in Snowflake.
Basierend auf dieser Abbildung lauten die Werte von CURRENT_ROLE und INVOKER_ROLE in einer Abfrage wie folgt:
Richtlinie
CURRENT_ROLE
INVOKER_ROLE
P1
R3
R1
P2
R3
R2
P3
R3
R3
Beispiele¶
In den folgenden Beispielen wird die Verwendung von INVOKER_ROLE in einem SQL-Maskierungsrichtlinienausdruck gezeigt.
Rückgabe von NULL für nicht autorisierte Benutzer:
case when invoker_role() IN ('ANALYST') then val else NULL end;
Rückgabe eines statischen maskierten Werts für nicht autorisierte Benutzer:
case when invoker_role() in ('ANALYST') then val else '********' end;
Rückgabe eines Hashwerts mit SHA2, SHA2_HEX für nicht autorisierte Benutzer:
case when invoker_role() in ('ANALYST') then val else sha2(val) -- return hash of the column value end;