Privilégios necessários para criar e usar um aplicativo 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 Noções básicas sobre os direitos do proprietário e aplicativos Streamlit in Snowflake. You can also configure a container-runtime app to use restricted caller’s rights (Preview). For more information, see Direitos restritos do autor da chamada e do Streamlit in Snowflake.
Um proprietário de app e o proprietário do esquema que contém o app Streamlit podem determinar quais funções têm permissão para usar o app. Os usuários podem interagir com o aplicativo e ver qualquer coisa exibida pelo aplicativo Streamlit. Os usuários têm a mesma exibição do app que o proprietário, exceto que não podem acessar o modo de edição.
Para obter mais informações, consulte Compartilhamento de um aplicativo Streamlit.
Privilégios necessários para criar um aplicativo Streamlit¶
Se sua função não for proprietária dos objetos na tabela a seguir, ela deverá ter os privilégios listados nesses objetos para criar um app Streamlit:
Privilégio |
Objeto |
Notas |
|---|---|---|
CREATE STREAMLIT |
Esquema onde você cria o objeto Streamlit |
|
READ |
Estágio de onde você copia os arquivos de origem do aplicativo Streamlit |
|
USAGE |
Warehouse usado pelo app Streamlit |
|
USAGE |
Pool de computação usado pelo app Streamlit |
Esse privilégio será necessário apenas se seu app usar um tempo de execução de contêiner. |
USAGE |
Integrações de acesso externo usadas pelo app Streamlit |
Esse privilégio será necessário apenas se seu app usar integrações de acesso externo. Para tempos de execução de contêiner, esse privilégio é necessário para instalar pacotes de índices de pacotes externos como PyPI. |
USAGE |
Segredos usados pelo app Streamlit |
Esse privilégio será necessário apenas se seu app usar segredos e será aplicado somente a tempos de execução de warehouse. |
CREATE STAGE |
Esquema onde você cria o objeto Streamlit |
Este privilégio só é necessário para criar objetos Streamlit com o ROOT_LOCATION Parâmetro. |
A operação em um objeto de esquema requer pelo menos um privilégio no banco de dados pai e um privilégio no esquema pai.
Para conceder esses privilégios a uma função, use o comando GRANT <privilégios> … TO ROLE. O exemplo a seguir mostra como conceder os privilégios necessários para criar apps de tempo de execução de contêiner (versão preliminar):
GRANT USAGE ON DATABASE streamlit_db TO ROLE streamlit_developer;
GRANT USAGE ON SCHEMA streamlit_db.apps TO ROLE streamlit_developer;
GRANT CREATE STREAMLIT ON SCHEMA streamlit_db.apps TO ROLE streamlit_developer;
GRANT USAGE ON COMPUTE_POOL streamlit_compute_pool TO ROLE streamlit_developer;
GRANT USAGE ON INTEGRATION python_package_index TO ROLE streamlit_developer;
GRANT USAGE ON WAREHOUSE streamlit_wh TO ROLE streamlit_developer;
Se uma concessão futura for definida no banco de dados ou esquema, certifique-se de que o usuário crie o aplicativo Streamlit usando a função definida na concessão futura.
Privilégios necessários para visualizar um aplicativo Streamlit¶
Para visualizar um aplicativo Streamlit, você deve ter uma conta Snowflake e estar conectado nela. Além disso, você deve usar uma função que tenha o privilégio USAGE nos seguintes objetos:
Banco de dados que contém o aplicativo Streamlit
Esquema que contém o aplicativo Streamlit
O aplicativo Streamlit
Na maioria dos casos, quando o proprietário do aplicativo compartilha um aplicativo Streamlit com outra função, o privilégio USAGE é concedido automaticamente à nova função. No entanto, se um aplicativo Streamlit for criado em um esquema com MANAGED ACCESS, o privilégio USAGE deverá ser concedido manualmente à nova função.
O proprietário do esquema ou um usuário com função com o privilégio MANAGE GRANTS deve conceder o privilégio USAGE usando o comando GRANT <privilégios> … TO ROLE, conforme mostrado neste exemplo:
GRANT USAGE ON DATABASE streamlit_db TO ROLE streamlit_viewer;
GRANT USAGE ON SCHEMA streamlit_db.streamlit_schema TO ROLE streamlit_viewer;
GRANT USAGE ON STREAMLIT streamlit_db.streamlit_schema.streamlit_app TO ROLE streamlit_viewer;
O proprietário do esquema ou um usuário com a função com o privilégio MANAGE GRANTS pode conceder o privilégio USAGE para visualizar todos os futuros aplicativos Streamlit criados no esquema, conforme mostrado neste exemplo:
GRANT USAGE ON FUTURE STREAMLITS IN SCHEMA streamlit_db.streamlit_schema TO ROLE streamlit_viewer;