Überblick über App-Spezifikationen

This topic describes how a provider can configure a Snowflake Native App to use app specifications to request controlled access from consumers. App specifications allow consumers to review and approve or decline requests for the following actions:

  • Verbindungen zu externen Endpunkten außerhalb von Snowflake

  • Authentifizierung mit Drittanbieterdiensten

  • Datenfreigabe mit anderen Snowflake-Konten

Typen des kontrollierten Zugriffs für Snowflake Native Apps

Snowflake Native Apps müssen oft mit Ressourcen außerhalb des Snowflake-Kontos von Verbrauchenden interagieren. Diese Interaktionen können das Herstellen von Verbindungen zu externen Diensten, das Authentifizierung bei Drittanbietenden oder die Datenfreigabe mit anderen Snowflake-Konten umfassen.

To access external services and share data, Snowflake provides the following objects:

Integration für externen Zugriff:

Ermöglichen Sie den sicheren Zugriff auf externe Netzwerkendpunkte innerhalb einer benutzerdefinierten Funktion oder einer gespeicherten Prozedur. Integrationen für den externen Zugriff verwenden Netzwerkregeln, um den Zugriff auf bestimmte externe Netzwerkstandorte zu beschränken.

Sicherheitsintegrationen:

Ermöglichen Sie den sicheren Zugriff für Authentifizierungsanbietende von Drittanbietern wie OAuth. Sicherheitsintegrationen bieten eine sichere Authentifizierung und Zugriffssteuerung.

Freigaben und Freigabeangebote:

Erlauben Sie Apps, Daten an Anbietenden oder Snowflake-Konten von Drittanbietenden zurückzugeben. Freigaben enthalten die freizugebenden Datenbankobjekte, und Freigabeangebote bieten den Mechanismus zur Freigabe von Daten über Konten und Regionen hinweg.

When using automated granting of privileges, an app has the required privileges to create these objects when running the setup script. However, because these objects enable external connections or data sharing, consumers must approve these operations when configuring the app.

Die Verwendung der automatisierten Erteilung von Berechtigungen mit App-Spezifikationen hat die folgenden Vorteile:

  • Consumers do not have to manually create integrations, shares, or listings required by the app and approve access to them using references.

  • Anbietende müssen keinen Code schreiben, der während der Installation oder des Upgrades das Vorhandensein der erforderlichen Berechtigungen und Objekte prüft.

  • Verbrauchende haben volle Transparenz und Kontrolle über externe Verbindungen und Anfragen zur Datenfreigabe.

Use app specifications for consumer approval

App specifications allow you to specify what controlled access the app requires. After the consumer installs the app, they review the app specification and approve or decline each request as necessary. This includes requests for external connections, authentication integrations, and data sharing permissions.

Definition von App-Spezifikationen

An app specification definition contains the properties that are required for the app to perform controlled operations such as external connections or data sharing. These properties are displayed to the consumer for approval. The app specification definition contains a subset of the metadata and properties specific to each type of operation: external access integration, security integration, or listing.

Informationen zur Definition der App-Spezifikation für Sicherheitsintegrationen finden Sie unter Definition von App-Spezifikationen für Sicherheitsintegrationen.

Informationen zur Definition der App-Spezifikation für Integrationen für den externen Zugriff finden Sie unter App specification definition for an EAI.

For information about the app specification definition for listings, see Eine App-Spezifikation für ein Freigabeangebot erstellen.

Sequence numbers of an app specification

Die Sequenznummer ähnelt einer Versionsnummer für die App-Spezifikation. Die Sequenznummern steigen automatisch inkrementell an, wenn ein Anbieter die Definition der App-Spezifikation ändert. Die Definition einer App-Spezifikation umfasst Konfigurationsdetails und andere erforderliche Informationen. Felder, die nicht Teil der Definition sind, wie z. B. description, triggern keine Aktualisierung der Sequenznummer.

Sequenznummern ermöglichen Anbietenden und Verbrauchenden, verschiedene Versionen einer App-Spezifikation zu identifizieren. Wenn ein Anbietender zum Beispiel ein neues Konfigurationsdetail zur Definition der App-Spezifikation hinzufügt, wird die Sequenznummer erhöht. Wenn der Verbrauchende die App-Spezifikation anzeigt, kann dieser sehen, dass sich die Sequenznummer geändert hat, und der Verbrauchende kann die aktualisierte App-Spezifikation überprüfen.

Best Practices bei der Verwendung von App-Spezifikationen

Automated granting of privileges ensures that the app has the required privileges to create objects like external access integrations, security integrations, or listings. However, consumers can choose to decline the app specification that enables external connections or data sharing. When developing an app, you must account for situations where app specifications might not be approved.

Betrachten Sie die folgenden Szenarien:

  • An app might request multiple network ports for an external access integration, but the consumer might allow only one. The app should include logic to handle errors that occur if a network port is not available.

  • Eine Anfrage zur Datenfreigabe kann für einige Zielkonten abgelehnt oder nur teilweise genehmigt werden, für andere aber nicht. Die App sollte diese Fälle problemlos bewältigen.

  • Authentifizierungsintegrationen können abgelehnt werden, sodass die App alternative Methoden verwenden muss.

Als Best Practice sollten Sie immer eine angemessene Fehlerbehandlung implementieren und Verbrauchenden klares Feedback darüber geben, welche Features genehmigte Spezifikationen benötigen, um ordnungsgemäß zu funktionieren.

Callback-Funktionen mit App-Spezifikationen verwenden

In some contexts, an app might need to know when the consumer has approved or declined an app specification. For example:

  • Die App muss möglicherweise warten, bis eine Spezifikation für den externen Zugriff genehmigt wurde, bevor sie API-Aufrufe absetzt.

  • Es kann sein, dass mit dem Auffüllen der Daten erst begonnen wird, nachdem eine Spezifikation für ein Freigabeangebot genehmigt wurde.

  • OAuth-Abläufe müssen möglicherweise nach der Genehmigung der Sicherheitsintegration initialisiert werden.

Für diese Situation bietet Snowflake Native App Framework einen Mechanismus, mit dem Anbieter eine gespeicherte Callback-Prozedur definieren können, die ausgeführt wird, wenn der Verbraucher eine App-Spezifikation genehmigt oder ablehnt.

Anbieter können der Manifest-Datei eine gespeicherte Prozedur hinzufügen, wie im folgenden Beispiel gezeigt:

lifecycle_callbacks:
  specification_action: callbacks.on_spec_update
Copy

This example shows how to add a stored procedure named callbacks.on_spec_update to the manifest file. In the setup script, providers can add a stored procedure as shown in the following example:

CREATE OR REPLACE PROCEDURE callbacks.on_spec_update (
  name STRING,
  status STRING,
  payload STRING)
  ...
Copy

This example shows the signature of a stored procedure called callbacks.on_spec_update. You include the code in the body of this procedure to check the status of the app specification, create objects, and perform actions as required.