Catégories :

Fonctions contextuelles (Objet de session)

IS_GRANTED_TO_INVOKER_ROLE

Renvoie TRUE si le rôle renvoyé par la fonction INVOKER_ROLE hérite des privilèges du rôle spécifié dans l’argument, en fonction du contexte dans lequel la fonction est appelée.

La fonction INVOKER_ROLE identifie et renvoie uniquement le rôle de compte de l’objet exécutant une instruction SQL. Les rôles de base de données ne sont pas pris en charge.

Voir aussi :

IS_OBJECT

Syntaxe

IS_GRANTED_TO_INVOKER_ROLE( '<string_literal>' )
Copy

Arguments

'string_literal'

Nom du rôle.

Notes sur l’utilisation

  • Si vous utilisez la fonction IS_GRANTED_TO_INVOKER_ROLE 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.

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

  • Le tableau suivant résume le contexte dans lequel vous pouvez appeler la fonction et la hiérarchie des rôles que Snowflake évalue.

    Contexte

    Rôle évalué

    Utilisateur

    CURRENT_ROLE

    Table

    CURRENT_ROLE.

    Vue

    Afficher le rôle du propriétaire.

    UDF

    Rôle du propriétaire de l’UDF.

    Procédure stockée avec droit de l’appelant

    CURRENT_ROLE.

    Procédure stockée avec droit du propriétaire

    Rôle du propriétaire de la procédure stockée.

    Tâche

    Rôle de propriétaire de tâche.

    Flux

    Rôle qui interroge un flux donné.

  • Si vous préférez évaluer la hiérarchie des rôles pour la session en cours, appelez plutôt IS_ROLE_IN_SESSION.

Exemple

Appelez la fonction deux fois :

IS_GRANTED_TO_INVOKER_ROLE('ANALYST')

--------------------------------------+
IS_GRANTED_TO_INVOKER_ROLE('ANALYST') |
--------------------------------------+
                TRUE                  |
--------------------------------------+
Copy

Spécifiez la fonction dans le corps de la politique de masquage :

CREATE OR REPLACE MASKING POLICY mask_string AS
(val string) RETURNS string ->
CASE
  WHEN IS_GRANTED_TO_INVOKER_ROLE('ANALYST') then val
  ELSE '*******'
END;
Copy