Kategorien:

Kontextfunktionen (Sitzungsobjekt)

IS_GRANTED_TO_INVOKER_ROLE

Gibt TRUE zurück, wenn die von der Funktion INVOKER_ROLE zurückgegebene Rolle die Berechtigungen der im Argument angegebenen Rolle auf Basis des Kontextes erbt, in dem die Funktion aufgerufen wird.

Die Funktion INVOKER_ROLE sorgt nur für Identifikation und Rückgabe der Kontorolle des Objekts, das eine SQL-Anweisung ausführt. Datenbankrollen werden nicht unterstützt.

Siehe auch:

IS_OBJECT

Syntax

IS_GRANTED_TO_INVOKER_ROLE( '<string_literal>' )
Copy

Argumente

'string_literal'

Der Name der Rolle.

Nutzungshinweise

  • Wenn Sie die Funktion IS_GRANTED_TO_INVOKER_ROLE mit einer Maskierungsrichtlinien oder einer Zeilenzugriffsrichtlinie verwenden möchten, muss Ihr Snowflake-Konto die Enterprise Edition oder höher haben.

  • Es kann nur ein Rollenname als Argument übergeben werden.

  • Die folgende Tabelle bietet eine Übersicht zu dem Kontext, in dem die Funktion aufgerufen werden kann, und die Rollenhierarchie, die Snowflake auswertet.

    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.

  • Wenn Sie eher die Rollenhierarchie für die aktuelle Sitzung auswerten möchten, rufen Sie stattdessen IS_ROLE_IN_SESSION auf.

Beispiel

Direktes Aufrufen der Funktion:

IS_GRANTED_TO_INVOKER_ROLE('ANALYST')

--------------------------------------+
IS_GRANTED_TO_INVOKER_ROLE('ANALYST') |
--------------------------------------+
                TRUE                  |
--------------------------------------+
Copy

Angeben der Funktion im Text (Body) der Maskierungsrichtlinie:

CREATE OR REPLACE MASKING POLICY mask_string AS
(val string) RETURNS string ->
CASE
  WHEN IS_GRANTED_TO_INVOKER_ROLE('ANALYST') then val
  ELSE '*******'
END;
Copy