Gewähren des Zugriffs auf eine Snowflake Native App

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.

Allgemeine Informationen zu Berechtigungen und Referenzen, die von einer Anwendung angefordert werden

In einer einfachen Snowflake Native App werden alle von der App benötigten Objekte innerhalb des APPLICATION-Objekts erstellt, wenn das Setup-Skript während der Installation ausgeführt wird. Alle von der Anwendung benötigten Objekte werden in der installierten Anwendung erstellt und der Zugriff auf sie erfolgt innerhalb dieser Anwendung. 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

    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 App ermöglichen, auf Objekte zuzugreifen, die bereits im Verbraucherkonto vorhanden sind, sich aber außerhalb des APPLICATION-Objekts 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. Klicken Sie in der linken Navigationsleiste auf Apps.

  3. Wählen Sie die Anwendung aus.

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

    Die von der Anwendung angeforderten Berechtigungen auf Kontoebene werden unter Account level privileges angezeigt.

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

  6. 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. Klicken Sie in der linken Navigationsleiste auf Apps.

  3. Wählen Sie die Anwendung aus.

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

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

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

  7. 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. Klicken Sie in der linken Navigationsleiste auf Apps.

  3. Wählen Sie die Anwendung aus.

  4. Wählen Sie auf der Symbolleiste das Symbol Security 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 der Anwendungsentwickler keine Schnittstelle für das Erteilen von Berechtigungen implementiert, müssen Sie die Zugriffsanforderungen für die Anwendung mit SQL-Befehlen verwalten.

Von einer Anwendung angeforderte Berechtigungen anzeigen

Wenn ein Anbieter die von der Anwendung benötigten Berechtigungen angibt, werden die Berechtigungsanforderungen als Teil der installierten Anwendung integriert. Sie können diese Berechtigungen nach Installation der Anwendung einsehen.

Um die Berechtigungen anzuzeigen, die von einer Anwendung angefordert wurden, führen Sie den Befehl SHOW PRIVILEGES aus, wie im folgenden Beispiel gezeigt:

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 Anwendung, Warehouses innerhalb des Verbraucherkontos zu erstellen, zu ändern und zu nutzen. 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 verlangen möglicherweise, dass einem Verbraucher die Berechtigung IMPORTED PRIVILEGES für die SNOWFLAKE-Datenbank in seinem Konto erteilt wird. Diese Berechtigung kann nur mit SQL-Befehlen erteilt werden. Sie kann nicht über Snowsight erteilt werden. Wenn eine Anwendung diese Berechtigung anfordert, muss der Anbieter dem Verbraucher diese Anforderung mitteilen, z. B. in der README-Datei der Anwendung.

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

Nach dem Anzeigen der Referenzen, die von der Anwendung angefordert werden, kann ein Verbraucher die Referenz erstellen, indem die Systemfunktion SYSTEM$REFERENCE wie im folgenden Beispiel ausgeführt wird:

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 eine Referenz mit einer Anwendung zu verknüpfen, müssen der Verbraucher den Bezeichner, der durch den Aufruf der Systemfunktion SYSTEM$REFERENCE zurückgegeben wurde, an eine gespeicherte Callback-Prozedur ü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 müssen in der README-Datei der Anwendung spezifiziert 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.