Benutzeroberfläche zum Anfordern von Berechtigungen und Referenzen erstellen

Unter diesem Thema wird beschrieben, wie Sie als Anbieter 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. Um von einem Streamlit-Programm aus auf Snowflake-Berechtigungen und -Referenzen zuzugreifen, bietet die Snowflake Native App Framework die Python Permission SDK.

Siehe Python Permission SDK-Referenz mit Informationen zu den Methoden in der Python Permission SDK.

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 Objekte in einem Verbraucherkonto erstellen und darauf zugreifen.

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.

Siehe Python Permission SDK-Referenz mit Informationen zu den Methoden in der Python Permission SDK.

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.

  1. Erstellen eines Anwendungspakets

  2. Geben Sie in der Manifest-Datei die Berechtigungen und die von der Snowflake Native App benötigten Referenzen an.

  3. Fügen Sie eine Streamlit-App zu Ihrem Anwendungspaket hinzu.

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

  5. Fügen Sie die Bibliothek snowflake-native-apps-permission als Abhängigkeit hinzu.

  6. Importieren Sie die Bibliothek snowflake.permissions in Ihre Streamlit-App.

  7. Fügen Sie Ihrer Streamlit-App Funktionen hinzu, die die vom SDK bereitgestellten Funktionen aufrufen.

Hinzufügen der Python Permission SDK zu Ihrer Streamlit-Umgebung

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
Copy

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
Copy

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_gehalten_account_privileges () der Python Permission SDK ü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"
Copy

Mit der Python Permission SDK können Sie die Methode get_gehalten_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")
Copy

In diesem Beispiel wird die Funktion get_gehalten_account_privileges () aufgerufen, wobei die Berechtigung CREATE DATABASE als Parameter übergeben wird. Ein Anbieter kann die get_gehalten_account_privileges ()-Funktion verwenden, um zu warten, bis der Verbraucher der App die erforderlichen Berechtigungen erteilt hat.

Bemerkung

Nur die in der Manifest-Datei definierten Berechtigungen sind gültige Argumente für get_gehalten_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
Copy

Als Nächstes ruft der Anbieter in der Streamlit-App die Methode request_reference() auf, um die Berechtigung USAGE für die API-Integration anzufordern, wie im folgenden Beispiel gezeigt:

permissions.request_reference("servicenow_api_integration")
Copy