Benutzeroberfläche zum Anfordern von Berechtigungen und Referenzen erstellen¶
Unter diesem Thema wird beschrieben, wie Sie mit Streamlit und Snowsight eine Benutzeroberfläche erstellen, über die Verbraucher für eine installierte Snowflake Native App Berechtigungen erteilen und Referenzen erstellen können. Die Snowflake Native App Framework stellt die Python Permission SDK zur Verfügung, die es Anbietern ermöglicht, Anfragen für den Verbraucher über eine Streamlit-App einzubetten.
Allgemeine Informationen zu Berechtigungen und Referenzen¶
Allgemeine Informationen zum Anfordern von Berechtigungen und Referenzen beim Verbraucher mit dem Snowflake Native App Framework finden Sie unter Zugriff auf Objekte in einem Verbraucherkonto anfordern.
Allgemeine Informationen zum Python Permission SDK¶
Das Snowflake Native App Framework stellt die Python Permission SDK zur Verfügung, die es einem Anbieter ermöglicht, innerhalb einer Snowflake Native App Folgendes zu tun:
Prüfen der Berechtigungen auf Kontoebene
Anfordern der globalen Berechtigungen, die in der Manifest-Datei aufgeführt sind
Anfordern der Referenzen auf Objekte und der entsprechenden Berechtigungen auf Objektebene, die in der Manifest-Datei definiert sind
Anfordern von berechtigungsabhängigen Aktionen, z. B. das Erstellen einer API-Integration oder das Erstellen einer Freigabe.
Bei Verwendung der Python Permission SDK zeigt Snowsight die Zugriffsanforderungen auf der Registerkarte Security der installierten Snowflake Native App an.
Workflow für das Erstellen einer Schnittstelle zum Erteilen von Berechtigungen und zum Binden von Referenzen¶
Der folgende allgemeine Workflow beschreibt die Schritte, die erforderlich sind, um eine Streamlit-App zu implementieren, über die Berechtigungen und Referenzen beim Verbraucher angefordert werden.
Erstellen eines Anwendungspakets
Geben Sie in der Manifest-Datei die Berechtigungen und die von der Snowflake Native App benötigten Referenzen an.
Fügen Sie eine Streamlit-App zu Ihrem Anwendungspaket hinzu.
Fügen Sie eine
environment.yml
-Datei zu Ihrem Anwendungspaket hinzu.Bemerkung
Die Datei
environment.yml
muss sich im selben Verzeichnis befinden wie die Streamlit-Hauptdatei, die zum Implementieren der Snowsight-Schnittstelle verwendet wird.Fügen Sie die Bibliothek
snowflake-native-apps-permission
als Abhängigkeit hinzu.Importieren Sie die Bibliothek
snowflake.permissions
in Ihre Streamlit-App.Fügen Sie Ihrer Streamlit-App Funktionen hinzu, die die vom SDK bereitgestellten Funktionen aufrufen.
Python Permission SDK zu einer Streamlit-Umgebung hinzufügen¶
Um die Python Permission SDK in Ihrer Streamlit-App verwenden zu können, fügen Sie das Paket snowflake-native-apps-permission
als Abhängigkeit in die Datei environment.yml
ein, wie im folgenden Beispiel gezeigt:
name: sf_env
channels:
- snowflake
dependencies:
- snowflake-native-apps-permission
Python Permission SDK in eine Streamlit-App importieren¶
Um die Python Permission SDK in Ihre Streamlit-App zu importieren, fügen Sie die folgende Import-Anweisung in Ihre App ein:
import snowflake.permissions as permissions;
Berechtigungen vom Verbraucher anfordern¶
Die folgenden Beispiele zeigen, wie Sie verschiedene Aufgaben mithilfe der Python Permission SDK ausführen können.
Berechtigungen auf Kontoebene prüfen¶
Dieses Beispiel zeigt, wie Sie mit der Methode get_held_account_privileges()
der Permissions-API überprüfen können, ob der installierten Snowflake Native App die in der Manifest-Datei deklarierten Berechtigungen erteilt wurden.
Wenn eine Snowflake Native App beispielsweise eine Datenbank außerhalb des APPLICATION-Objekts erstellen muss, kann ein Anbieter die Referenz in der Manifest-Datei wie folgt definieren:
privileges:
- CREATE DATABASE:
description: "Creation of ingestion (required) and audit databases"
Mit der Python Permission SDK können Sie die Methode get_held_account_privileges()
verwenden, um eine Liste der Berechtigungen zu erhalten, die der Snowflake Native App erteilt wurden.
import streamlit as st
import snowflake.permissions as permissions
...
if not permissions.get_held_account_privileges(["CREATE DATABASE"]):
st.error("The app needs CREATE DB privilege to replicate data")
In diesem Beispiel wird die Funktion get_held_account_privileges()
aufgerufen, wobei die Berechtigung CREATE DATABASE als Parameter übergeben wird. Ein Anbieter kann die Funktion get_held_account_privileges()
verwenden, um so lange angemessen reagieren zu können, bis der Verbraucher die erforderlichen Berechtigungen für die Snowflake Native App erteilt hat.
Bemerkung
Nur die in der Manifest-Datei definierten Berechtigungen sind gültige Argumente für get_held_account_privileges()
. Die Übergabe anderer Argumente führt zu einem Fehler.
Berechtigungsabhängige Aktionen vom Verbraucher anfordern¶
Anbieter können die Python Permission SDK verwenden, um die von der Snowflake Native App benötigten berechtigungsabhängigen Aktionen anzufordern.
Um beispielsweise eine API-Integration anzufordern, die es der Snowflake Native App ermöglicht, eine Verbindung zu einer ServiceNow-Instanz herzustellen, würde ein Anbieter die API-Integration in der Manifest-Datei definieren:
references:
- servicenow_api_integration:
label: "API INTEGRATION for ServiceNow communication"
description: "An integration required in order to support extraction and visualization of ServiceNow data."
privileges:
- USAGE
object_type: API Integration
register_callback: config.register_reference
Als Nächstes ruft der Anbieter in der Streamlit-App die Methode request_reference(<Name_der_Referenz>)
auf, um die Berechtigung USAGE für die API-Integration anzufordern, wie im folgenden Beispiel gezeigt:
permissions.request_reference("servicenow_api_integration")
Python Permission SDK-Referenz¶
In der folgenden Tabelle sind die Funktionen aufgeführt, die vom snowflake.permissions
-Modul von der Python Permission SDK bereitstellt werden:
Methode |
Beschreibung |
---|---|
|
Fordert Berechtigungen vom Verbraucher an, die durch ein an die Funktion übergebenes String-Array, das die Berechtigungen enthält, angegeben werden. Die angegebenen Berechtigungen müssen in der Manifest-Datei aufgeführt sein. |
|
Fordert eine Referenz von dem Verbraucher an, der durch die an die Funktion übergebene Zeichenfolge angegeben ist. Die Referenz, die an die Funktion übergeben wird, muss in der Manifest-Datei definiert sein. Weitere Informationen zu den Objekten, die in einer Referenz enthalten sein können, und zu den von ihnen unterstützten Berechtigungen finden Sie unter Objekttypen und Berechtigungen, die eine Referenz enthalten kann. |
|
Fordert vom Verbraucher eine API-Integration für das Amazon API Gateway an. Der Parameter
Weitere Informationen zu weiteren Parametern finden Sie unter CREATE API INTEGRATION. |
|
Fordert vom Verbraucher eine API-Integration für Azure API Management an. Der Parameter |
|
Fordert vom Verbraucher eine API-Integration für Google Cloud API Gateway an. Der Parameter |
|
Gibt ein Array mit den Berechtigungen zurück, die der Snowflake Native App anhand des an die Funktion übergebenen Arrays von Berechtigungen erteilt wurden. |
|
Gibt ein Array mit den Berechtigungen zurück, die der Snowflake Native App anhand des an die Funktion übergebenen Arrays von Berechtigungen nicht erteilt wurden. |
|
Gibt ein Array zurück, das eine Liste von Referenzen auf ein Objekt enthält, das durch einen Parameter der Funktion angegeben wurde und mit der Snowflake Native App verbunden ist. |