Accorder des privilèges pour les fonctions définies par l’utilisateur

Cette section répertorie les privilèges minimums requis sur les objets pour effectuer des actions SQL spécifiques avec une UDF ou une UDTF.

Dans ce chapitre :

Accorder des privilèges pour des UDFs et des UDTFs

Pour effectuer des actions SQL sur une UDF ou une UDTF, la personne effectuant l’action doit avoir été assignée à un rôle qui a reçu les privilèges requis. Ces actions SQL comprennent :

  • Création de la fonction, comme avec CREATE FUNCTION ou avec l” API Snowpark.

  • Propriété de la fonction afin de supprimer, modifier et gérer l’accès à la fonction, que ce soit par SQL ou par l’API de Snowpark.

  • Appel de la fonction, que ce soit avec SQL ou l’API de Snowpark.

Le rôle doit se voir attribuer des privilèges sur les objets liés à la fonction, notamment la base de données et le schéma, et (si nécessaire) une zone de préparation qui contient les dépendances de la fonction.

Pour accorder des privilèges sur un objet à un rôle, utilisez une instruction GRANT.

Le code de l’exemple suivant accorde à my_role le privilège USAGE sur la fonction my_java_udf.

GRANT USAGE ON FUNCTION my_java_udf(number, number) TO my_role;

Création d’UDTFs ou d’UDFs

La création, la gestion et l’exécution d’UDF ou d’UDTF nécessitent un rôle avec au minimum les privilèges suivants :

Objet

Privilèges

Remarques

Base de données

USAGE

Schéma

USAGE, CREATE FUNCTION

Zone de préparation

USAGE (zone de préparation externe) ou READ (zone de préparation interne)

Requis si la fonction dépend ou lit des fichiers sur une zone de préparation. Dans ce cas, cela inclut les fichiers en zone de préparation suivants :

  • Fichier JAR (Java ARchive) contenant le code source Java compilé pour une UDF Java précompilée.

  • Bibliothèques dont le code du gestionnaire a besoin comme dépendances, y compris les fichiers JAR, les modules Python, les fichiers .zip, etc.

  • Fichiers contenant du contenu lu par le code du gestionnaire. Cela inclut les données non structurées traitées par le gestionnaire.

Propriété d’UDFs ou d’UDTFs

Après la création d’une UDF ou d’une UDTF, le propriétaire de la fonction (c’est-à-dire la personne qui détient le rôle qui dispose du privilège OWNERSHIP sur la fonction) doit disposer au minimum des privilèges suivants :

Objet

Privilège

Remarques

Base de données

USAGE

Schéma

USAGE

Zone de préparation

USAGE (zone de préparation externe) ou READ (zone de préparation interne)

Requis si la fonction dépend ou lit des fichiers sur une zone de préparation. Dans ce cas, cela inclut les fichiers en zone de préparation suivants :

  • Fichier JAR (Java ARchive) contenant le code source Java compilé pour une UDF Java précompilée.

  • Bibliothèques dont le code du gestionnaire a besoin comme dépendances, y compris les fichiers JAR, les modules Python, les fichiers .zip, etc.

  • Fichiers contenant du contenu lu par le code du gestionnaire. Cela inclut les données non structurées traitées par le gestionnaire.

Fonction

OWNERSHIP

Appel d’UDFs ou d’UDTFs

Un rôle qui appelle une UDF ou une UDTF doit disposer au minimum des privilèges suivants :

Objet

Privilège

Remarques

Base de données

USAGE

Schéma

USAGE

Schéma qui contient les objets de niveau schéma de cette table. Si les objets sont contenus dans plusieurs schémas, le privilège USAGE est requis sur chacun d’eux.

Zone de préparation

USAGE (zone de préparation externe) ou READ (zone de préparation interne)

Requis si la fonction dépend ou lit des fichiers sur une zone de préparation. Dans ce cas, cela inclut les fichiers en zone de préparation suivants :

  • Fichier JAR (Java ARchive) contenant le code source Java compilé pour une UDF Java précompilée.

  • Bibliothèques dont le code du gestionnaire a besoin comme dépendances, y compris les fichiers JAR, les modules Python, les fichiers .zip, etc.

  • Fichiers contenant du contenu lu par le code du gestionnaire. Cela inclut les données non structurées traitées par le gestionnaire.

Fonction

USAGE

Requis lorsque quelqu’un d’autre que le propriétaire de la fonction appelle la fonction. USAGE sur la fonction doit être accordé à un rôle qui est attribué à une personne qui appellera la fonction.

Revenir au début