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.

Partager les données d’une application avec des fournisseurs ou des tiers

Certaines Snowflake Native Apps doivent partager les données avec le fournisseur ou avec des comptes Snowflake tiers à des fins commerciales. Les cas d’utilisation courants sont les suivants :

  • Rapports de conformité : partage des journaux d’audit ou des données de conformité avec les comptes réglementaires

  • Données télémétriques et analyses : renvoi des métriques d’utilisation au fournisseur pour l’amélioration des produits

  • Prétraitement des données : partage des données transformées avec les comptes partenaires

  • Assistance et dépannage : fourniture des données de diagnostic aux équipes d’assistance

Pour activer le partage de données à partir d’une application, celle-ci doit fournir à la fois des partages et des annonces. Un partage contient les objets de base de données à partager, et une annonce fournit le mécanisme permettant de partager des données entre différents comptes et différentes régions.

Pour plus d’informations sur les partages de données, consultez À propos de Secure Data Sharing.

Pour configurer une application pour partager des données à l’aide d’annonces, suivez les étapes suivantes :

  1. Utilisez l’octroi automatique de privilèges pour demander des privilèges au consommateur pour créer des partages et des annonces.

  2. Créez un partage et accordez-lui des objets de base de données.

  3. Créez une annonce externe associée au partage.

  4. Pour demander l’autorisation au consommateur de partager des données avec des comptes cibles spécifiques, utilisez les spécifications d’application.

Note

Contrairement à d’autres types de spécifications d’application, chaque spécification d’LISTING est associée à un seul objet d’annonce. Une application ne peut pas créer plusieurs spécifications d’application pour la même annonce.

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 :

  1. 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 = 2 soit défini dans le fichier manifeste.

  2. Les fournisseurs ajoutent les privilèges CREATE SHARE et CREATE LISTING au fichier manifeste.

  3. 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.

  4. 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 format OrgName.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> MINUTE ou USING 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
Copy

Ajouter les privilèges CREATE SHARE et CREATE LISTING au fichier manifeste

Les privilèges CREATE SHARE et CREATE LISTING permettent à l’application de créer des partages et des annonces lors de l’installation ou de la mise à niveau.

  1. Pour configurer une application afin qu’elle exige ces privilèges, ajoutez le code suivant à la section privileges du fichier manifeste :

    manifest_version: 2
    ...
    privileges:
      - CREATE SHARE:
          description: "Create a share for sharing compliance data with provider"
      - CREATE LISTING:
          description: "Create a listing for cross-region sharing of compliance data"
    ...
    
    Copy

Si vous spécifiez manifest_version sur 2 dans le fichier manifeste, Snowflake accorde automatiquement les privilèges CREATE SHARE et CREATE LISTING à l’application lors de l’installation ou de la mise à niveau.

Créer un partage et lui accorder des objets

  1. Pour créer un partage pour le partage de données, ajoutez la commande CREATE SHARE au script d’installation, comme indiqué dans l’exemple suivant :

CREATE SHARE compliance_share;
Copy
  1. Accordez les objets de base de données que vous souhaitez partager, comme indiqué dans l’exemple suivant :

-- Grant usage on a table in the app's database:
GRANT USAGE ON TABLE app_schema.compliance_data TO SHARE compliance_share;

-- If sharing from a database created by the app, do the following:
GRANT USAGE ON DATABASE app_created_db TO SHARE compliance_share;
GRANT USAGE ON SCHEMA app_created_db.reporting TO SHARE compliance_share;
GRANT SELECT ON TABLE app_created_db.reporting.metrics TO SHARE compliance_share;
Copy

Note

Les applications peuvent uniquement partager des données des sources suivantes :

  • Bases de données créées par l’application : L’application doit être le propriétaire de ces bases de données.

Les applications ne peuvent pas ajouter directement des comptes cibles au partage. Cela est contrôlé par la spécification d’application.

Créer une annonce externe

  1. 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;
    
    Copy

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

  1. 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';
Copy

Cette commande crée une spécification d’application nommée shareback_spec qui demande l’autorisation de partager des données avec les comptes cibles spécifiés.

  1. Pour le partage interrégional, le paramètre AUTO_FULFILLMENT_REFRESH_SCHEDULE est 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;
Copy

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
Copy

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;
$$;
Copy

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.