Criação de uma interface de usuário para solicitar privilégios e referências¶
Este tópico descreve como você, como provedor, cria uma interface de usuário usando Streamlit e Snowsight para permitir que os consumidores concedam privilégios e criem referências para um Snowflake Native App instalado. Para acessar privilégios e referências do Snowflake de um programa Streamlit, o Snowflake Native App Framework fornece o Python Permission SDK.
Consulte a Referência de Python Permission SDK para obter informações sobre os métodos no Python Permission SDK.
Sobre privilégios e referências¶
Para obter informações gerais sobre como solicitar privilégios e referências do consumidor usando o Snowflake Native App Framework, consulte Criação e acesso a objetos em uma conta de consumidor.
Sobre Python Permission SDK¶
O Snowflake Native App Framework fornece o Python Permission SDK, que permitem que um provedor faça o seguinte em um Snowflake Native App:
Verificar os privilégios no nível da conta.
Solicitar privilégios globais listados no arquivo de manifesto.
Solicitar referências a objetos e seus privilégios de nível de objeto correspondentes, conforme definido no arquivo de manifesto.
Solicitar ações privilegiadas, por exemplo, criar uma integração de API ou criação de um compartilhamento.
Usando o Python Permission SDK, Snowsight exibe as solicitações de acesso na guia Security do Snowflake Native App instalado.
Consulte a Referência de Python Permission SDK para obter informações sobre os métodos no Python Permission SDK.
Fluxo de trabalho para criar uma interface para aprovar privilégios e vincular referências¶
O fluxo de trabalho geral a seguir descreve as etapas necessárias para implementar um aplicativo Streamlit para solicitar concessões de privilégios e referências do consumidor.
Criar um pacote de aplicativo.
No arquivo de manifesto, especifique os privilégios e defina as referências necessárias para o Snowflake Native App.
Adicione um aplicativo Streamlit ao seu pacote de aplicativo.
Adicione um arquivo
environment.yml
ao seu pacote de aplicativo.Nota
O arquivo
environment.yml
deve estar no mesmo diretório que o arquivo Streamlit principal usado para implementar a interface Snowsight.Adicione a biblioteca
snowflake-native-apps-permission
como uma dependência.Importe a biblioteca
snowflake.permissions
em seu aplicativo Streamlit.Adicione funções ao seu aplicativo Streamlit que chamam as funções fornecidas pelo SDK.
Adicionar o Python Permission SDK ao ambiente Streamlit¶
Para usar o Python Permission SDK em seu aplicativo Streamlit, adicione o pacote snowflake-native-apps-permission
como uma dependência em seu arquivo environment.yml
como mostrado no exemplo a seguir:
name: sf_env
channels:
- snowflake
dependencies:
- snowflake-native-apps-permission
Importação do Python Permission SDK em um aplicativo Streamlit¶
Para importar o Python Permission SDK em seu aplicativo Streamlit, inclua a seguinte instrução de importação em seu aplicativo:
import snowflake.permissions as permissions
Solicitação de privilégios de um consumidor¶
Os exemplos a seguir mostram como executar diferentes tarefas usando o Python Permission SDK.
Verificação dos privilégios de nível de conta¶
Esse exemplo mostra como usar o método get_held_account_privileges() do Python Permission SDK para verificar se as permissões declaradas no arquivo de manifesto são concedidas ao Snowflake Native App instalado.
Por exemplo, se um Snowflake Native App precisar criar um banco de dados fora do objeto APPLICATION, um provedor poderá definir a referência no arquivo de manifesto da seguinte maneira:
privileges:
- CREATE DATABASE:
description: "Creation of ingestion (required) and audit databases"
Usando o Python Permission SDK, você pode usar o método get_held_account_privileges() para obter uma lista de privilégios que foram concedidos ao 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")
Este exemplo chama a função get_held_account_privileges() passando a permissão CREATEDATABASE como um parâmetro. Um provedor pode usar a função get_held_account_privileges() para esperar até que o consumidor conceda os privilégios necessários ao aplicativo.
Nota
Somente os privilégios definidos no arquivo de manifesto são argumentos válidos para get_held_account_privileges(). Passar outros argumentos resulta em erro.
Solicitação de ações privilegiadas do consumidor¶
Os provedores podem usar o Python Permission SDK para solicitar ações privilegiadas exigidas pelo Snowflake Native App.
Por exemplo, para solicitar uma integração de API que permite que o Snowflake Native App se conecte a uma instância ServiceNow, um provedor definiria a integração de API no arquivo de manifesto:
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
Em seguida, no aplicativo Streamlit, o provedor chama o método request_reference() para solicitar o privilégio USAGE na integração de API como mostrado no exemplo a seguir:
permissions.request_reference("servicenow_api_integration")