Zugriff auf ein Konto für Verbraucher zulassen

Unter diesem Thema wird beschrieben, wie ein Verbraucher einer Snowflake Native App erlauben kann, Objekte in seinem Konto zu erstellen und darauf zuzugreifen. Dazu gehören das Erteilen der von der App angeforderten Berechtigungen und das Gewähren des Zugriffs auf vorhandene Objekte durch die Verwendung von Referenzen. Außerdem wird beschrieben, wie Sie einer App erlauben, externe und Apache Iceberg™-Tabellen zu verwenden, die ein Anbieter in der App freigibt.

Von einer App angefragte Berechtigungen und Referenzen

In einer einfachen Snowflake Native App werden alle von der Anwendung geforderten Objekte innerhalb des Anwendungsobjekts erstellt, wenn das Setup-Skript während der Installation ausgeführt wird. Alle von der Anwendung geforderten Objekte werden in der installierten Anwendung erstellt und in ihr aufgerufen. Der Verbraucher muss in seinem Konto keine Aktionen ausführen.

Einige Apps können den Verbraucher jedoch auffordern, die folgenden Typen von Aktionen in seinem Konto auszuführen:

  • Erstellen einer Datenbank oder eines Warehouses

  • Ausführen von Aufgaben (Tasks)

  • Zugriff auf vorhandene Objekte, z. B. eine Tabelle.

Es gibt zwei Typen von Zugriff, die eine Snowflake Native App anfordern kann:

  • Berechtigungen, die es der App erlauben, bestimmte Operationen auf Kontoebene auszuführen. Eine App kann die folgenden globalen Berechtigungen anfordern:

    • EXECUTE TASK

    • EXECUTE MANAGED TASK

    • CREATE WAREHOUSE

    • MANAGE WAREHOUSES

    • CREATE DATABASE

    • CREATE COMPUTE POOL

    • BIND SERVICE ENDPOINT

    • READ SESSION

    Einige Apps können auch die IMPORTED PRIVILEGES-Berechtigung für die SNOWFLAKE-Datenbank anfordern. Weitere Informationen dazu finden Sie unter Berechtigung IMPORTED PRIVILEGES für die SNOWFLAKE-Datenbank erteilen.

  • Referenzen, die es der Anwendung ermöglichen, auf Objekte zuzugreifen, die bereits im Konto des Verbrauchers existieren und sich außerhalb des Anwendungsobjekts befinden. Ein Anbieter definiert die von der App benötigten Referenzen in der Datei manifest.yml.

    Nach Installation der App kann vom Verbraucher der Zugriff auf ein Objekt autorisiert werden, indem eine Referenz erstellt wird, die das Objekt mit der App verknüpft.

    Eine App kann den Zugriff auf die folgenden Typen von Objekten und die entsprechenden Berechtigungen anfordern:

    Objekttyp

    Zulässige Berechtigungen

    TABLE

    SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES

    VIEW

    SELECT, REFERENCES

    EXTERNAL TABLE

    SELECT, REFERENCES

    FUNCTION

    USAGE

    PROCEDURE

    USAGE

    WAREHOUSE

    MODIFY, MONITOR, USAGE, OPERATE

    API INTEGRATION

    USAGE

Ein Verbraucher kann diese Anforderungen über Snowsight genehmigen oder indem SQL-Befehle ausgeführt werden, wie in den folgenden Abschnitten beschrieben.

Bemerkung

Wenn Sie der App nicht die angeforderten Berechtigungen erteilen oder Verweise auf das angeforderte Objekt zuordnen, funktionieren Teile der App möglicherweise nicht ordnungsgemäß.

Zugriffsanforderungen mit Snowsight verwalten

Wenn ein Anbieter in einer Snowflake Native App eine Benutzerschnittstelle implementiert, kann ein Verbraucher über Snowsight Folgendes ausführen.

  • Anzeigen und Erteilen globaler Berechtigungen

  • Autorisieren des Zugriffs auf bestehende Objekte im Verbraucherkonto

Globale Berechtigungen erteilen

Um nach Installation einer Anwendung Berechtigungen zu erteilen oder Referenzen zu erstellen, gehen Sie wie folgt vor:

  1. Melden Sie sich bei Snowsight an.

  2. Wählen Sie im Navigationsmenü die Option Data Products » Apps aus.

  3. Wählen Sie die App aus.

  4. Wählen Sie auf der Symbolleiste das Symbol Security aus.

  5. Wählen Sie die Registerkarte Privileges aus.

    Die von der App angefragten Berechtigungen auf Kontoebene werden unter Account level privileges angezeigt.

  6. Wählen Sie im Bereich Account-level privileges die Option Review aus, und aktivieren Sie dann die Schieberegler jeder Berechtigung, die Sie zuweisen möchten.

  7. Wählen Sie Save aus.

Zugriff auf bestimmte Objekte autorisieren

Wenn ein Anbieter eine Benutzerschnittstelle für Snowflake Native App implementiert, kann ein Verbraucher Snowsight verwenden, um den Zugriff auf Objekte in seinem Konto zu autorisieren.

So autorisieren Sie den Zugriff auf bestimmte Objekte:

  1. Melden Sie sich bei Snowsight an.

  2. Wählen Sie im Navigationsmenü die Option Data Products » Apps aus.

  3. Wählen Sie die App aus.

  4. Wählen Sie auf der Symbolleiste das Symbol Security aus.

  5. Wählen Sie die Registerkarte Privileges aus.

  6. Wählen Sie im Bereich Privileges to objects neben dem Objekt, für das Sie den Zugriff autorisieren möchten, Add aus.

  7. Wählen Sie Select Data aus, und wählen Sie dann das Datenprodukt aus, auf das Sie den Zugriff autorisieren möchten.

  8. Wählen Sie Done aus.

Berechtigungen und Zugriff auf Objekte entziehen

Um Berechtigungen zu entziehen oder den Zugriff auf Objekte zu entfernen, gehen Sie wie folgt vor:

  1. Melden Sie sich bei Snowsight an.

  2. Wählen Sie im Navigationsmenü die Option Data Products » Apps aus.

  3. Wählen Sie die App aus.

  4. Wählen Sie auf der Symbolleiste das Symbol Security aus.

  5. Wählen Sie die Registerkarte Privileges aus.

    • Um eine globale Berechtigung zu entziehen, wählen Sie die Schaltfläche Edit aus, und schalten Sie dann den Schieberegler für die Berechtigung, die Sie widerrufen möchten, um.

    • Um den Zugriff auf ein bestimmtes Objekt zu entziehen, klicken Sie auf die Schaltfläche Delete, und wählen Sie dann Revoke Privilege aus.

Bemerkung

Das Entziehen von Berechtigungen oder des Zugriffs auf Objekte kann dazu führen, dass die Anwendung instabil wird oder nicht mehr funktioniert.

Berechtigungen für eine App mit SQL-Befehlen verwalten

Wenn Ihr App-Entwickler keine Weboberfläche für die Erteilung von Berechtigungen implementiert, müssen Sie die Anfragen für die App mit SQL-Befehlen verwalten.

Anzeigen der von einer App angefragten Berechtigungen

Wenn ein Anbieter die von der App benötigten Berechtigungen angibt, wird die Anfrage für die Berechtigung als Teil der installierten App aufgenommen. Sie können diese Berechtigungen nach der Installation der App anzeigen.

Um die für eine Anwendung erforderlichen Berechtigungen anzuzeigen, führen Sie den Befehl SHOW PRIVILEGES wie im folgenden Beispiel gezeigt aus:

SHOW PRIVILEGES IN APPLICATION hello_snowflake_app;
Copy

Einer Snowflake Native App Berechtigungen erteilen

Nachdem ein Verbraucher die von einer App angeforderten Berechtigungen ermittelt hat, kann er der App diese Berechtigungen erteilen.

Um einer App beispielsweise die Berechtigung EXECUTE TASK zu erteilen, führen Sie den Befehl GRANT PRIVILEGE aus, wie im folgenden Beispiel gezeigt:

GRANT EXECUTE TASK ON ACCOUNT TO APPLICATION hello_snowflake_app;
Copy

Einer Snowflake Native App die Berechtigung MANAGE WAREHOUSES erteilen

Die Berechtigung MANAGE WAREHOUSES ermöglicht es einer App, Warehouses innerhalb des Kontos des Verbrauchers zu erstellen, zu ändern und zu verwenden. Um einer App die Berechtigung MANAGE WAREHOUSES zu erteilen, verwenden Sie GRANT, wie im folgenden Beispiel gezeigt:

GRANT MANAGE WAREHOUSES ON ACCOUNT TO APPLICATION hello_snowflake_app;
Copy

Berechtigung IMPORTED PRIVILEGES für die SNOWFLAKE-Datenbank erteilen

Einige Anwendungen könnten die Anfrage stellen, dass ein Verbraucher die Berechtigung IMPORTED PRIVILEGES für die SNOWFLAKE-Datenbank in seinem Konto erteilt. Diese Berechtigung kann nur mit SQL-Befehlen erteilt werden. Sie kann nicht über Snowsight erteilt werden. Wenn eine App diese Berechtigung erfordert, sollte der Anbieter diese Anforderung an den Verbraucher weitergeben, z. B. in der README-Datei der App.

Um die Berechtigung IMPORT für die SNOWFLAKE-Datenbank zu erteilen, führen Sie den folgenden Befehl aus:

GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE TO APPLICATION hello_snowflake_app;
Copy

Bemerkung

Die Berechtigung IMPORTED PRIVILEGES ermöglicht der App den Zugriff auf Informationen zu Nutzung und Kosten im Zusammenhang mit dem Verbraucherkonto. Bevor der Verbraucher diese Berechtigung erteilt, muss er sicher sein, dass diese Informationen für die App freigegeben werden sollen.

Zugriff auf Objekte manuell autorisieren

Wenn ein Anbieter in der Datei manifest.yml eine Referenz auf ein Objekt definiert, wird diese Referenzdefinition zum Bestandteil der installierten App. Ein Verbraucher kann eine Referenz auf ein Objekt in seinem Konto erstellen, um der App den Zugriff auf das Objekt zu erlauben. Wenn der Anbieter keine Benutzeroberfläche für den Zugriff auf Objekte im Verbraucherkonto erstellt hat, kann der Verbraucher den Zugriff manuell autorisieren.

Der Verbraucher kann eine Referenz auf ein Objekt erstellen, um es mit der App zu verknüpfen, wenn er über die angeforderten Berechtigungen für das Objekt verfügt. Wenn beispielsweise für ein Objekt, z. B. eine Tabelle, die Berechtigungen SELECT und INSERT erforderlich sind, muss der Verbraucher die Referenz mit einer Rolle erstellen, die die Berechtigungen SELECT und INSERT für die Tabelle hat. Weitere Informationen zum Anzeigen der Objekttypen und der spezifischen erforderlichen Berechtigungen für jedes Objekt finden Sie unter Von App angeforderte Referenzen anzeigen.

Bemerkung

Über eine Referenz werden keine Berechtigungen für Objekte erteilt. Wenn die Rolle, mit der die Referenz erstellt wurde, ihre Berechtigungen für das Objekt verliert, ist die Referenz nicht mehr gültig. Der Verbraucher muss eine der folgenden Aktionen ausführen:

  • Wiederherstellen der erforderlichen Berechtigungen für die Rolle, die den Verweis erstellt hat.

  • Neuerstellen der Referenz mithilfe einer Rolle, die über die erforderlichen Berechtigungen für das Objekt verfügt.

Von App angeforderte Referenzen anzeigen

Ein Verbraucher kann die von einer App angeforderten Referenzen anzeigen, indem der Befehl SHOW REFERENCES wie im folgenden Beispiel ausgeführt wird:

SHOW REFERENCES IN APPLICATION hello_snowflake_app;
Copy

Dieser Befehl zeigt eine Liste aller in der App definierten Referenzen an. Er zeigt außerdem die Berechtigungen an, die die Verbraucherrolle für das Objekt haben muss, um die Referenz erstellen zu können.

Referenz erstellen und mit App verknüpfen

Nachdem die von der App angefragten Referenzen angezeigt hat, kann ein Verbraucher die Referenz erstellen, indem er die Systemfunktion SYSTEM$REFERENCE ausführt, wie im folgenden Beispiel gezeigt:

SELECT SYSTEM$REFERENCE('table', 'db1.schema1.table1', 'persistent', 'select', 'insert');
Copy

Dieser Befehl erstellt die Referenz und gibt einen Bezeichner für das Objekt zurück. Der Bezeichner sieht ähnlich aus wie im folgenden Beispiel:

ENT_REF_TABLE_16617302895522_2CDD20F5C047A5B87B2CE36F6837715786AF9F2D

Der Verbraucher übergibt diesen Bezeichner an eine gespeicherte Callback-Prozedur, um die Referenz mit der App zu verknüpfen.

Bemerkung

Der Verbraucher muss diesen Befehl für jede von der App angeforderte Referenz ausführen.

Um einen Verweis mit einer Anwendung zu verknüpfen, muss der Verbraucher den Bezeichner, der durch den Aufruf der Systemfunktion SYSTEM$REFERENCE zurückgegeben wird, an eine gespeicherte Prozedur für den Rückruf übergeben. Eine Callback-Prozedur ist eine gespeicherte Prozedur, die der Anbieter in der Snowflake Native App erstellt, um eine Referenz mit der App zu verknüpfen.

Um eine Callback-Prozedur zu verwenden, führen Sie den folgenden Befehl aus:

CALL app.config.register_single_reference(
  'consumer_table', 'ADD', 'ENT_REF_TABLE_16617302895522_2CDD20F5C047A5B87B2CE36F6837715786AF9F2D');
Copy

In diesem Beispiel verknüpft die gespeicherte Prozedur register_single_reference() die Referenz mit dem Bezeichner ENT_REF_TABLE_16617302895522_2CDD20F5C047A5B87B2CE36F6837715786AF9F2D mit der App.

Bemerkung

Ein Anbieter kann verschiedene Callback-Prozeduren in eine App integrieren. Diese sollten in der README-Datei der App angegeben werden.

Referenz erstellen und mit App verknüpfen in nur einem Schritt

Nach dem Anzeigen der Referenzen, die von der Anwendung angefordert werden, kann ein Verbraucher die Referenz erstellen und sie mit der App verknüpfen, indem die Systemfunktion SYSTEM$REFERENCE als Argument an eine gespeicherte Callback-Prozedur übergeben wird.

Das folgende Beispiel zeigt die Syntax für die Übergabe der Systemfunktion SYSTEM$REFERENCE als Argument an eine gespeicherte Callback-Prozedur:

CALL app.config.register_single_reference(
 'consumer_table', 'ADD', SYSTEM$REFERENCE('table', 'db1.schema1.table1',
 'PERSISTENT', 'SELECT', 'INSERT'));
Copy

In diesem Beispiel wird die Referenz erstellt und der Bezeichner an die Callback-Funktion übergeben, um die Referenz mit der App zu verknüpfen.

Aktivieren Sie externe und Apache Iceberg™-Tabellen

Die Snowflake Native App Framework ermöglicht es Anbietern, externe und Apache Iceberg™-Tabellen in den Anbieterfreigaben mit Verbrauchern in der App zu teilen. Allerdings müssen die Verbraucher der App die Berechtigung zum Zugriff auf diese Tabellen erteilen.

Hinweise zu Sicherheit und Kosten

Wenn Sie einer App erlauben, auf eine externe oder Iceberg-Tabelle zuzugreifen, sollten Sie Folgendes beachten:

  • Externe und Iceberg-Tabellen können ein Risiko der Datenexfiltration für den Verbraucher darstellen. Wenn eine Anwendung beispielsweise eine Ansicht mit einer externen Tabelle bereitstellt, kann ein Anbieter anhand der Zugriffsprotokolle seines Cloud-Anbieters die Arten von Abfragen ermitteln, die der Verbraucher stellt.

  • Bei externen und Iceberg-Tabellen können zusätzliche Kosten für die Nutzung des Datenein- und -ausgangs anfallen, wenn sich der Objektspeicher, der die Tabelle enthält, nicht in derselben Region befindet, in der die App veröffentlicht wird.

Aktivieren Sie externe und Iceberg-Tabellen mit Snowsight

Anbieter können die App so konfigurieren, dass allen Verbrauchern ein Dialog angezeigt wird, um einer App den Zugriff auf eine externe oder Iceberg-Tabelle zu ermöglichen.

Um einer App den Zugriff auf eine externe oder Iceberg-Tabelle zu ermöglichen:

  1. Melden Sie sich bei Snowsight an.

  2. Wählen Sie im Navigationsmenü die Option Data Products » Apps aus.

  3. Wählen Sie die App aus.

  4. Wählen Sie auf der Symbolleiste das Symbol Security aus.

  5. Wählen Sie die Registerkarte Privileges aus.

  6. Wählen Sie unter External data access die Option Review aus.

  7. Wählen Sie Enable aus.

Aktivieren Sie externe und Iceberg-Tabellen mit SQL

Um den Zugriff auf externe und Iceberg-Tabellen über SQL zu ermöglichen, verwenden Sie die System-Funktion SET_APPLICATION_RESTRICTED_FEATURE_ACCESS wie im folgenden Beispiel gezeigt:

SELECT SYSTEM$SET_APPLICATION_RESTRICTED_FEATURE_ACCESS(hello_snowflake_app, 'external_data', ‘{"allowed_cloud_providers" : "all"}’);
Copy

Mit diesem Befehl kann die App hello_snowflake_app auf die externen oder Iceberg-Tabellen zugreifen, die die App verwendet.

Um festzustellen, ob externe und Iceberg-Tabellen für eine App aktiviert wurden, verwenden Sie die System-Funktion LIST_APPLICATION_RESTRICTED_FEATURES wie im folgenden Beispiel gezeigt:

SYSTEM$LIST_APPLICATION_RESTRICTED_FEATURES('hello_snowflake_app')
Copy

Diese System-Funktion gibt ein JSON-Objekt zurück, das anzeigt, ob externe und Iceberg-Tabellen für die hello_snowflake_app erlaubt sind.