- 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 Maskierungsrichtlinien verwenden möchten, muss Ihr Snowflake-Konto die Enterprise Edition oder höher haben.
In der folgenden Tabelle ist die Beziehung zwischen dem Abfragekontext und der Rolle, die von der Funktion bewertet wird, zusammengefasst.
Kontext
Bewertete Rolle
Benutzer
Tabelle
CURRENT_ROLE
Ansicht
Rolle des Eigentümers der Ansicht
UDF
Rolle des Eigentümers der UDF
Gespeicherte Prozedur mit Aufruferrechten
CURRENT_ROLE
Gespeicherte Prozedur mit Eigentümerrechten
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:
CREATE OR REPLACE MASKING POLICY mask_string AS (val string) RETURNS string -> CASE WHEN INVOKER_ROLE() IN ('ANALYST') THEN val ELSE NULL END;
Rückgabe eines statischen maskierten Werts für nicht autorisierte Benutzer:
CREATE OR REPLACE MASKING POLICY mask_string AS (val string) RETURNS string -> CASE WHEN INVOKER_ROLE() IN ('ANALYST') THEN val ELSE '********' END;
Rückgabe eines Hashwerts mit SHA2, SHA2_HEX für nicht autorisierte Benutzer:
CREATE OR REPLACE MASKING POLICY mask_string AS (val string) RETURNS string -> CASE WHEN INVOKER_ROLE() IN ('ANALYST') THEN val ELSE SHA2(val) END;