Création d’une interface utilisateur pour demander des privilèges et des références¶
Cette rubrique décrit comment créer une interface utilisateur à l’aide de Streamlit et de 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. Snowflake Native App Framework fournit le Python Permission SDK qui permet aux fournisseurs d’intégrer des demandes pour le consommateur à l’aide d’une application Streamlit.
À 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 à Demander l’accès aux objets d’un compte de consommateur.
À propos des Python Permission SDK¶
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.
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.
Créer un paquet d’application.
Dans le fichier manifeste, spécifiez les privilèges et définissez les références nécessaires à l”Snowflake Native App.
Ajouter une application Streamlit à votre paquet d’application.
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.Ajouter la bibliothèque
snowflake-native-apps-permission
comme dépendance.Importez la bibliothèque
snowflake.permissions
dans votre application Streamlit.Ajoutez à votre application Streamlit des fonctions qui appellent les fonctions fournies par le SDK.
Ajouter le Python Permission SDK à un 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
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;
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()
de l’API d’autorisations 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"
À 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")
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 répondre de manière appropriée jusqu’à ce que le consommateur accorde les privilèges requis à l”Snowflake Native App.
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
Ensuite, dans l’application Streamlit, le fournisseur appelle la méthode request_reference(<ref_name>)
pour demander le privilège USAGE sur l’intégration d’API, comme le montre l’exemple suivant :
permissions.request_reference("servicenow_api_integration")
Référence Python Permission SDK¶
Le tableau suivant répertorie les fonctions fournies dans le module snowflake.permissions
par les Python Permission SDK :
Méthode |
Description |
---|---|
|
Demande des privilèges du consommateur spécifié par un tableau de chaînes transmis à la fonction qui contient les privilèges. Les privilèges spécifiés doivent être répertoriés dans le fichier manifeste. |
|
Demande une référence au consommateur spécifié par la chaîne transmise à la fonction. La référence transmise à la fonction doit être définie dans le fichier manifeste. Reportez-vous à Types d’objets et privilèges qu’une référence peut contenir pour connaître les objets qui peuvent être inclus dans une référence et les privilèges qui leur sont associés. |
|
Demande au consommateur une intégration d’API pour Amazon API Gateway. Le paramètre
Reportez-vous à CREATE API INTEGRATION pour obtenir des informations sur les autres paramètres. |
|
Demande au consommateur une intégration d’API pour la gestion des API Azure. Le paramètre |
|
Demande au consommateur une intégration d’API pour Google Cloud API Gateway. Le paramètre |
|
Renvoie un tableau contenant les privilèges qui ont été accordés à l”Snowflake Native App sur la base du tableau de privilèges transmis à la fonction. |
|
Renvoie un tableau contenant les privilèges qui n’ont pas été accordés à l”Snowflake Native App sur la base du tableau de privilèges transmis à la fonction. |
|
Renvoie un tableau contenant une liste de références à un objet, spécifié par un paramètre de la fonction qui a été associée à l”Snowflake Native App. |