Vue d’ensemble des spécifications d’application¶
Cette rubrique décrit comment un fournisseur peut configurer une Snowflake Native App pour utiliser les spécifications d’application afin de demander un accès contrôlé de la part des consommateurs. Les spécifications d’application permettent aux consommateurs d’examiner et d’approuver ou de refuser les demandes relatives aux actions suivantes :
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.
Pour accéder à des services externes et partager des données, Snowflake fournit les objets suivants :
- 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.
Lorsque vous utilisez l’octroi automatique de privilèges, une application dispose des privilèges requis pour créer ces objets lors de l’exécution du script d’installation. Cependant, comme ces objets permettent des connexions externes ou le partage de données, les consommateurs doivent approuver ces opérations lors de la configuration de l’application.
L’utilisation de l’octroi automatique de privilèges avec les spécifications d’application présente les avantages suivants :
Les consommateurs n’ont pas à créer manuellement les intégrations, les partages ou les annonces requis par l’application, ni à approuver l’accès à celles-ci à l’aide de références.
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.
Utiliser les spécifications d’application pour obtenir l’approbation des consommateurs¶
Les spécifications d’application vous permettent de spécifier l’accès contrôlé requis par l’application. Une fois l’application installée, le consommateur examine les spécifications d’application et approuve ou rejette chaque demande en fonction de ses besoins. Cela inclut les demandes de connexions externes, les intégrations d’authentification et les autorisations de partage de données.
Pour plus d’informations sur l’utilisation des spécifications d’application pour demander l’accès à des point de terminaison externes, consultez Demander des intégrations d’accès externe (EAIs) avec des spécifications d’application.
Pour plus d’informations sur l’utilisation des spécifications d’application pour demander l’accès à des intégrations OAuth, consultez 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¶
Une définition de spécification d’application contient les propriétés nécessaires pour que l’application puisse effectuer des opérations contrôlées telles que des connexions externes ou un partage de données. Ces propriétés sont présentées au consommateur pour approbation. La définition de la spécification d’application contient un sous-ensemble des métadonnées et des propriétés spécifiques à chaque type d’opération : intégration d’accès externe, intégration de sécurité ou annonce.
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 Définition de la spécification d’application pour une EAI.
Pour plus d’informations sur la définition de la spécification d’application pour les annonces, consultez Créer une spécification d’application pour une annonce.
Numéros de séquence d’une spécification d’application¶
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¶
L’octroi automatique de privilèges garantit que l’application dispose des privilèges nécessaires pour créer des objets tels que des intégrations d’accès externes, des intégrations de sécurité ou des annonces. Toutefois, les consommateurs peuvent choisir de refuser la spécification d’application qui permet des connexions externes ou le partage de données. Lors du développement d’une application, vous devez tenir compte des situations où les spécifications d’application peuvent ne pas être approuvées.
Prenons l’exemple suivant :
Une application peut exiger plusieurs ports réseau pour une intégration d’accès externe, mais le consommateur peut n’en autoriser qu’un seul. L’application doit inclure une logique pour gérer les erreurs qui se produisent si un port réseau n’est pas disponible.
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¶
Dans certains contextes, une application peut avoir besoin de savoir quand le consommateur a approuvé ou refusé une spécification d’application. Par exemple :
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
Cet exemple montre comment ajouter une procédure stockée nommée callbacks.on_spec_update au fichier manifeste. Dans le script d’installation, les fournisseurs peuvent ajouter une procédure stockée comme indiqué dans l’exemple suivant :
CREATE OR REPLACE PROCEDURE callbacks.on_spec_update (
name STRING,
status STRING,
payload STRING)
...
Cet exemple montre la signature d’une procédure stockée appelée callbacks.on_spec_update. Dans le corps de cette procédure, vous incluez le code pour vérifier l’état de la spécification d’application, créer des objets, et effectuer les actions nécessaires.