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:

Erweiterte Sicherheit auf Spaltenebene

Unter diesem Thema:

Syntax

INVOKER_ROLE()
Copy

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

    CURRENT_ROLE

    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.

    Invoker Role Many Views

    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;
Copy

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;
Copy

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;
Copy