Vue d’ensemble des spécifications d’application¶
This topic describes how a provider can configure a Snowflake Native App to use app specifications to request controlled access from consumers. App specifications allow consumers to review and approve or decline requests for the following actions:
Connexions à des points de terminaison externes en dehors de Snowflake
Authentification avec des services tiers
Partage de données avec d‘autres comptes Snowflake
Types d’accès contrôlé pour les Snowflake Native Apps¶
Les Snowflake Native Apps doivent souvent interagir avec des ressources au-delà du compte Snowflake du consommateur. Ces interactions peuvent inclure la connexion à des services externes, l’authentification auprès de fournisseurs tiers, ou le partage de données avec d’autres comptes Snowflake.
To access external services and share data, Snowflake provides the following objects:
- Intégrations d’accès externes:
Autorisez un accès sécurisé à des points de terminaison réseau externes dans le cadre d’une fonction définie par l’utilisateur ou d’une procédure stockée. Les intégrations d’accès externes utilisent des règles de réseau pour restreindre l’accès à des emplacements de réseau externes spécifiques.
- Intégrations de sécurité:
Autoriser un accès sécurisé à des fournisseurs d’authentification tiers tels que OAuth. Les intégrations de sécurité fournissent une authentification et un contrôle d’accès sécurisés.
- Partages et annonces:
Autorisez les applications à partager des données avec des fournisseurs ou des comptes Snowflake tiers. Les partages contiennent des objets de base de données à partager, et les annonces fournissent le mécanisme permettant de partager des données entre différents comptes et différentes régions.
When using automated granting of privileges, an app has the required privileges to create these objects when running the setup script. However, because these objects enable external connections or data sharing, consumers must approve these operations when configuring the app.
L’utilisation de l’octroi automatique de privilèges avec les spécifications d’application présente les avantages suivants :
Consumers do not have to manually create integrations, shares, or listings required by the app and approve access to them using references.
Les fournisseurs n’ont pas à écrire de code qui vérifie l’existence des privilèges et des objets requis lors de l’installation ou de la mise à niveau.
Les consommateurs ont une visibilité et un contrôle clairs sur les connexions externes et les demandes de partage de données.
Use app specifications for consumer approval¶
App specifications allow you to specify what controlled access the app requires. After the consumer installs the app, they review the app specification and approve or decline each request as necessary. This includes requests for external connections, authentication integrations, and data sharing permissions.
For information about using app specifications to request access to external endpoint access, see Demander des intégrations d’accès externe (EAIs) avec des spécifications d’application.
For information about using app specifications to request access to OAuth integrations, see Demander des intégrations de sécurité avec des spécifications d’application.
Pour plus d’informations sur l’utilisation des spécifications d’application pour partager des données via des annonces, consultez Demander le partage de données avec les spécifications d’application.
Définition de la spécification d’application¶
An app specification definition contains the properties that are required for the app to perform controlled operations such as external connections or data sharing. These properties are displayed to the consumer for approval. The app specification definition contains a subset of the metadata and properties specific to each type of operation: external access integration, security integration, or listing.
Pour plus d’informations sur la définition de la spécification d’application pour les intégrations de sécurité, consultez Définition de la spécification d’application pour les intégrations de sécurité.
Pour plus d’informations sur la définition de la spécification d’application pour les intégrations d’accès externes, consultez App specification definition for an EAI.
For information about the app specification definition for listings, see Créer une spécification d’application pour une annonce.
Sequence numbers of an app specification¶
Le numéro de séquence est similaire à un numéro de version pour la spécification d’application. Les numéros de séquence sont automatiquement incrémentés lorsqu’un fournisseur modifie la définition de la spécification d’application. La définition d’une spécification d’application comprend des détails de configuration et d’autres informations requises. Les champs qui ne font pas partie de la définition, comme description, ne déclenchent pas de mise à jour du numéro de séquence.
Les numéros de séquence permettent aux fournisseurs et aux consommateurs d’identifier les différentes versions d’une spécification d’application. Par exemple, si un fournisseur ajoute un nouveau détail de configuration à la définition de la spécification d’application, le numéro de séquence est incrémenté. Lorsque le consommateur voit la spécification d’application, il peut voir que le numéro de séquence a changé, et il peut consulter la spécification d’application mise à jour.
Bonnes pratiques pour l’utilisation des spécifications d’application¶
Automated granting of privileges ensures that the app has the required privileges to create objects like external access integrations, security integrations, or listings. However, consumers can choose to decline the app specification that enables external connections or data sharing. When developing an app, you must account for situations where app specifications might not be approved.
Prenons l’exemple suivant :
An app might request multiple network ports for an external access integration, but the consumer might allow only one. The app should include logic to handle errors that occur if a network port is not available.
Une demande de partage de données peut être refusée ou seulement partiellement approuvée pour certains comptes cibles, mais pas pour d’autres. L’application doit traiter ces cas avec soin.
Les intégrations d’authentification peuvent être rejetées, ce qui oblige l’application à utiliser d’autres méthodes.
Il est recommandé de toujours inclure un traitement approprié des erreurs et de fournir des informations claires aux consommateurs sur les fonctionnalités qui nécessitent des spécifications approuvées pour fonctionner.
Utiliser des fonctions de rappel avec des spécifications d’application¶
In some contexts, an app might need to know when the consumer has approved or declined an app specification. For example:
L’application peut avoir besoin d’attendre qu’une spécification d’accès externe soit approuvée avant d’effectuer des appels d’API.
Le remplissage des données peut nécessiter l’approbation préalable d’une spécification d’annonce.
Les flux d’OAuth peuvent avoir besoin d’être initialisés après l’approbation de l’intégration de sécurité.
Pour gérer cette situation, le Snowflake Native App Framework fournit un mécanisme qui permet au fournisseur de définir une procédure stockée de rappel qui s’exécute lorsque le consommateur approuve ou refuse une spécification d’application.
Les fournisseurs peuvent ajouter une procédure stockée au fichier manifeste comme indiqué dans l’exemple suivant :
lifecycle_callbacks:
specification_action: callbacks.on_spec_update
This example shows how to add a stored procedure named callbacks.on_spec_update to the manifest
file. In the setup script, providers can add a stored procedure as shown in
the following example:
CREATE OR REPLACE PROCEDURE callbacks.on_spec_update (
name STRING,
status STRING,
payload STRING)
...
This example shows the signature of a stored procedure called callbacks.on_spec_update.
You include the code in the body of this procedure to check the status of the app specification, create objects, and perform actions as required.