Kategorien:

Kontextfunktionen (Sitzungsobjekt)

IS_ORGANIZATION_USER_GROUP_IN_SESSION

Unter der Annahme, dass eine Rolle aus einer Organisationsbenutzergruppe importiert wurde, wird überprüft, ob sich die Rolle in der aktiven Primär- oder Sekundärrollenhierarchie des Benutzers für die Sitzung befindet.

Die Funktion gibt FALSE zurück, wenn die angegebene Rolle nicht mit einer Organisationsbenutzergruppe verknüpft ist.

Siehe auch:

Erweiterte Sicherheit auf Spaltenebene

Syntax

IS_ORGANIZATION_USER_GROUP_IN_SESSION( '<string_literal>' )
Copy

Argumente

'string_literal'

Der Name einer Rolle.

Rückgabewerte

TRUE

Die aktive Primärrolle oder die Sekundärrollen des aktuellen Benutzers in der Sitzung erben die Berechtigungen der angegebenen Rolle.

Wenn DEFAULT_SECONDARY_ROLES den Wert ALL hat, erben alle Rollen, die dem Benutzer zugewiesen wurden, die Berechtigungen der angegebenen Rolle.

Die angegebene Rolle kann die aktuelle Primärrolle oder Sekundärrolle sein (d. h. die von CURRENT_ROLE bzw. CURRENT_SECONDARY_ROLES zurückgegebenen Rollen) oder eine beliebige Rolle, die in der Rollenhierarchie darunter liegt.

FALSE

Eine der folgenden Möglichkeiten:

  • Die angegebene Rolle ist eine lokale Rolle, die nicht mit einer Organisationsbenutzergruppe verknüpft ist.

  • Die angegebene Rolle ist entweder höher in der Rollenhierarchie der aktuellen Primär- oder Sekundärrollen oder befindet sich überhaupt nicht in der Rollenhierarchie.

NULL

In einem Data Sharing-Verbraucherkonto gibt diese Funktion NULL zurück, wenn sie wie in Bedingungen von Maskierungsrichtlinien auf ein freigegebenes Objekt (z. B. eine sichere UDF oder eine sichere Ansicht). Dieses Verhalten verhindert, dass die Rollenhierarchie in einem Data Sharing-Verbraucherkonto offengelegt wird.

Nutzungshinweise

Die Funktion IS_ORGANIZATION_USER_GROUP_IN_SESSION ist ähnlich wie die Funktionen IS_DATABASE_ROLE_IN_SESSION und IS_ROLE_IN_SESSION. Die folgenden Nutzungshinweise gelten für alle diese Kontextfunktionen:

  • Verwenden Sie nur eine Syntax.

  • Namenssyntax:

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

    • Das Argument muss eine Zeichenfolge sein und die gleiche Groß-/Kleinschreibung haben, mit der die Rolle in Snowflake gespeichert ist. Weitere Details dazu finden Sie unter Anforderungen an Bezeichner.

  • Spaltensyntax:

    • Es kann nur genau eine Spalte als Argument übergeben werden.

    • Die Spalte muss den Datentyp STRING haben.

    • Verwenden Sie für die Angabe der Spalte eine der folgenden Optionen:

      • column_name

      • table_name.column_name

      • schema_name.table_name.column_name

      • database_name.schema_name.table_name.column_name

  • Virtuelle Spalten:

    Eine virtuelle Spalte, die das Ergebnis eines berechneten Wertes aus einem Ausdruck enthält, anstatt den berechneten Wert in der Tabelle zu speichern, wird nicht unterstützt.

    SELECT IS_ROLE_IN_SESSION(UPPER(authz_role)) FROM t1;
    
    Copy

    Eine virtuelle Spalte wird nur unterstützt, wenn der Ausdruck einen Alias für den Spaltennamen enthält:

    CREATE VIEW v2 AS
    SELECT
      authz_role,
      UPPER(authz_role) AS upper_authz_role
    FROM t2;
    
    SELECT IS_ROLE_IN_SESSION(upper_authz_role) FROM v2;
    
    Copy
  • Richtlinien:

    Wenn Sie diese Funktionen mit einer Maskierungsrichtlinie oder einer Zeilenzugriffsrichtlinie verwenden möchten, muss Ihr Snowflake-Konto die Enterprise Edition oder höher haben.

    Snowflake empfiehlt die Verwendung dieser Funktion, wenn Rollenhierarchie und geerbte Berechtigungen von den Richtlinienbedingungen ausgewertet werden müssen.

  • Ergebnis-Cache:

    Wenn Sie diese Funktion in einer Maskierungsrichtlinie oder einer Zeilenzugriffsrichtlinie verwenden und sich weder die Richtlinie noch die durch die Richtlinie geschützte Tabelle oder Spalte gegenüber einer früheren Abfrage ändert, können Sie die Funktion RESULT_SCAN verwenden, um die Ergebnisse einer Abfrage auf der geschützten Tabelle zurückzugeben. Der Ergebnis-Cache gilt nur bei Verwendung der Syntax für Nichtliterale.

  • Diese Funktionen können nicht in der Definition der materialisierten Ansicht verwendet werden, da sie nicht deterministisch sind und Snowflake nicht bestimmen kann, welche Daten materialisiert werden sollen.

Beispiele

Das folgende Beispiel gibt TRUE zurück, wenn das Folgende wahr ist:

  • Die Rolle analyst wurde erstellt oder verknüpft, als dem Konto eine Organisationsbenutzergruppe hinzugefügt wurde.

  • Die Berechtigungen, die der Rolle analyst gewährt werden, werden von der aktuellen Rolle in der Sitzung geerbt.

SELECT IS_ORGANIZATION_USER_GROUP_IN_SESSION('ANALYST');
Copy