Autoriser l’accès à un compte consommateur¶
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. Elle décrit également comment permettre à une application d’utiliser des ressources externes et des tables Apache Iceberg™ qu’un fournisseur partage dans l’application.
Privilèges et 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 de l’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
CREATE COMPUTE POOL
BIND SERVICE ENDPOINT
READ SESSION
Certaines applications peuvent également demander le privilège IMPORTED PRIVILEGES sur la base de données SNOWFLAKE. Reportez-vous à Octroi du 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 de l’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.
Gestion des demandes d’accès via 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.
Octroi de 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 :
Connectez-vous à Snowsight.
Dans le menu de navigation, sélectionnez Data Products » Apps.
Sélectionnez l’application.
Sélectionnez l’icône Security dans la barre d’outils.
Sélectionnez l’onglet Privileges.
Les autorisations au niveau du compte demandées par l’application apparaissent sous Account level privileges
Dans la section Account-level privileges sélectionnez Review, puis faites basculer le curseur pour chaque privilège que vous souhaitez accorder.
Sélectionnez Save.
Révocation des privilèges et de l’accès à des objets¶
Pour révoquer des privilèges ou supprimer l’accès à des objets, procédez comme suit :
Connectez-vous à Snowsight.
Dans le menu de navigation, sélectionnez Data Products » Apps.
Sélectionnez l’application.
Sélectionnez l’icône Security dans la barre d’outils.
Sélectionnez l’onglet Privileges.
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.
Gestion des privilèges d’une application via 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.
Voir les 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 globaux requis par une application, exécutez la commande SHOWPRIVILEGES comme indiqué dans l’exemple suivant :
SHOW PRIVILEGES IN APPLICATION hello_snowflake_app;
Octroi de 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;
Octroi du 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;
Octroi du 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;
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.
Activer les tables externes et Apache Iceberg™¶
Le Snowflake Native App Framework permet aux fournisseurs de partager des tables externes et Apache Iceberg™ dans les partages du fournisseur avec les consommateurs de l’application. Cependant, les consommateurs doivent donner l’autorisation à l’application pour accéder à ces tables.
Considérations relatives à la sécurité et aux coûts¶
Lorsqu’ils autorisent une application à accéder à une table externe ou Iceberg, les consommateurs doivent être conscients des points suivants :
Les tables externes et Iceberg peuvent présenter des risques d’exfiltration de données pour le consommateur. Par exemple, si une application expose une vue contenant une table externe, un fournisseur peut être en mesure de déterminer les types de requêtes effectuées par le consommateur en utilisant les journaux d’accès de son fournisseur Cloud.
Les tables externes et Iceberg peuvent entraîner des coûts supplémentaires liés à l’utilisation des sorties et des entrées si le magasin d’objets contenant la table ne se trouve pas dans la même région où l’application est publiée.
Activer les tables externes et Iceberg à l’aide de Snowsight¶
Les fournisseurs peuvent configurer l’application pour afficher une boîte de dialogue à tous les consommateurs afin de permettre à une application d’accéder à des tables externes ou Iceberg.
Pour autoriser une application à accéder à une table externe ou Iceberg :
Connectez-vous à Snowsight.
Dans le menu de navigation, sélectionnez Data Products » Apps.
Sélectionnez l’application.
Sélectionnez l’icône Security dans la barre d’outils.
Sélectionnez l’onglet Privileges.
Sous External data access, sélectionnez Review.
Sélectionnez Enable.
Activer les tables externes et Iceberg à l’aide de SQL¶
Pour activer l’accès aux tables externes et Iceberg en utilisant SQL utilisez la fonction SET_APPLICATION_RESTRICTED_FEATURE_ACCESS du système comme indiqué dans l’exemple suivant :
SELECT SYSTEM$SET_APPLICATION_RESTRICTED_FEATURE_ACCESS(hello_snowflake_app, 'external_data', ‘{"allowed_cloud_providers" : "all"}’);
Cette commande permet à l’application hello_snowflake_app
d’accéder aux tables externes ou Iceberg que l’application utilise.
Pour déterminer si les tables externes et Iceberg ont été activées pour une application, utilisez la fonction LIST_APPLICATION_RESTRICTED_FEATURES du système comme indiqué dans l’exemple suivant :
SYSTEM$LIST_APPLICATION_RESTRICTED_FEATURES('hello_snowflake_app')
Cette fonction système renvoie un objet JSON qui indique si les tables externes et Iceberg sont autorisées pour la hello_snowflake_app
.