- 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:
Syntax¶
IS_ORGANIZATION_USER_GROUP_IN_SESSION( '<string_literal>' )
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 WertALL
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;
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;
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');