Kategorien:

Kontextfunktionen (Sitzungsobjekt)

INVOKER_ROLE

Gibt den Rollennamen des Objekts zurück, das die Abfrage ausführt.

Siehe auch:

Erweiterte Sicherheit auf Spaltenebene

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

    CURRENT_ROLE

    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.

    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:

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;