Proteção da propriedade intelectual do provedor

Este tópico descreve como o Snowflake Native App Framework protege os dados do provedor censurando ou removendo informações sobre objetos compartilhados por um Snowflake Native App.

Sobre a proteção da propriedade intelectual no Snowflake Native App Framework

Quando um consumidor instala um Snowflake Native App, ele não tem permissão para visualizar os objetos dentro do objeto de aplicativo, a menos que um provedor conceda permissões nos objetos usando funções de aplicativo.

Em geral, quando um consumidor consulta metadados de objeto usando um esquema, exibição ou usa Snowsight para visualizar o Query Profile ou Query History para essas consultas, o Snowflake Native App Framework censura informações sobre os objetos dentro do objeto do aplicativo.

Informações censuradas do perfil de consulta

O Snowflake Native App Framework censura as informações do perfil de consulta nos seguintes contextos:

  • Consultas executadas quando o aplicativo é instalado ou atualizado.

  • Consultas originadas de um procedimento armazenado de propriedade do aplicativo.

  • Consultas contendo uma exibição ou função não segura de propriedade do aplicativo.

Para cada um desses tipos de consultas, Snowsight recolhe os dados do perfil de consulta em um único nó vazio em vez de exibir a árvore completa do perfil de consulta.

Informações censuradas do histórico de consultas

Para consultas relacionadas a Snowflake Native App, os campos query_text e error_message são censurados do histórico de consultas nos seguintes contextos:

  • As consultas são executadas quando o aplicativo é instalado ou atualizado.

  • Consultas originadas de um trabalho filho de um procedimento armazenado de propriedade do aplicativo.

Em cada uma dessas situações, a célula do histórico de consultas em Snowsight aparece em branco.

Informações censuradas de comandos e exibições SQL

Quando um consumidor usa o comando SHOW ou DESCRIBE para visualizar informações sobre o objeto do aplicativo ou os objetos pertencentes ao aplicativo, as informações sobre os detalhes da implementação são censuradas. Por exemplo, as definições de função e o corpo da função são censurados da saída desses comandos.

As informações sobre detalhes de implementação são censuradas da exibição ACCESS_HISTORY nos seguintes contextos:

  • Consultas geradas quando o aplicativo é instalado ou atualizado.

  • Consultas geradas por procedimentos armazenados e funções definidas pelo usuário pertencentes ao aplicativo.

Além disso, para exibições pertencentes ao aplicativo, as informações sobre a tabela base são editadas.

Funções de contexto bloqueadas

Para proteger informações relacionadas a objetos dentro de um objeto de aplicativo, o Snowflake Native App Framework bloqueia as seguintes funções de contexto:

Função de contexto

Bloqueado em conteúdo compartilhado (retorna nulo)

Bloqueado em scripts de configuração e procedimento armazenado e UDFs de propriedade do Snowflake Native App (lança uma exceção).

CURRENT_ROLE

CURRENT_ROLE_TYPE

CURRENT_USER

IS_ROLE_IN_SESSION

CURRENT_IP_ADDRESS

CURRENT_AVAILABLE_ROLES

CURRENT_SECONDARY_ROLES

ALL_USER_NAMES

GET_USERS_FOR_COLLABORATION

CURRENT_WAREHOUSE

SYSTEM$ALLOWLIST

Proteger o conteúdo compartilhado

Para proteger a privacidade e a integridade do conteúdo de dados de um provedor, o Snowflake Native App Framework inclui a seguinte restrição:

  • Os objetos compartilhados são somente leitura para um objeto de aplicativo e Snowflake Native App instalado.

  • Os objetos compartilhados não são expostos diretamente aos consumidores. Os objetos só são expostos por meio de uma exibição instalada quando o script de configuração é executado durante a instalação ou atualização do Snowflake Native App.

  • Somente o provedor pode atualizar o conteúdo compartilhado.

  • Somente os objetos a seguir podem ser compartilhados com um objeto de aplicativo ou Snowflake Native App instalado. Esses objetos devem ter certos privilégios:

    • Esquemas: apenas o privilégio USAGE pode ser concedido ao conteúdo compartilhado de um pacote de aplicativo.

    • Tabelas: apenas o privilégio SELECT pode ser concedido ao conteúdo compartilhado de um pacote de aplicativo. Tabelas com políticas definidas (acesso a linhas, mascaramento, baseada em tag etc.) não podem ser compartilhadas. As políticas podem ser definidas nos objetos quando eles são expostos aos consumidores.

    • Exibições: apenas o privilégio SELECT pode ser concedido ao conteúdo compartilhado de um pacote de aplicativo. Exibições com políticas definidas, incluindo acesso a linhas, mascaramento, baseada em tags etc., não podem ser compartilhadas.

Nota

Uma exibição, ou quaisquer exibições a partir das quais elas são compostas, não pode conter funções JavaScript, Java, Python ou Scala.

Para obter mais informações, consulte Permissão para que os consumidores acessem objetos compartilhados.