Permissão de acesso a uma conta de consumidor¶
Este tópico descreve como um consumidor pode permitir que o Snowflake Native App crie e acesse objetos em sua conta. Isto inclui conceder os privilégios solicitados por um aplicativo ou permitir o acesso a objetos existentes usando referências. Ele também descreve como permitir que um aplicativo use tabelas externas e Apache Iceberg™, que um provedor compartilha no aplicativo.
Privilégios e referências solicitados por um aplicativo¶
Em um Snowflake Native App simples, todos os objetos necessários ao aplicativo são criados dentro do objeto do aplicativo quando o script de configuração é executado durante a instalação. Todos os objetos necessários ao aplicativo são criados e acessados dentro do aplicativo instalado. O consumidor não precisa realizar nenhuma ação em sua conta.
No entanto, alguns aplicativos podem solicitar que o consumidor execute os seguintes tipos de ações em sua conta:
Criar um banco de dados ou warehouse.
Executar tarefas.
Acessar objetos existentes, por exemplo, uma tabela.
Existem dois tipos de acesso que um Snowflake Native App pode solicitar:
Privilégios que permitem que o aplicativo execute algumas operações no nível da conta. Um aplicativo pode solicitar os seguintes privilégios globais:
EXECUTE TASK
EXECUTE MANAGED TASK
CREATE WAREHOUSE
MANAGE WAREHOUSES
CREATE DATABASE
CREATE COMPUTE POOL
BIND SERVICE ENDPOINT
READ SESSION
Alguns aplicativos também podem solicitar o privilégio IMPORTED PRIVILEGES no banco de dados SNOWFLAKE. Consulte Concessão do privilégio IMPORTED PRIVILEGES no banco de dados SNOWFLAKE para obter detalhes.
Referências que permitem que o aplicativo acesse objetos que já existem na conta do consumidor e estão fora do objeto do aplicativo. Um provedor define as referências exigidas pelo aplicativo no arquivo
manifest.yml
.Após instalar o aplicativo, o consumidor pode autorizar o acesso a um objeto criando uma referência que associa o objeto ao aplicativo.
Um aplicativo pode solicitar acesso aos seguintes tipos de objetos e seus privilégios correspondentes:
Tipo de objeto
Privilégios permitidos
TABLE
SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES
VIEW
SELECT, REFERENCES
EXTERNAL TABLE
SELECT, REFERENCES
FUNCTION
USAGE
PROCEDURE
USAGE
WAREHOUSE
MODIFY, MONITOR, USAGE, OPERATE
API INTEGRATION
USAGE
Um consumidor pode aprovar essas solicitações usando Snowsight ou executando os comandos SQL conforme descrito nas seções a seguir.
Nota
Se você não conceder os privilégios solicitados ou não associar referências no objeto solicitado ao aplicativo, partes do aplicativo poderão não funcionar corretamente.
Gerenciamento de solicitações de acesso usando o Snowsight¶
Se um provedor implementar uma interface de usuário em um Snowflake Native App, um consumidor poderá realizar o seguinte usando Snowsight.
Visualize e conceda privilégios globais.
Autorize o acesso a objetos existentes na conta do consumidor.
Concessão de privilégios globais¶
Para conceder privilégios ou criar referências após a instalação de um aplicativo, faça o seguinte:
Faça login no Snowsight.
No menu de navegação, selecione Data Products » Apps.
Selecione o aplicativo.
Selecione o ícone Security na barra de ferramentas.
Selecione a guia Privileges.
As permissões de nível de conta solicitadas pelo aplicativo aparecem em Account level privileges.
Na seção Account-level privileges, selecione Review e, em seguida, alterne o controle deslizante para cada privilégio que deseja conceder.
Selecione Save.
Como revogar privilégios e acesso a objetos¶
Para revogar privilégios ou remover acesso a objetos, faça o seguinte:
Faça login no Snowsight.
No menu de navegação, selecione Data Products » Apps.
Selecione o aplicativo.
Selecione o ícone Security na barra de ferramentas.
Selecione a guia Privileges.
Para revogar um privilégio global, selecione o botão Edit e, em seguida, alterne o controle deslizante para o privilégio que deseja revogar.
Para revogar o acesso de um objeto específico, selecione o botão Delete e, em seguida, selecione Revoke Privilege.
Nota
Revogar privilégios ou remover o acesso de objetos pode tornar o aplicativo instável ou parar de funcionar.
Gerenciamento de privilégios para um aplicativo usando comandos SQL¶
Se o desenvolvedor do seu aplicativo não implementar uma interface para conceder privilégios, você deverá gerenciar as solicitações de acesso ao aplicativo usando comandos SQL.
Exibição dos privilégios solicitados por um aplicativo¶
Quando um provedor especifica os privilégios exigidos pelo aplicativo, a solicitação de privilégio é incluída como parte do aplicativo instalado. É possível exibir esses privilégios após instalar o aplicativo.
Para exibir os privilégios exigidos por um aplicativo, execute o comando SHOW PRIVILEGES, conforme mostrado no exemplo a seguir:
SHOW PRIVILEGES IN APPLICATION hello_snowflake_app;
Concessão de privilégios para um Snowflake Native App¶
Depois que um consumidor determina os privilégios solicitados por um aplicativo, ele pode conceder esses privilégios ao aplicativo.
Por exemplo, para conceder o privilégio EXECUTE TASK para um aplicativo, execute o comando GRANT PRIVILEGE como mostrado no exemplo a seguir:
GRANT EXECUTE TASK ON ACCOUNT TO APPLICATION hello_snowflake_app;
Concessão do privilégio MANAGE WAREHOUSES a um Snowflake Native App¶
O privilégio MANAGE WAREHOUSES permite que um aplicativo crie, modifique e use warehouses dentro da conta do consumidor. Para conceder o privilégio MANAGE WAREHOUSES a um aplicativo, use GRANT conforme mostrado no exemplo a seguir:
GRANT MANAGE WAREHOUSES ON ACCOUNT TO APPLICATION hello_snowflake_app;
Concessão do privilégio IMPORTED PRIVILEGES no banco de dados SNOWFLAKE¶
Alguns aplicativos podem solicitar que um consumidor conceda o privilégio IMPORTED PRIVILEGES SNOWFLAKE no banco de dados em sua conta. Este privilégio só pode ser concedido usando comandos SQL. Não pode ser concedido usando Snowsight. Se um aplicativo exigir esse privilégio, o provedor deve comunicar esse requisito ao consumidor, por exemplo, no arquivo README do aplicativo.
Para conceder o privilégio IMPORT no banco de dados SNOWFLAKE, execute o seguinte comando:
GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE TO APPLICATION hello_snowflake_app;
Nota
O privilégio IMPORTED PRIVILEGES permite que o aplicativo acesse informações sobre uso e custos associados à conta do consumidor. O consumidor deve garantir que deseja compartilhar essas informações com o aplicativo antes de conceder esse privilégio.
Habilitação de tabelas externas e Apache Iceberg™¶
O Snowflake Native App Framework permite que os provedores compartilhem tabelas externas e Apache Iceberg™ nos compartilhamentos do provedor com os consumidores no aplicativo. No entanto, os consumidores devem dar permissão ao aplicativo para acessar essas tabelas.
Considerações sobre segurança e custo¶
Ao permitir que um aplicativo acesse uma tabela externa ou Iceberg, os consumidores devem estar cientes do seguinte:
Tabelas externas e Iceberg podem representar riscos de exfiltração de dados para o consumidor. Por exemplo, se um aplicativo expõe uma exibição com uma tabela externa, um provedor pode determinar os tipos de consultas que o consumidor faz usando os logs de acesso do provedor de nuvem.
Tabelas externas e Iceberg podem incorrer em custos adicionais relacionados ao uso de entrada e saída, se o armazenamento de objeto com a tabela não estiver na mesma região onde o aplicativo é publicado.
Habilitação de tabelas externas e Iceberg usando Snowsight¶
Os provedores podem configurar o aplicativo para exibir uma caixa de diálogo para todos os consumidores para permitir que um aplicativo acesse tabelas externas ou Iceberg.
Para permitir que um aplicativo acesse uma tabela externa ou Iceberg:
Faça login no Snowsight.
No menu de navegação, selecione Data Products » Apps.
Selecione o aplicativo.
Selecione o ícone Security na barra de ferramentas.
Selecione a guia Privileges.
Em External data access, selecione Review.
Selecione Enable.
Habilitação de tabelas externas e Iceberg usando SQL¶
Para habilitar o acesso às tabelas externas e Iceberg usando SQL, utilize a função do sistema SET_APPLICATION_RESTRICTED_FEATURE_ACCESS, conforme mostrado no exemplo a seguir:
SELECT SYSTEM$SET_APPLICATION_RESTRICTED_FEATURE_ACCESS(hello_snowflake_app, 'external_data', ‘{"allowed_cloud_providers" : "all"}’);
Este comando permite que o aplicativo hello_snowflake_app
acesse as tabelas externas ou Iceberg que o aplicativo usa.
Para determinar se tabelas externas e Iceberg foram habilitadas para um aplicativo, use a função do sistema LIST_APPLICATION_RESTRICTED_FEATURES, conforme mostrado no exemplo a seguir:
SYSTEM$LIST_APPLICATION_RESTRICTED_FEATURES('hello_snowflake_app')
Esta função do sistema retorna um objeto JSON que indica se tabelas externas e Iceberg são permitidas para hello_snowflake_app
.