Création d’une interface utilisateur pour demander des privilèges et des références

Cette rubrique décrit comment vous, en tant que fournisseur, créez une interface utilisateur à l’aide de Streamlit et de l’Snowsight pour permettre aux consommateurs d’accorder des privilèges et de créer des références pour une Snowflake Native App installée. Pour accéder aux privilèges et aux références Snowflake à partir d’un programme Streamlit, le Snowflake Native App Framework fournit les Python Permission SDK.

Consultez Référence Python Permission SDK pour obtenir des informations sur les méthodes dans les Python Permission SDK.

À propos des privilèges et des références

Pour des informations générales sur la demande de privilèges et de références auprès du consommateur à l’aide du Snowflake Native App Framework, reportez-vous à Créer et accéder à des objets dans un compte de consommateur.

À propos des Python Permission SDK

Le Snowflake Native App Framework fournit les Python Permission SDK qui permettent à un fournisseur d’effectuer les opérations suivantes à l’intérieur d’une Snowflake Native App :

  • Vérifier les privilèges au niveau du compte.

  • Demander les privilèges globaux qui sont répertoriés dans le fichier manifeste.

  • Demander des références à des objets et aux privilèges correspondants au niveau de l’objet, tels qu’ils sont définis dans le fichier manifeste.

  • Demander des actions privilégiées, par exemple la création d’une intégration d’API ou la création d’un partage.

À l’aide des Python Permission SDK, Snowsight affiche les demandes d’accès dans l’onglet Security de l”Snowflake Native App installée.

Consultez Référence Python Permission SDK pour obtenir des informations sur les méthodes dans les Python Permission SDK.

Workflow de création d’une interface pour approuver les privilèges et lier les références

Le workflow général suivant décrit les étapes nécessaires à la mise en œuvre d’une application Streamlit pour demander des attributions de privilèges et de références au consommateur.

  1. Créer un paquet d’application.

  2. Dans le fichier manifeste, spécifiez les privilèges et définissez les références nécessaires à l”Snowflake Native App.

  3. Ajouter une application Streamlit à votre paquet d’application.

  4. Ajoutez un fichier environment.yml à votre paquet d’application.

    Note

    Le fichier environment.yml doit se trouver dans le même répertoire que le fichier principal Streamlit utilisé pour implémenter l’interface Snowsight.

  5. Ajouter la bibliothèque snowflake-native-apps-permission comme dépendance.

  6. Importez la bibliothèque snowflake.permissions dans votre application Streamlit.

  7. Ajoutez à votre application Streamlit des fonctions qui appellent les fonctions fournies par le SDK.

Ajouter les Python Permission SDK à votre environnement Streamlit

Pour utiliser les Python Permission SDK dans une application Streamlit, ajoutez le paquet snowflake-native-apps-permission en tant que dépendance dans votre fichier environment.yml comme indiqué dans l’exemple suivant :

name: sf_env
channels:
- snowflake
dependencies:
- snowflake-native-apps-permission
Copy

Importer le Python Permission SDK dans une application Streamlit

Pour importer les Python Permission SDK dans votre application Streamlit, incluez l’instruction d’importation suivante dans votre application :

import snowflake.permissions as permissions
Copy

Demander des privilèges du consommateur

Les exemples suivants montrent comment effectuer différentes tâches à l’aide des Python Permission SDK.

Vérifier des privilèges au niveau du compte

Cet exemple montre comment utiliser la méthode get_held_account_privileges() des Python Permission SDK pour vérifier si les autorisations déclarées dans le fichier manifeste sont accordées à l’Snowflake Native App installée.

Par exemple, si une Snowflake Native App doit créer une base de données en dehors de l’objet APPLICATION, un fournisseur peut définir la référence dans le fichier manifeste comme suit :

privileges:
- CREATE DATABASE:
    description: "Creation of ingestion (required) and audit databases"
Copy

À l’aide des Python Permission SDK, vous pouvez utiliser la méthode get_held_account_privileges() pour obtenir une liste des privilèges qui ont été accordés à l”Snowflake Native App.

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

Cet exemple appelle la fonction get_held_account_privileges() en transmettant comme paramètre l’autorisation CREATE DATABASE. Un fournisseur peut utiliser la fonction get_held_account_privileges() pour attendre jusqu’à ce que le consommateur accorde les privilèges requis à l’application.

Note

Seuls les privilèges définis dans le fichier manifeste sont des arguments valables pour get_held_account_privileges(). La transmission d’autres arguments entraîne une erreur.

Demander des actions privilégiées du consommateur

Les fournisseurs peuvent utiliser les Python Permission SDK pour demander des actions privilégiées requises par l”Snowflake Native App.

Par exemple, pour demander une intégration d’API qui permet à l”Snowflake Native App de se connecter à une instance ServiceNow, un fournisseur doit définir l’intégration d’API dans le fichier manifeste :

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

Ensuite, dans l’application Streamlit, le fournisseur appelle la méthode request_reference() pour demander le privilège USAGE sur l’intégration d’API, comme montré dans l’exemple suivant :

permissions.request_reference("servicenow_api_integration")
Copy