Demander le partage de données avec les spécifications d’application¶
Cette rubrique décrit comment configurer les spécifications d’une Snowflake Native App pour demander l’autorisation de partager des données avec des fournisseurs ou des tiers par le biais d’annonces. Cela permet des cas d’utilisation tels que les rapports de conformité, le partage de données télémétriques et le prétraitement des données.
Workflow de la spécification d’application pour le partage de données¶
La configuration d’une application pour partager des données en utilisant des annonces suit ce workflow général :
Les fournisseurs configurent l’octroi automatique de privilèges pour l’application. Cela permet aux consommateurs de donner l’autorisation à une application de créer des partages et des annonces.
Note
Les spécifications d’application exigent que
manifest_version = 2soit défini dans le fichier manifeste.Les fournisseurs ajoutent les privilèges CREATE SHARE et CREATE LISTING au fichier manifeste.
Les fournisseurs ajoutent les instructions SQL au script d’installation pour créer les objets suivants en fonction des besoins :
Le script d’installation crée le partage et l’annonce lors de l’installation ou de la mise à niveau de l’application. La spécification d’application peut être créée lors de la configuration ou de l’exécution par le biais d’une procédure stockée.
Lors de la configuration de l’application, les consommateurs examinent et approuvent les comptes cibles et les paramètres d’exécution automatique de l’annonce. Les paramètres d’exécution automatique ne sont applicables que pour le partage interrégional. Pour plus d’informations sur la façon dont les consommateurs visualisent et approuvent les spécifications d’application, consultez Approuver des connexions à des ressources externes à l’aide de spécifications d’application.
Définition de la spécification d’application pour le partage de données¶
Pour une spécification d’application de type LISTING, la définition de la spécification d’application contient les entrées suivantes :
TARGET_ACCOUNTS: Une liste de comptes cibles avec lesquels partager des données, séparés par des virgules, entre guillemets simples. Chaque compte doit être spécifié au formatOrgName.AccountName; par exemple :'ProviderOrg.ProviderAccount,PartnerOrg.PartnerAccount'.LISTING: L’identificateur de l’objet d’annonce créé par l’application.AUTO_FULFILLMENT_REFRESH_SCHEDULE: En option. La planification d’actualisation pour le partage de données interrégional. Peut être spécifié sous la forme<num> MINUTEouUSING CRON <expression>.
Note
Le nom de l’annonce dans la spécification d’application doit correspondre à une annonce existante créée par l’application. Une fois ce paramètre défini, le nom de l’annonce ne peut plus être modifié.
Spécifier la version du fichier manifeste¶
Pour activer l’octroi automatique de privilèges pour une application, définissez la version au début du fichier manifeste, comme indiqué dans l’exemple suivant :
manifest_version: 2
Créer une annonce externe¶
Pour créer une annonce externe associée au partage, ajoutez la commande CREATE LISTING au script d’installation, comme indiqué dans l’exemple suivant :
CREATE EXTERNAL LISTING compliance_listing SHARE compliance_share AS $$ title: "Compliance Data Share" subtitle: "Regulatory compliance reporting data" description: "Share compliance and audit data with authorized accounts" listing_terms: type: "OFFLINE" $$ PUBLISH = FALSE REVIEW = FALSE;
Note
Les applications ne peuvent attacher que des partages à une annonce, et non des paquets d’application.
Les applications ne peuvent pas ajouter directement des comptes cibles ou une configuration d’exécution automatique à l’annonce.
Le manifeste de l’annonce ne peut inclure que les propriétés suivantes : title, subtitle, description et listing_terms.
Toutes les nouvelles annonces doivent être créées dans un état non publié, avec PUBLISH et REVIEW définis sur FALSE.
Le titre et la description de l’annonce peuvent être personnalisés en fonction des informations du consommateur, ce qui permet aux fournisseurs de distinguer les sources de données.
Créer une spécification d’application pour une annonce¶
Pour créer une spécification d’application pour une annonce, suivez cet exemple :
ALTER APPLICATION SET SPECIFICATION shareback_spec TYPE = LISTING LABEL = 'Compliance Data Sharing' DESCRIPTION = 'Share compliance data with provider for regulatory reporting' TARGET_ACCOUNTS = 'ProviderOrg.ProviderAccount,AuditorOrg.AuditorAccount' LISTING = compliance_listing AUTO_FULFILLMENT_REFRESH_SCHEDULE = '720 MINUTE';Cette commande crée une spécification d’application nommée
shareback_specqui demande l’autorisation de partager des données avec les comptes cibles spécifiés.
Pour le partage interrégional, le paramètre
AUTO_FULFILLMENT_REFRESH_SCHEDULEest nécessaire. Vous pouvez le définir sur l’une des valeurs suivantes :'<num> MINUTE': Nombre de minutes, avec un minimum de 10 minutes,et un maximum de 8 jours ou 11 520 minutes (huit jours)
'USING CRON <expression> <time_zone>': Expression cron avec fuseau horaire
Note
L’application ne doit créer la spécification d’application qu’une fois que l’annonce et les objets de partage existent.
Chaque annonce ne peut avoir qu’une seule spécification d’application associée.
La mise à jour des comptes cibles crée une nouvelle demande en attente d’approbation par le consommateur.
Validation de la configuration de l’annonce¶
Les applications peuvent valider que l’annonce a été correctement configurée après l’approbation en exécutant les commandes suivantes :
-- Check if the app specification is approved:
SHOW APPROVED SPECIFICATIONS IN APPLICATION;
-- Validate the listing configuration:
DESC LISTING compliance_listing;
Workflow de l’approbation par le consommateur¶
L’approbation par le consommateur d’une spécification d’application de l’LISTING déclenche ce workflow :
Snowflake ajoute automatiquement les comptes cibles à l’annonce.
Si elle est spécifiée, Snowflake configure le calendrier d’actualisation de l’exécution automatique.
L’annonce devient visible pour les comptes cibles.
Les données associées à l’annonce peuvent être interrogées à partir des comptes approuvés.
Le rejet par le consommateur d’une spécification d’application de l’LISTING déclenche ce workflow :
L’annonce est dépubliée, et tous les comptes cibles existants sont supprimés de l’annonce.
L’exécution automatique est désactivée.
L’annonce n’est plus visible par les comptes cibles.
Bonnes pratiques pour les spécifications d’application d’LISTING¶
Lorsque vous mettez en œuvre le partage de données via une spécification d’application, tenez compte des bonnes pratiques suivantes :
Intégrité des partages : Snowflake n’empêche pas les consommateurs de modifier les partages créés par une application. Par conséquent, le fournisseur est responsable de la mise en œuvre des mesures de protection de l’intégrité des données partagées sous-jacentes.
Traitement des erreurs : implémentez un traitement correct des erreurs pour les cas où la spécification d’application est refusée ou pas encore approuvée.
Considérations interrégionales : le fournisseur de l’application est responsable de la définition des calendriers d’actualisation qui équilibrent les exigences en matière d’actualisation des données avec les considérations relatives aux coûts. Bien que les coûts d’exécution automatique des annonces soient facturés au consommateur de l’application, le choix du calendrier par le fournisseur doit tenir compte des coûts afin de minimiser les coûts inutiles pour le consommateur de l’application.
Conformité : documentez clairement les données que vous partagez, ainsi que la raison pour laquelle vous les partagez, dans la description de la spécification d’application.
Utiliser des fonctions de rappel avec les spécifications d’application d’LISTING¶
Les applications peuvent utiliser des rappels de cycle de vie pour répondre lorsque les consommateurs approuvent ou refusent les spécifications des annonces en ajoutant le code suivant au fichier manifeste :
lifecycle_callbacks:
specification_action: callbacks.on_spec_update
Dans le script d’installation, ajoutez la procédure stockée de rappel suivante :
CREATE OR REPLACE PROCEDURE callbacks.on_spec_update (
name STRING,
status STRING,
payload STRING)
RETURNS STRING
LANGUAGE SQL
AS
$$
BEGIN
IF (name = 'shareback_spec' AND status = 'APPROVED') THEN
-- Start populating shared tables
CALL populate_compliance_data();
ELSEIF (name = 'shareback_spec' AND status = 'DECLINED') THEN
-- Clean up or notify provider
CALL cleanup_share_data();
END IF;
RETURN 'Processed specification update';
END;
$$;
La procédure permet à l’application de répondre de manière appropriée aux décisions des consommateurs concernant la demande de partage de données de l’application.
Limitations¶
Cette section décrit les limites de l’utilisation des spécifications d’application.
- Audit
Snowflake ne propose pas d’audit intégré pour les données qu’une application partage avec le fournisseur. Si un consommateur a des exigences de conformité ou de réglementation qui incluent une trace d’audit, il doit se mettre directement d’accord avec le fournisseur pour mettre en œuvre ses propres solutions de surveillance distinctes.
- Partage à partir de l’application
Snowflake ne recommande pas le partage de données avec le fournisseur directement à partir de l’application, car l’exécution automatique des annonces n’est actuellement pas prise en charge pour les données partagées de cette manière.