Accorder les droits restreints de l’appelant pour un exécutable dans une application

Cette rubrique décrit comment un consommateur peut accorder les droits de l’appelant à un exécutable dans une Snowflake Native App.

Droits du propriétaire et droits restreints de l’appelant dans une application

Dans le contexte d’une application, les types d’exécutables suivants sont pris en charge :

  • Procédures stockées appartenant à l’application

  • Services disponibles dans les applications avec conteneurs

Chacun de ces types d’exécutables peut être configuré pour utiliser les droits du propriétaire ou les droits restreints de l’appelant.

Droits du propriétaire:

Par défaut, les exécutables d’une application utilisent les droits du propriétaire, ce qui signifie qu’ils s’exécutent avec les privilèges accordés au propriétaire de l’exécutable, à savoir l’application elle-même.

Par exemple, les droits du propriétaire permettent à un exécutable d’accéder aux données du compte du fournisseur et de présenter ces données au consommateur. Toutefois, ils ne permettent pas au consommateur d’accéder directement aux données.

Par exemple, la commande CREATE PROCEDURE crée une procédure stockée qui utilise les droits du propriétaire par défaut. Les consommateurs peuvent appeler la procédure stockée s’ils ont obtenu un accès en utilisant des rôles d’application. Si l’application dispose des privilèges nécessaires pour effectuer une opération, la procédure stockée peut effectuer cette opération.

Pour obtenir des informations générales sur les droits du propriétaire, consultez Présentation des procédures stockées des droits de l’appelant et des droits du propriétaire.

Restriction des droits de l’appelant:

La restriction des droits de l’appelant permet à un exécutable de s’exécuter avec les droits de l’appelant, mais restreint les privilèges de l’appelant avec lesquels l’exécutable s’exécute. Avec des droits d’appelant restreints, un exécutable appartenant à une application ne peut pas s’exécuter avec un privilège spécifique, à moins qu’un administrateur du compte de consommateur ne l’autorise explicitement en utilisant la commande GRANT CALLER.

Note

Pour garantir la sécurité des exécutables d’une application, les Snowflake Native Apps ne prennent pas en charge les droits illimités de l’appelant.

Pour des informations générales sur les droits restreints de l’appelant, voir Restriction des droits de l’appelant.

Portée des droits restreints de l’appelant dans une application

Snowflake recommande aux consommateurs d’accorder les droits de l’appelant au niveau du conteneur, et non sur des objets spécifiques de leur compte.

Niveau schéma:

Accorde les droits de l’appelant sur le schéma, mais n’accorde aucun droit sur les objets du schéma. Par exemple, l’octroi du droit de l’appelant CALLER USAGE sur un schéma n’accorde que le privilège USAGE sur le schéma. Pour accorder l’accès à un objet spécifique, par exemple une fonction, utilisez GRANT INHERITED CALLER USAGE ON ALL FUNCTIONS IN SCHEMA.

Niveau base de données:

L’octroi des droits de l’appelant au niveau de la base de données permet uniquement à un exécutable d’accéder à la base de données et à tous les schémas de la base de données. Par exemple, l’octroi du droit de l’appelant CALLER USAGE accorde le privilège USAGE sur la base de données. Cependant, pour accorder l‘accès à un objet spécifique, vous devez utiliser la commande suivante :

GRANT INHERITED CALLER USAGE ON ALL FUNCTIONS IN DATABASE;
Copy
Nom du compte:

L’octroi des droits de l’appelant au niveau du compte permet à un exécutable d’effectuer des opérations au niveau du compte. L’octroi du droit de l’appelant CALLER USAGE permet uniquement à l’exécutable d’accéder au compte, mais ne donne pas accès aux objets du compte.

Pour permettre l’accès à des objets spécifiques, vous devez accorder l’accès à des types spécifiques d’objets dans le compte. Par exemple, l’octroi du droit de l’appelant CREATE DATABASE permet à un exécutable de créer des bases de données dans le compte du consommateur, comme le montre l’exemple suivant :

GRANT CALLER CREATE DATABASE ON ACCOUNT TO my_app;
Copy

Droits de l’appelant au niveau du compte qui peuvent être accordés à une application

Les fournisseurs peuvent configurer un exécutable dans une application pour utiliser les droits de l’appelant suivants au niveau du compte :

  • CREATE DATABASE

  • EXECUTE ALERT

  • EXECUTE MANAGED TASK

  • EXECUTE TASK

  • READ SESSION

  • VIEW LINEAGE

Note

Les consommateurs doivent faire preuve de prudence lorsqu’ils accordent les droits de l’appelant au niveau du compte à une application.

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, notamment révoquer les droits de l’appelant d’une application, accorder les droits de l’appelant à une table spécifique ou accorder les droits de l’appelant au niveau d’un compte, vous devez utiliser les commandes SQL appropriées.

  1. Connectez-vous à Snowsight.

  2. Dans le menu de navigation, sélectionnez Catalog » Apps.

  3. Sélectionnez une application.

  4. 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.

  5. Cliquez sur Add grants.

  6. 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.

  7. 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.

  1. Cliquez sur Next.

  2. 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.

  3. 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.

  4. Cliquez sur Next.

  5. 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.

  6. 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.

  7. 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 :

  1. Consultez le listing de l’application pour vérifier si le fournisseur a communiqué que l’application comporte des exécutables RCR.

  2. 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;
    
    Copy

    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.