Überblick über App-Spezifikationen¶
In diesem Thema wird beschrieben, wie ein Anbietender eine Snowflake Native App so konfigurieren kann, dass diese App-Spezifikationen verwendet, um von Verbrauchenden kontrollierten Zugriff anzufordern. Mit App-Spezifikationen können Verbrauchende Anfragen für die folgenden Aktionen überprüfen, genehmigen oder ablehnen:
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.
Um auf externe Dienste zuzugreifen und Daten freizugeben, bietet Snowflake die folgenden Objekte:
- 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.
Bei Verwendung von Automatisiertes Gewähren von Berechtigungen verfügt eine App über die erforderlichen Berechtigungen, um diese Objekte beim Ausführen des Setup-Skripts zu erstellen. Da diese Objekte jedoch externe Verbindungen oder die Datenfreigabe ermöglichen, müssen Verbrauchende diese Operationen bei der Konfiguration der App genehmigen.
Die Verwendung der automatisierten Erteilung von Berechtigungen mit App-Spezifikationen hat die folgenden Vorteile:
Verbrauchende müssen nicht manuell Integrationen, Freigaben oder Freigabeangebote erstellen, die von der App benötigt werden, und den Zugriff darauf mithilfe von Referenzen genehmigen.
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.
Verwenden von App-Spezifikationen für die Genehmigung durch den Verbrauchenden¶
Mit App-Spezifikationen können Sie festlegen, welchen kontrollierten Zugriff die App benötigt. Nachdem Verbrauchende die App installiert haben, überprüfen sie die App-Spezifikation und genehmigen jede Anfrage, je nach Bedarf. Dazu gehören Anfragen nach externen Verbindungen, Authentifizierungsintegrationen und Berechtigungen für Datenfreigaben.
Informationen zur Verwendung von App-Spezifikationen für die Anforderung des Zugriffs auf externe Endpunkte finden Sie unter Integrationen für den externen Zugriff (EAIs) mit App-Spezifikationen anfordern.
Informationen zur Verwendung von App-Spezifikationen für die Anforderung des Zugriffs auf OAuth-Integrationen finden Sie unter Sicherheitsintegrationen mit App-Spezifikationen anfordern.
Informationen zur Verwendung von App-Spezifikationen für die Freigabe von Daten über Freigabeangebote finden Sie unter Datenfreigabe mit App-Spezifikationen anfordern.
Definition von App-Spezifikationen¶
Eine Definition der App-Spezifikation enthält die Eigenschaften, die erforderlich sind, damit die App kontrollierte Operationen wie externe Verbindungen oder die Datenfreigabe durchführen kann. Diese Eigenschaften werden dem Verbrauchenden zur Genehmigung angezeigt. Die Definition der App-Spezifikation enthält eine Teilmenge der Metadaten und Eigenschaften, die für jeden Typ von Operation spezifisch sind: Integration für den externen Zugriff, Sicherheitsintegration oder Freigabeangebot.
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 Definition von App-Spezifikationen für eine EAI.
Informationen zur Definition der App-Spezifikation für Freigabeangebote finden Sie unter Eine App-Spezifikation für ein Freigabeangebot erstellen.
Sequenznummern einer App-Spezifikation¶
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¶
Automatisiertes Gewähren von Berechtigungen stellt sicher, dass die App über die erforderlichen Berechtigungen verfügt, um Objekte, wie Integrationen für den externen Zugriff, Sicherheitsintegrationen oder Freigabeangebote, zu erstellen. Verbrauchende können jedoch die App-Spezifikation, die externe Verbindungen oder die Datenfreigabe ermöglicht, ablehnen. Bei der Entwicklung einer App müssen Anbietende Situationen berücksichtigen, in denen App-Spezifikationen möglicherweise nicht genehmigt werden.
Betrachten Sie die folgenden Szenarien:
Beispielsweise könnte eine App mehrerer Netzwerkports für eine Integration für den externen Zugriff anfordern, der Verbrauchende jedoch nur einen zulassen. Die App sollte Logik zur Behandlung von Fehlern enthalten, die auftreten, wenn ein Netzwerkport nicht verfügbar ist.
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 manchen Fällen muss eine App möglicherweise wissen, wann der Verbraucher eine App-Spezifikation genehmigt oder abgelehnt hat. Beispiel:
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
Dieses Beispiel zeigt, wie eine gespeicherte Prozedur namens callbacks.on_spec_update zur Manifest-Datei hinzugefügt wird. Anbietenden können im Setup-Skript eine gespeicherte Prozedur hinzufügen, wie im folgenden Beispiel gezeigt:
CREATE OR REPLACE PROCEDURE callbacks.on_spec_update (
name STRING,
status STRING,
payload STRING)
...
Dieses Beispiel zeigt die Signatur einer gespeicherten Prozedur namens callbacks.on_spec_update. Sie fügen den Code in den Text dieser Prozedur ein, um den Status der App-Spezifikation zu überprüfen, Objekte zu erstellen und bei Bedarf Aktionen auszuführen.