Utiliser les spécifications d’application pour demander un accès contrôlé¶
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
Connexions entre les applications pour la communication inter-applications
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.
- Connexions:
Autorisez les applications à communiquer avec d’autres applications installées dans le même compte de consommateur. Les spécifications d’application
CONNECTIONdéfinissent l’application serveur et les rôles d’application auxquels l’application cliente doit se connecter. Pour plus d’informations, voir Communication inter-applications.
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. Lorsque le consommateur installe l’application, il examine la spécification d’application et approuve ou refuse chaque requête si nécessaire. Cela inclut les requêtes pour les 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 l’accès externe.
Pour plus d’informations sur l’utilisation des spécifications d’application pour demander l’accès à des intégrations OAuth, consultez Demande de connexion OAuth.
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 via des annonces.
Pour plus d’informations sur l’utilisation des spécifications d’application pour la communication inter-applications, consultez Communication inter-applications.
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é, annonce ou connexion.
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.
Pour plus d’informations sur la définition de la spécification d’application pour les connexions de communication inter-applications, consultez Communication inter-applications.
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 :
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 :
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.
Utilisation du SDK d’autorisations avec les spécifications d’application¶
Si votre application comprend une interface Streamlit, vous pouvez utiliser les Python Permission SDK pour inviter les consommateurs à examiner et à approuver les spécifications d’application directement dans l’UI de l’application. Le SDK fournit les fonctions suivantes pour travailler avec les spécifications d’application :
- get_application_specifications()
Renvoie toutes les spécifications d’application définies pour l’application. Ceci est équivalent à l’exécution de SHOW SPECIFICATIONS.
- request_application_specification_review()
Ouvre une boîte de dialogue dans l’application Streamlit qui permet au consommateur d’examiner la spécification d’application, puis de l’approuver, de la refuser ou de n’effectuer aucune action.
Pour plus d’informations, consultez la référence du SDK d’autorisations.