Privilèges requis pour créer et utiliser une application Streamlit¶
Within Streamlit in Snowflake, a Streamlit app is a securable object that adheres to the Snowflake access control framework. Streamlit apps use a permission model that is based on owner’s rights. For more information, see Comprendre les droits du propriétaire et les applications Streamlit in Snowflake. You can also configure a container-runtime app to use restricted caller’s rights (Preview). For more information, see Restriction des droits de l’appelant et Streamlit in Snowflake.
Un propriétaire de l’application et le propriétaire du schéma contenant l’application Streamlit peuvent déterminer quels rôles ont la permission d’utiliser l’application. Les utilisateurs peuvent interagir avec l’application et voir tout ce qui est affiché par l’application Streamlit. Les utilisateurs ont la même vue de l’application que le propriétaire, sauf qu’ils ne peuvent pas accéder au mode d’édition.
Pour plus d’informations, voir Partagez une application Streamlit.
Privilèges requis pour créer une application Streamlit¶
Pour créer une application Streamlit, si votre rôle ne possède pas les objets de la table suivante, votre rôle doit disposer des privilèges répertoriés sur ces objets :
Privilège |
Objet |
Remarques |
|---|---|---|
CREATE STREAMLIT |
Schéma dans lequel vous créez l’objet Streamlit |
|
READ |
Zone de préparation à partir de laquelle vous copiez les fichiers sources de l’application Streamlit |
|
USAGE |
Entrepôt utilisé par l’application Streamlit |
|
USAGE |
Pool de calcul utilisé par l’application Streamlit |
Ce privilège n’est requis que si votre application utilise un environnement d’exécution de conteneur. |
USAGE |
Intégrations d’accès externes utilisées par l’application Streamlit |
Ce privilège n’est requis que si votre application utilise des intégrations d’accès externes. Pour les environnements d’exécution de conteneurs, ce privilège est nécessaire pour installer des paquets à partir d’index de paquets externes comme PyPI. |
USAGE |
Secrets utilisés par l’application Streamlit |
Ce privilège n’est requis que si votre application utilise des secrets et ne s’applique qu’aux environnements d’exécution d’entrepôts. |
CREATE STAGE |
Schéma dans lequel vous créez l’objet Streamlit |
Ce privilège n’est requis que pour créer des objets Streamlit avec le paramètre ROOT_LOCATION. |
Pour effectuer une opération sur un objet dans un schéma, il est nécessaire de disposer d’au moins un privilège sur la base de données parente et d’au moins un privilège sur le schéma parent.
Use the GRANT <privilèges> … TO ROLE command to grant these privileges to a role. The following example shows how to grant the necessary privileges to create container-runtime apps:
Si une attribution future est définie sur la base de données ou le schéma, assurez-vous que l’utilisateur crée l’application Streamlit en utilisant le rôle défini dans l’attribution future.
Privilèges requis pour visualiser une application Streamlit¶
Pour visualiser une application Streamlit, vous devez avoir un compte Snowflake et être connecté. En outre, vous devez utiliser un rôle qui bénéficie du privilège USAGE sur les objets suivants :
La base de données qui contient l’application Streamlit
Le schéma qui contient l’application Streamlit
L’application Streamlit
Dans la plupart des cas, lorsque le propriétaire d’applications partage une application Streamlit avec un autre rôle, le privilège USAGE est automatiquement accordé au nouveau rôle. Cependant, si une application Streamlit est créée dans un schéma avec MANAGED ACCESS, le privilège USAGE doit être accordé manuellement au nouveau rôle.
Le propriétaire du schéma ou un utilisateur ayant le rôle avec le privilège MANAGE GRANTS doit accorder le privilège USAGE à l’aide de la commande GRANT <privilèges> … TO ROLE comme indiqué dans cet exemple :
Le propriétaire du schéma ou un utilisateur ayant le rôle avec le privilège MANAGE GRANTS peut accorder le privilège USAGE pour voir toutes les futures applications Streamlit créées dans le schéma, comme le montre cet exemple :