Kategorien:

Kontextfunktionen (Sitzungsobjekt)

INVOKER_ROLE

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

Verwenden Sie die Funktion INVOKER_ROLE in einem SQL-Maskierungsrichtlinienausdruck für Sicherheit auf Spaltenebene.

Siehe auch:

Erweiterte Sicherheit auf Spaltenebene

Unter diesem Thema:

Syntax

INVOKER_ROLE()

Argumente

Keine.

Nutzungshinweise

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;