- Catégories :
Fonctions contextuelles (Objet de session)
IS_ORGANIZATION_USER_GROUP_IN_SESSION¶
En supposant qu’un rôle ait été importé d’un groupe d’utilisateurs de l’organisation, vérifie si le rôle figure dans la hiérarchie active des rôles primaires ou secondaires de l’utilisateur pour la session.
La fonction renvoie FALSE si le rôle spécifié n’est pas lié à un groupe d’utilisateurs de l’organisation.
Syntaxe¶
IS_ORGANIZATION_USER_GROUP_IN_SESSION( '<string_literal>' )
Arguments¶
'string_literal'
Le nom d’un rôle.
Renvoie¶
TRUE
Le rôle principal ou les rôles secondaires actifs de l’utilisateur dans la session héritent des privilèges du rôle spécifié.
Lorsque la valeur
DEFAULT_SECONDARY_ROLES
estALL
, tout rôle accordé à l’utilisateur hérite des privilèges du rôle spécifié.Le rôle spécifié peut être le rôle principal ou secondaire actuel (c’est-à-dire les rôles renvoyés par CURRENT_ROLE ou CURRENT_SECONDARY_ROLES, respectivement) ou tout rôle inférieur dans la hiérarchie des rôles.
FALSE
L’un ou l’autre des éléments suivants :
Le rôle spécifié est un rôle local qui n’est pas lié à un groupe d’utilisateurs de l’organisation.
Le rôle spécifié est soit plus élevé dans la hiérarchie des rôles du rôle principal actuel ou des rôles secondaires, soit ne figure pas du tout dans la hiérarchie des rôles.
NULL
Dans un compte consommateur de partage de données, cette fonction renvoie NULL si elle fait référence à un objet partagé (par exemple, UDF sécurisé ou vue sécurisée), comme dans une condition de politique de masquage. Ce comportement empêche d’exposer la hiérarchie des rôles dans un compte de consommateur de partage de données.
Notes sur l’utilisation¶
La fonction IS_ORGANIZATION_USER_GROUP_IN_SESSION est similaire aux fonctions IS_DATABASE_ROLE_IN_SESSION et IS_ROLE_IN_SESSION. Les notes sur l’utilisation suivantes s’appliquent à toutes ces fonctions contextuelles :
Utilisez une seule syntaxe.
Syntaxe du nom :
Un seul nom de rôle peut être validé en tant qu’argument.
L’argument doit être une chaîne et utiliser la même casse que celle utilisée pour stocker le rôle dans Snowflake. Pour plus de détails, voir Exigences relatives à l’identificateur.
Syntaxe de la colonne :
Une seule colonne peut être validée en tant qu’argument.
La colonne doit avoir un type de données STRING.
Spécifiez la colonne comme l’une des suivantes :
column_name
table_name.column_name
schema_name.table_name.column_name
database_name.schema_name.table_name.column_name
Colonnes virtuelles :
Une colonne virtuelle, qui contient le résultat d’une valeur calculée à partir d’une expression plutôt que la valeur calculée stockée dans la table, n’est pas prise en charge.
SELECT IS_ROLE_IN_SESSION(UPPER(authz_role)) FROM t1;
Une colonne virtuelle n’est prise en charge que si l’expression comporte un alias pour le nom de la colonne :
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;
Politiques :
Si vous utilisez ces fonctions avec une politique de masquage ou une politique d’accès aux lignes, vérifiez que votre compte Snowflake est bien en Enterprise Edition ou une version supérieure.
Snowflake recommande d’utiliser cette fonction lorsque les conditions de la politique doivent évaluer la hiérarchie des rôles et les privilèges hérités.
Cache du résultat :
Si vous utilisez cette fonction dans une politique de masquage ou une politique d’accès aux lignes et que ni la politique ni la table ou la colonne protégée par la politique ne changent par rapport à une requête précédente, vous pouvez utiliser la fonction RESULT_SCAN pour renvoyer les résultats d’une requête sur la table protégée. Le cache de résultat s’applique uniquement lors de l’utilisation de la syntaxe non littérale.
Ces fonctions ne peuvent pas être utilisée dans la définition de la vue matérialisée, car les fonctions ne sont pas déterministes et Snowflake ne peut pas déterminer les données à matérialiser.
Exemples¶
L’exemple suivant renvoie TRUE si ce qui suit est vrai :
Le rôle
analyst
a été créé ou lié lorsqu’un groupe d’utilisateurs de l’organisation a été ajouté au compte.Les privilèges accordés au rôle
analyst
sont hérités par le rôle actuel dans la session.
SELECT IS_ORGANIZATION_USER_GROUP_IN_SESSION('ANALYST');