Políticas de acesso a linhas no Streamlit in Snowflake¶
Este tópico descreve o uso de funções de contexto e políticas de acesso a linhas em tempos de execução de warehouse Streamlit in Snowflake.
In container runtimes, context functions on owner’s rights connections will return values from the owner role’s context and so are not appropriate for user-targeted row access policies. However, restricted caller’s rights connections return the viewer’s context. For more information, see Direitos restritos do autor da chamada e do Streamlit in Snowflake.
Funções de contexto e políticas de acesso a linhas no Streamlit in Snowflake¶
Para usar funções de contexto, como CURRENT_USER e dados de tabelas com políticas de acesso a linhas em um aplicativo Streamlit in Snowflake, um usuário com a função ACCOUNTADMIN deve conceder o privilégio global READ SESSION à função de proprietário do aplicativo Streamlit, conforme mostrado no exemplo a seguir:
Nota
Em um aplicativo Streamlit in Snowflake, é possível usar políticas de acesso a linhas que usam CURRENT_ROLE. Os aplicativos Streamlit in Snowflake são executados com direitos de proprietário, portanto, usar CURRENT_ROLE dentro de um aplicativo Streamlit sempre retorna a função de proprietário do aplicativo. Para obter mais informações, consulte Noções básicas sobre os direitos do proprietário e aplicativos Streamlit in Snowflake.
Exemplo: Como acessar dados em uma tabela com a política de acesso a linhas usando CURRENT_USER¶
É possível usar um aplicativo Streamlit in Snowflake para controlar o acesso a linhas em uma tabela protegida por uma política de acesso a linhas. Especifique a função CURRENT_USER no corpo da política de acesso a linhas e adicione a política de acesso a linhas à tabela.
O exemplo a seguir demonstra como controlar o acesso a uma tabela protegida por uma política de acesso a linhas em um aplicativo Streamlit in Snowflake.
Criar uma tabela e inserir dados:
Crie uma política de acesso a linhas:
Adicione a política de acesso a linhas à tabela:
Criar um aplicativo Streamlit.
Conceda o privilégio global READ SESSION à função de proprietário do aplicativo Streamlit:
Adicione o seguinte código ao seu aplicativo Streamlit: