Funktion IS_GRANTED_TO_INVOKER_ROLE: Änderung der Ausgabe

Achtung

Diese Verhaltensänderung ist in Bundle 2023_04 enthalten.

Den aktuellen Status des Bundles finden Sie unter Bundle-Verlauf.

Das Verhalten der Funktion IS_GRANTED_TO_INVOKER_ROLE ist wie folgt:

Bisher

Die Funktion ergibt FALSE, wenn das Argument einer Rolle im folgenden Kontext entspricht:

  • Aufrufen der Funktion durch sich selbst: die Rollenhierarchie der aktiven Primärrolle (d. h. CURRENT_ROLE())

  • Aufruferrechte einer gespeicherten Prozedur

  • Eigentümerrechte der gespeicherten Prozedur

  • Aufgabeneigentümer

Wenn die Funktion in einer Maskierungsrichtlinie verwendet wird, die eine Tabelle schützt, gibt die Funktion die Rollenhierarchie des Eigentümers der Richtlinie zurück. Wenn sich die Rolle im Funktionsargument in der Rollenhierarchie der Rolle befindet, die Eigentümer der Richtlinie ist, gibt die Funktion TRUE zurück. Andernfalls gibt die Funktion FALSE zurück.

Jetzt

Die Funktionsauswertung verwendet die Hierarchie der Primärrolle für die Sitzung in den folgenden Kontexten:

  • Aufrufen der Funktion durch sich selbst.

  • Tabelle

  • Gespeicherte Prozedur mit Aufruferrechten.

Wenn die Funktion in einer gespeicherten Prozedur mit Eigentümerrechten verwendet wird, gibt die Funktion die Rollenhierarchie der Rolle zurück, die Eigentümer der gespeicherten Prozedur mit Eigentümerrechten ist.

Wenn die Funktion mit einer Aufgabe verwendet wird, gibt die Funktion die Rollenhierarchie der Rolle zurück, der die Aufgabe gehört.

Um vorhandene Maskierungsrichtlinien zu identifizieren, die die Funktion IS_GRANTED_TO_INVOKER_ROLE verwenden, führen Sie die folgenden Anweisungen aus:

USE ROLE ACCOUNTADMIN;

SELECT *
    FROM snowflake.account_usage.masking_policies
    WHERE policy_body ilike '%is_granted_to_invoker_role%';
Copy

Ref.: 984