Datenfreigabe mit App-Spezifikationen anfordern

In diesem Thema wird beschrieben, wie Sie die Spezifikationen einer Snowflake Native App konfigurieren, um die Berechtigung anzufragen, Daten mit Anbietenden oder Dritten über Freigabeangebote freizugeben. Dies ermöglicht Anwendungsfälle wie Compliance-Berichterstattung, Telemetriefreigabe und Datenvorverarbeitung.

Daten aus einer App für Anbietende oder Dritte freigeben

Einige Snowflake Native Apps müssen Daten für verschiedene Geschäftszwecke an den Anbietenden oder an Snowflake-Konten von Drittanbietenden weitergeben. Zu den wichtigsten Anwendungsfällen gehören die folgenden:

  • Compliance-Berichterstattung: Freigeben von Überwachungsprotokollen oder Compliance-Daten für behördliche Konten

  • Telemetrie und Analysen: Zurücksenden von Nutzungsmetriken an den Anbietenden zur Produktverbesserung

  • Datenvorverarbeitung: Freigeben von transformierten Daten für Partnerkonten

  • Support und Problembehandlung: Bereitstellen von Diagnosedaten für Support-Teams

Um die Datenfreigabe von einer App aus zu ermöglichen, muss die App sowohl Freigaben als auch Freigabeangebote bereitstellen. Eine Freigabe enthält die freizugebenden Datenbankobjekte, und ein Freigabeangebot bietet den Mechanismus zur Freigabe von Daten über Konten und Regionen hinweg.

Weitere Informationen zur Datenfreigabe finden Sie unter Über Secure Data Sharing.

Um eine App für die Freigabe von Daten mithilfe von Freigabeangeboten zu konfigurieren, gehen Sie wie folgt vor:

  1. Verwenden Sie Automatisiertes Gewähren von Berechtigungen, um Berechtigungen vom Verbrauchenden anzufordern, um Freigaben und Freigabeangebote zu erstellen.

  2. Erstellen Sie eine Freigabe, und weisen Sie ihr Datenbankobjekte zu.

  3. Erstellen Sie ein externes Freigabeangebot, das der Freigabe zugeordnet ist.

  4. Verwenden Sie Anwendungsspezifikationen, um vom Verbrauchenden die Berechtigung anzufordern, Daten für bestimmte Zielkonten freizugeben.

Bemerkung

Im Gegensatz zu anderen App-Spezifikationstypen ist jede LISTING-Spezifikation mit genau einem Freigabeangebotsobjekt verbunden. Eine App kann nicht mehrere App-Spezifikationen für dasselbe Freigabeangebot erstellen.

Workflow zur App-Spezifikation für die Freigabe von Daten

Die Konfiguration einer App für die Freigabe von Daten mithilfe von Freigabeangeboten erfolgt in diesem allgemeinen Workflow:

  1. Anbieter konfigurieren Automatisiertes Gewähren von Berechtigungen für die App. Damit können Verbrauchende einer App die Berechtigung erteilen, Freigaben und Freigabeangebote zu erstellen.

    Bemerkung

    App-Spezifikationen erfordern, dass manifest_version = 2 in der Manifest-Datei festgelegt wird.

  2. Anbietende fügen die Berechtigungen CREATE SHARE und CREATE LISTING für die Manifest-Datei hinzu.

  3. Anbieter fügen dem Setup-Skript SQL-Anweisungen hinzu, um die folgenden Objekte nach Bedarf zu erstellen:

    Das Setup-Skript erstellt die Freigabe und das Freigabeangebot, wenn die App installiert oder aktualisiert wird. Die App-Spezifikation kann während der Einrichtung oder zur Laufzeit über eine gespeicherte Prozedur erstellt werden.

  4. Beim Konfigurieren der App überprüfen und genehmigen die Verbrauchenden die Zielkonten und die Einstellungen für die automatische Ausführung des Freigabeangebots. Die Einstellungen für die automatische Ausführung gelten nur für die regionsübergreifende Freigabe. Weitere Informationen darüber, wie Verbrauchende App-Spezifikationen anzeigen und genehmigen, finden Sie unter Verbindungen zu externen Ressourcen mit App-Spezifikationen genehmigen.

Definition der App-Spezifikation für die Freigabe von Daten

Für eine App-Spezifikation des Typs LISTING enthält die Definition der App-Spezifikation die folgenden Einträge:

  • TARGET_ACCOUNTS: Eine durch Kommas getrennte Liste von Zielkonten, für die Daten freigegeben werden sollen, in einfache Anführungszeichen gesetzt. Jedes Konto muss im Format OrgName.AccountName angegeben werden; zum Beispiel: 'ProviderOrg.ProviderAccount,PartnerOrg.PartnerAccount'.

  • LISTING: Der Bezeichner des von der App erstellten Freigabeangebotsobjekts.

  • AUTO_FULFILLMENT_REFRESH_SCHEDULE: Optional. Der Aktualisierungszeitplan für die regionenübergreifende Datenfreigabe. Kann als <num> MINUTE oder USING CRON <expression> angegeben werden.

Bemerkung

Der Name des Freigabeangebots in der App-Spezifikation muss mit einem bestehenden Freigabeangebot übereinstimmen, das von der App erstellt wurde. Nachdem dies eingestellt ist, kann der Name des Freigabeangebots nicht mehr geändert werden.

Die Version der Manifest-Datei festlegen

Um das automatisierte Gewähren von Berechtigungen für eine App zu aktivieren, legen Sie die Version am Anfang der Manifest-Datei fest, wie im folgenden Beispiel gezeigt:

manifest_version: 2
Copy

Fügen Sie die Berechtigungen CREATE SHARE und CREATE LISTING der Manifest-Datei hinzu.

Die Berechtigungen CREATE SHARE und CREATE LISTING ermöglichen es der App, während der Installation oder des Upgrades Freigaben und Freigabeangebote zu erstellen.

  1. Um eine App so zu konfigurieren, dass sie diese Berechtigungen anfordert, fügen Sie den folgenden Code in den Abschnitt privileges der Manifest-Datei ein:

    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

Wenn Sie in der Manifest-Datei für „manifest_version“ „2“ angeben, weist Snowflake automatisch die Berechtigungen CREATE SHARE und CREATE LISTING für die App während der Installation oder des Upgrades zu.

Eine Freigabe erstellen und dieser Objekte zuweisen

  1. Um eine Freigabe für die Datenfreigabe zu erstellen, fügen Sie dem Setup-Skript den Befehl CREATE SHARE hinzu, wie im folgenden Beispiel gezeigt:

CREATE SHARE compliance_share;
Copy
  1. Weisen Sie die Datenbankobjekte zu, die Sie freigeben möchten, wie im folgenden Beispiel gezeigt:

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

Bemerkung

Apps können nur Daten aus den folgenden Quellen freigeben:

  • Von der App erstellte Datenbanken: Die App muss der Eigentümer dieser Datenbanken sein.

Apps können Zielkonten nicht direkt zur Freigabe hinzufügen. Dies wird über die Spezifikation der App gesteuert.

Ein externes Freigabeangebot erstellen

  1. Um ein externes Freigabeangebot zu erstellen, das der Freigabe angehängt ist, fügen Sie dem Setup-Skript den Befehl CREATE LISTING hinzu, wie im folgenden Beispiel gezeigt:

    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

Bemerkung

  • Apps können einem Freigabeangebot nur Freigaben, aber keine Anwendungspakete hinzufügen.

  • Apps können Zielkonten oder die Konfiguration für die automatische Auftragsausführung nicht direkt zum Freigabeangebot hinzufügen.

  • Das Freigabeangebots-Manifest kann nur die folgenden Eigenschaften enthalten: Titel, Untertitel, Beschreibung und Bedingungen für das Freigabeangebot.

  • Alle neuen Freigabeangebote müssen in einem unveröffentlichten Zustand erstellt werden, die sowohl PUBLISH als auch REVIEW enthalten und auf FALSE festgelegt sind.

  • Titel und Beschreibung des Freigabeangebots können auf der Grundlage der Informationen des Verbrauchenden angepasst werden, sodass Anbietende Datenquellen unterscheiden können.

Eine App-Spezifikation für ein Freigabeangebot erstellen

  1. Um eine App-Spezifikation für ein Freigabeangebot zu erstellen, folgen Sie diesem Beispiel:

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

Dieser Befehl erstellt eine App-Spezifikation mit dem Namen shareback_spec, die die Berechtigung anfordert, Daten für die angegebenen Zielkonten freizugeben.

  1. Für die regionenübergreifende Freigabe ist der Parameter AUTO_FULFILLMENT_REFRESH_SCHEDULE erforderlich. Sie können ihn auf einen der folgenden Werte einstellen:

    • '<num> MINUTE': Anzahl der Minuten, mit einem Minimum von 10 Minuten,

    • und maximal 8 Tage oder 11.520 Minuten (acht Tage)

    • 'USING CRON <expression> <time_zone>': Cron-Ausdruck mit Zeitzone

Bemerkung

  • Die App sollte die App-Spezifikation erst erstellen, nachdem das Freigabeangebot und die Freigabeobjekte vorhanden sind.

  • Jedes Freigabeangebot kann nur eine zugeordnete App-Spezifikation haben.

  • Durch das Aktualisieren der Zielkonten wird eine neue ausstehende Anfrage zur Genehmigung durch den Verbraucher erstellt.

Validieren der Konfiguration des Freigabeangebots

Apps können überprüfen, ob das Freigabeangebot nach der Genehmigung korrekt konfiguriert wurde, indem die folgenden Befehle ausgeführt werden:

-- Check if the app specification is approved:
SHOW APPROVED SPECIFICATIONS IN APPLICATION;

-- Validate the listing configuration:
DESC LISTING compliance_listing;
Copy

Workflow für Verbrauchergenehmigungen

Die Genehmigung einer LISTING-App-Spezifikation durch den Verbraucher löst diesen Workflow aus:

  • Snowflake fügt die Zielkonten automatisch zum Freigabeangebot hinzu.

  • Falls angegeben, konfiguriert Snowflake den Aktualisierungszeitplan für die automatische Auftragsausführung.

  • Das Freigabeangebot wird für die Zielkonten sichtbar.

  • Daten, die mit dem Freigabeangebot verbunden sind, können über die genehmigten Konten abgefragt werden.

Die Ablehnung einer LISTING-App-Spezifikation durch den Verbraucher löst diesen Workflow aus:

  • Die Veröffentlichung des Freigabeangebots wird zurückgezogen, und alle vorhandenen Zielkonten werden aus dem Freigabeangebot entfernt.

  • Die automatische Ausführung ist deaktiviert.

  • Das Freigabeangebot ist für kein Zielkonto mehr sichtbar.

Best Practices bei LISTING-App-Spezifikationen

Beachten Sie bei der Implementierung der Datenfreigabe über App-Spezifikationen die folgenden Best Practices:

  • Freigabeintegrität: Snowflake verhindert nicht, dass Verbraucher Freigaben ändern können, die von einer Anwendung erstellt wurden. Daher ist der Anbietende dafür verantwortlich, Maßnahmen zum Schutz der Integrität der zugrunde liegenden freigegebenen Daten zu implementieren.

  • Fehlerbehandlung: Implementieren Sie eine korrekte Fehlerbehandlung für Fälle, in denen die App-Spezifikation abgelehnt wurde oder noch nicht genehmigt wurde.

  • Hinweise zu regionenübergreifenden Informationen: Der Anbietende der App ist dafür verantwortlich, Aktualisierungszeitpläne festzulegen, die die Anforderungen an die Datenaktualität mit Kostenaspekten in Einklang bringen. Obwohl die Kosten für die automatische Ausführung von Freigabeangeboten dem Verbraucher der App in Rechnung gestellt werden, sollte die Wahl des Zeitplans durch den Anbietende kostenkritisch sein, um unnötige Kosten für den Verbraucher der App zu minimieren.

  • Konformität: Dokumentieren Sie in der Beschreibung der App-Spezifikation deutlich, welche Daten Sie freigeben und warum Sie diese freigeben.

Callback-Funktionen mit LISTING-App-Spezifikationen verwenden

Apps können Lebenszyklus-Callbacks verwenden, um zu reagieren, wenn Verbraucher die Spezifikationen des Freigabeangebots genehmigen oder ablehnen, indem sie den folgenden Code zur Manifest-Datei hinzufügen:

lifecycle_callbacks:
  specification_action: callbacks.on_spec_update
Copy

Fügen Sie dem Setup-Skript die folgende gespeicherte Callback-Prozedur hinzu:

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

Die Prozedur ermöglicht es der App, angemessen auf Entscheidungen von Verbrauchern bezüglich der Datenfreigabeanfrage der App zu reagieren.

Einschränkungen

Dieser Abschnitt beschreibt die Einschränkungen bei der Verwendung von App-Spezifikationen.

Überwachung

Snowflake bietet keine integrierte Prüfung für Daten, die eine App an den Anbietenden zurückgibt. Wenn Verbrauchende Compliance- oder gesetzliche Anforderungen haben, die einen Prüfpfad enthalten, müssen sich die Verbrauchenden direkt mit dem Anbietenden absprechen, um eigene Überwachungslösungen zu implementieren.

Freigeben innerhalb der Anwendung

Snowflake empfiehlt, die Datenfreigabe mit dem Anbietenden nicht direkt aus der Anwendung heraus freizugeben, da die automatische Ausführung von Freigabeangeboten derzeit nicht für Daten unterstützt wird, die auf diese Weise freigegeben werden.