Accorder les droits restreints de l’appelant pour un exécutable dans une application¶
Cette rubrique décrit comment accorder les droits restreints de l’appelant pour un exécutable dans une application.
Droits du propriétaire et droits restreints de l’appelant dans une application¶
Dans une Snowflake Native App, les exécutables s’exécutent avec les droits du propriétaire ou les droits restreints de l’appelant. Dans le contexte du Snowflake Native App Framework, les types d’exécutables suivants sont pris en charge :
Procédures stockées appartenant à l’application
Services disponibles dans les applications avec conteneurs
- Droits du propriétaire:
Les exécutables qui utilisent les droits du propriétaire s’exécutent avec les privilèges accordés au propriétaire de l’exécutable. Par défaut, les exécutables d’une application utilisent les droits du propriétaire. Dans une application, le propriétaire de l’exécutable est l’application elle-même.
- Restriction des droits de l’appelant:
Les droits restreints de l’appelant permettent à un exécutable de s’exécuter avec les droits de l’appelant, mais limitent les privilèges de l’appelant avec lesquels l’exécutable s’exécute. Avec les droits restreints de l’appelant, un exécutable appartenant à une application ne peut pas s’exécuter avec un privilège spécifique, sauf si un administrateur du compte consommateur l’autorise explicitement à l’aide de la commande
/sql-reference/sql/grant-caller
.
Privilèges requis pour accorder les droits restreints de l’appelant pour une application¶
Pour accorder les autorisations de l’appelant pour une application en tant que consommateur, vous devez utiliser le rôle ACCOUNTADMIN ou utiliser un rôle qui possède le privilège MANAGE CALLER GRANTS. Pour plus d’informations, voir GRANT CALLER.
Accorder les autorisations de l’appelant pour un exécutable dans une application à l’aide de Snowsight¶
À l’aide de l”Snowsight, vous pouvez accorder les autorisations de l’appelant à une application pour des objets dans le compte du consommateur.
Note
Pour effectuer d’autres tâches, comme révoquer les autorisations de l’appelant d’une application ou accorder les droits de l’appelant à une table spécifique, vous devez utiliser les commandes SQL appropriées.
Connectez-vous à Snowsight.
Dans le menu de navigation, sélectionnez Data Products » Apps.
Sélectionnez une application.
Cliquez sur l’icône Settings dans la barre d’outils, puis sélectionnez l’onglet Privileges.
Si l’application prend en charge les droits restreints de l’appelant, la section Restricted caller’s rights s’affiche dans l’onglet Privileges.
Note
Vous ne pouvez accorder les autorisations de l’appelant à partir de Snowsight que si le fournisseur a configuré l’application pour afficher l’UI des droits restreints de l’appelant.
Cliquez sur Add grants.
Sélectionnez un Access scope.
Cela permet de déterminer si les droits de l’appelant s’appliquent à un schéma, à une base de données ou au niveau du compte. Vous devez sélectionner l’option avec la plus petite quantité de champs d’application possible afin d’éviter d’accorder des droits inutiles à l’application.
Prudence
Soyez prudent lorsque vous sélectionnez le champ d’application de niveau compte, car cela peut accorder les droits de l’appelant à l’application pour tous les types d’objets pris en charge.
Si vous avez sélectionné le champ d’application du schéma ou de la base de données, sélectionnez le schéma ou la base de données selon les besoins.
Note
Vous pouvez sélectionner plusieurs schémas ou bases de données. Vous pouvez également sélectionner des schémas dans différentes bases de données.
Cliquez sur Next.
Sélectionnez le type d’objets auxquels les droits de l’appelant seront accordés.
Utilisez la fonction de recherche pour trouver un type d’objet. La liste des types d’objets dépend du champ d’application que vous avez choisi ci-dessus.
Lorsque vous sélectionnez un type d’objet, l’entrée de l’objet dans la liste s’étend aux privilèges disponibles pour chaque type d’objet.
Sélectionnez les privilèges que vous souhaitez accorder.
Vous pouvez sélectionner plusieurs privilèges pour chaque type d’objet. Vous pouvez également sélectionner des privilèges pour d’autres types d’objets.
Note
Snowflake accorde automatiquement le privilège USAGE pour tous les objets que vous sélectionnez.
Cliquez sur Next.
Sélectionnez Grant summary pour vérifier le champ d’application, les types d’objets et les privilèges que vous avez sélectionnés.
Note
Tous les objets du type sélectionné qui seront créés à l’avenir le seront avec les mêmes privilèges, en utilisant le champ d’application et les types d’objets sélectionnés.
Sélectionnez SQL pour voir les commandes GRANT CALLER que Snowsight exécutera.
Note
Si nécessaire, vous pouvez copier ces commandes et les exécuter manuellement dans une feuille de calcul.
Cliquez sur Save.
Le champ d’application, les objets et les privilèges que vous avez sélectionnés sont affichés dans Restricted caller’s rights section.
Pour modifier les privilèges que vous avez sélectionnés, cliquez sur Edit et sélectionnez ou désélectionnez les privilèges selon les besoins.
Accorder les autorisations de l’appelant pour un exécutable dans une application à l’aide de SQL¶
Lors de la configuration d’une application qui requiert les droits restreints de l’appelant, effectuez les tâches suivantes pour accorder les droits de l’appelant à l’application :
Consultez le listing de l’application pour vérifier si le fournisseur a communiqué que l’application comporte des exécutables RCR.
Accordez les autorisations de l’appelant mentionnées dans le listing. L’exemple suivant montre comment utiliser la commande GRANT CALLER pour accorder le privilège SELECT à toutes les tables d’une base de données et d’un schéma spécifiques :
GRANT CALLER USAGE ON DATABASE db1 TO APPLICATION hello_snowflake_app; GRANT CALLER USAGE ON SCHEMA db1.sch1 TO APPLICATION hello_snowflake_app; GRANT INHERITED CALLER SELECT ON ALL TABLES IN SCHEMA db.sch1 TO APPLICATION hello_snowflake_app;
Cette commande permet à un exécutable dont les droits de l’appelant sont restreints d’accéder à l’exécution de requêtes sur toutes les tables du schéma et de la base de données
db.sch1
. En plus d’accorder le privilège SELECT pour toutes les tables, vous devez également accorder le privilège USAGE pour la base de données et le schéma.