Catégories :

Fonctions contextuelles (Objet de session)

IS_ROLE_IN_SESSION

Renvoie TRUE si le rôle primaire actif de l’utilisateur actuel ou les rôles secondaires de la session héritent des privilèges du rôle spécifié.

Le rôle spécifié peut être le rôle primaire 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.

Lorsque la valeur DEFAULT_SECONDARY_ROLES est ALL, la fonction renvoie TRUE si tout rôle accordé à l’utilisateur hérite des privilèges du rôle spécifié.

Renvoie FALSE si le rôle spécifié est soit plus élevé dans la hiérarchie des rôles du rôle primaire actuel ou des rôles secondaires, soit ne figure pas du tout dans la hiérarchie des rôles.

Voir aussi :

IS_OBJECT, Rubriques de sécurité avancées au niveau des colonnes

Syntaxe

is_role_in_session( '<string_literal>' )

Arguments

'litéral_chaine'

Nom du rôle.

Notes sur l’utilisation

  • Si vous utilisez la fonction IS_ROLE_IN_SESSION avec Sécurité au niveau des colonnes, vérifiez que votre compte Snowflake est bien en Enterprise Edition ou une version supérieure.

  • Lorsque cette fonction est utilisée pour accéder à une vue sécurisée ou une vue sécurisée UDF du compte du consommateur de partage de données, comme une condition dans une politique de masquage, cette fonction renvoie toujours une valeur NULL. Ce comportement empêche d’exposer la hiérarchie des rôles dans un compte de consommateur de partage de données.

  • Un seul nom de rôle peut être validé en tant qu’argument.

Exemple

Vérifiez si les privilèges accordés à un rôle spécifique sont hérités par le rôle actuel dans la session :

select is_role_in_session('ANALYST');

+-------------------------------+
| IS_ROLE_IN_SESSION('ANALYST') |
|-------------------------------|
| True                          |
+-------------------------------+

Utilisez la fonction dans une politique de masquage :

case
  when is_role_in_session('ANALYST') then val
  else '*******'
end;