Accord d’accès à une Snowflake Native App

Cette rubrique décrit comment un consommateur peut autoriser une Snowflake Native App à créer des objets dans son compte et à y accéder. Il s’agit notamment d’accorder les privilèges demandés par une application ou de permettre l’accès à des objets existants en utilisant des références.

À propos des privilèges et des références demandés par une application

Dans une Snowflake Native App simple, tous les objets nécessaires à l’application sont créés à l’intérieur de l’objet APPLICATION lorsque le script d’installation est exécuté pendant l’installation. Tous les objets requis par l’application sont créés et accessibles dans l’application installée. Le consommateur ne doit effectuer aucune action sur son compte.

Cependant, certaines applications peuvent demander au consommateur d’effectuer les types d’actions suivants sur son compte :

  • Créer une base de données ou un entrepôt.

  • Exécuter des tâches.

  • Accéder à des objets existants, par exemple une table.

Il existe deux types d’accès qu’une Snowflake Native App peut demander :

  • Privilèges permettant à l’application d’effectuer certaines opérations au niveau du compte. Une application peut demander les privilèges globaux suivants :

    • EXECUTE TASK

    • EXECUTE MANAGED TASK

    • CREATE WAREHOUSE

    • MANAGE WAREHOUSES

    • CREATE DATABASE

    Certaines applications peuvent également demander le privilège IMPORTED PRIVILEGES sur la base de données SNOWFLAKE. Reportez-vous à Attribuer le privilège IMPORTED PRIVILEGES sur la base de données SNOWFLAKE pour plus de détails.

  • Références qui permettent à l’application d’accéder à des objets qui existent déjà dans le compte consommateur et qui se trouvent en dehors de l’objet APPLICATION. Un fournisseur définit les références nécessaires au fichier manifest.yml.

    Après avoir installé l’application, le consommateur peut autoriser l’accès à un objet en créant une référence qui associe l’objet à l’application.

    Une application peut demander l’accès aux types d’objets suivants et aux privilèges correspondants :

    Type d’objet

    Privilèges autorisés

    TABLE

    SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES

    VIEW

    SELECT, REFERENCES

    EXTERNAL TABLE

    SELECT, REFERENCES

    FUNCTION

    USAGE

    PROCEDURE

    USAGE

    WAREHOUSE

    MODIFY, MONITOR, USAGE, OPERATE

    API INTEGRATION

    USAGE

Un consommateur peut approuver ces demandes en utilisant Snowsight ou en exécutant les commandes SQL comme décrit dans les sections suivantes.

Note

Si vous n’accordez pas les privilèges demandés ou n’associez pas à l’application de références à l’objet demandé, certaines parties de l’application risquent de ne pas fonctionner correctement.

Gérer les demandes d’accès à l’aide de Snowsight

Si un fournisseur met en œuvre une interface utilisateur dans une Snowflake Native App, un consommateur peut effectuer les opérations suivantes en utilisant Snowsight.

  • Visualiser et accorder des privilèges globaux.

  • Autoriser l’accès à des objets existants dans le compte du consommateur.

Attribuer des privilèges globaux.

Pour accorder des privilèges ou créer des références après l’installation d’une application, procédez comme suit :

  1. Connectez-vous à Snowsight.

  2. Dans la barre de navigation de gauche, sélectionnez Apps.

  3. Sélectionnez l’application.

  4. Sélectionnez l’icône Security dans la barre d’outils.

    Les autorisations au niveau du compte demandées par l’application apparaissent sous Account level privileges

  5. Dans la section Account-level privileges sélectionnez Review, puis faites basculer le curseur pour chaque privilège que vous souhaitez accorder.

  6. Sélectionnez Save.

Autoriser l’accès à des objets spécifiques.

Si un fournisseur met en œuvre une interface utilisateur pour une Snowflake Native App, un consommateur peut utiliser Snowsight pour autoriser l’accès aux objets de son compte.

Pour autoriser l’accès à des objets spécifiques :

  1. Connectez-vous à Snowsight.

  2. Dans la barre de navigation de gauche, sélectionnez Apps.

  3. Sélectionnez l’application.

  4. Sélectionnez l’icône Security dans la barre d’outils.

  5. Dans la section Privileges to objects sélectionnez Add à côté de l’objet auquel vous souhaitez autoriser l’accès.

  6. Sélectionnez Select Data et choisissez le produit de données auquel vous souhaitez autoriser l’accès.

  7. Sélectionnez Done.

Révoquer des privilèges et des accès à des objets

Pour révoquer des privilèges ou supprimer l’accès à des objets, procédez comme suit :

  1. Connectez-vous à Snowsight.

  2. Dans la barre de navigation de gauche, sélectionnez Apps.

  3. Sélectionnez l’application.

  4. Sélectionnez l’icône Security dans la barre d’outils.

    • Pour révoquer un privilège global, sélectionnez le bouton Edit puis faites basculer le curseur correspondant au privilège que vous souhaitez révoquer.

    • Pour révoquer l’accès à un objet spécifique, sélectionnez le bouton Delete puis sélectionnez Revoke Privilege.

Note

La révocation de privilèges ou la suppression de l’accès à des objets peut rendre l’application instable ou l’empêcher de fonctionner.

Gérer les privilèges d’une application en utilisant des commandes SQL

Si le développeur de votre application n’implémente pas d’interface pour l’attribution de privilèges, vous devez gérer les demandes d’accès à l’application à l’aide de commandes SQL.

Afficher des privilèges demandés par une application

Lorsqu’un fournisseur spécifie les privilèges requis par l’application, la demande de privilèges est incluse dans l’application installée. Vous pouvez voir ces privilèges après avoir installé l’application.

Pour voir les privilèges requis par une application, exécutez la commande SHOW PRIVILEGES comme indiqué dans l’exemple suivant :

SHOW PRIVILEGES IN APPLICATION hello_snowflake_app;
Copy

Accorder des privilèges à une Snowflake Native App

Après avoir déterminé les privilèges demandés par une application, le consommateur peut accorder ces privilèges à l’application.

Par exemple, pour accorder le privilège EXECUTE TASK à une application, exécutez la commande GRANT PRIVILEGE comme indiqué dans l’exemple suivant :

GRANT EXECUTE TASK ON ACCOUNT TO APPLICATION hello_snowflake_app;
Copy

Accorder le privilège MANAGE WAREHOUSES à une Snowflake Native App

Le privilège MANAGE WAREHOUSES permet à une application de créer, de modifier et d’utiliser des entrepôts au sein du compte de consommateur. Pour accorder le privilège MANAGE WAREHOUSES à une application, utilisez GRANT comme indiqué dans l’exemple suivant :

GRANT MANAGE WAREHOUSES ON ACCOUNT TO APPLICATION hello_snowflake_app;
Copy

Attribuer le privilège IMPORTED PRIVILEGES sur la base de données SNOWFLAKE

Certaines applications peuvent demander qu’un consommateur accorde le privilège IMPORTED PRIVILEGES sur la base de données SNOWFLAKE de son compte. Ce privilège ne peut être accordé qu’à l’aide de commandes SQL. Elle ne peut pas être accordée en utilisant Snowsight. Si une application requiert ce privilège, le fournisseur doit le communiquer au consommateur, par exemple dans le fichier README de l’application.

Pour accorder le privilège IMPORT à la base de données SNOWFLAKE, exécutez la commande suivante :

GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE TO APPLICATION hello_snowflake_app;
Copy

Note

Le privilège IMPORTED PRIVILEGES permet à l’application d’accéder aux informations relatives à l’utilisation et aux coûts associés au compte du consommateur. Le consommateur doit s’assurer qu’il souhaite partager ces informations avec l’application avant d’accorder ce privilège.

Autoriser manuellement l’accès à des objets

Lorsqu’un fournisseur définit une référence à un objet dans le fichier manifest.yml , cette définition de référence est incluse dans l’application installée. Un consommateur peut créer une référence à un objet dans son compte pour autoriser l’application à accéder à l’objet. Si le fournisseur n’a pas créé d’interface utilisateur pour permettre l’accès aux objets du compte du consommateur, ce dernier peut autoriser l’accès manuellement.

Le consommateur peut créer une référence pour un objet à associer à l’application s’il dispose des privilèges requis sur l’objet. Par exemple, si les privilèges SELECT et INSERT sont requis pour un objet, par exemple une table, le consommateur doit créer la référence en utilisant un rôle qui possède les privilèges SELECT et INSERT sur la table. Pour visualiser les types d’objets et les privilèges spécifiques requis pour chaque objet, voir Afficher les références demandées par une application.

Note

Une référence n’accorde aucun privilège sur l’objet. Si le rôle utilisé pour créer la référence perd ses privilèges sur l’objet, la référence n’est plus valide. Voici ce que le consommateur peut effectuer au choix :

  • Rétablir les privilèges requis pour le rôle qui a créé la référence.

  • Recréer la référence à l’aide d’un rôle disposant des privilèges requis sur l’objet.

Voir les références demandées par une application

Un consommateur peut voir les références demandées par une application en exécutant la commande SHOW REFERENCES comme le montre l’exemple suivant :

SHOW REFERENCES IN APPLICATION hello_snowflake_app;
Copy

Cette commande affiche une liste de toutes les références définies dans l’application. Il affiche également les privilèges que le rôle de consommateur doit avoir sur l’objet pour créer la référence.

Créer la référence et l’associer à l’application

Après avoir consulté les références demandées par l’application, un consommateur peut créer la référence en exécutant la fonction système SYSTEM$REFERENCE comme le montre l’exemple suivant :

SELECT SYSTEM$REFERENCE('table', 'db1.schema1.table1', 'persistent', 'select', 'insert');
Copy

Cette commande crée la référence et renvoie un identificateur pour l’objet. L’identificateur ressemble à l’exemple suivant :

ENT_REF_TABLE_16617302895522_2CDD20F5C047A5B87B2CE36F6837715786AF9F2D

Le consommateur transmet cet identificateur à une procédure stockée de rappel pour associer la référence à l’application.

Note

Le consommateur doit exécuter cette commande pour chaque référence demandée par l’application.

Pour associer une référence à une application, le consommateur doit transmettre l’identificateur renvoyé par l’appel de la fonction système SYSTEM$REFERENCE à une procédure stockée de rappel. Une procédure de rappel est une procédure stockée que le fournisseur crée dans l” Snowflake Native App pour associer une référence à l’application.

Pour utiliser une procédure de rappel, exécutez la commande suivante :

CALL app.config.register_single_reference(
  'consumer_table', 'ADD', 'ENT_REF_TABLE_16617302895522_2CDD20F5C047A5B87B2CE36F6837715786AF9F2D');
Copy

Dans cet exemple, la procédure stockée register_single_reference() associe la référence avec l’identificateur ENT_REF_TABLE_16617302895522_2CDD20F5C047A5B87B2CE36F6837715786AF9F2D à l’application.

Note

Un fournisseur peut inclure différentes procédures de rappel dans une application. Ceux-ci doivent être spécifiés dans le fichier README de l’application.

Créer et associer la référence à l’application en une seule étape

Après avoir consulté les références demandées par l’application, un consommateur peut créer la référence et l’associer à l’application en transmettant la fonction système SYSTEM$REFERENCE en tant qu’argument à une procédure stockée de rappel.

L’exemple suivant illustre la syntaxe permettant de transmettre la fonction système SYSTEM$REFERENCE en tant qu’argument à une procédure stockée de rappel :

CALL app.config.register_single_reference(
 'consumer_table', 'ADD', SYSTEM$REFERENCE('table', 'db1.schema1.table1',
 'PERSISTENT', 'SELECT', 'INSERT'));
Copy

Cet exemple crée la référence et transmet l’identificateur à la fonction de rappel pour associer la référence à l’application.