Visão geral das especificações do aplicativo¶
Este tópico descreve como um provedor pode configurar um Snowflake Native App para usar especificações de aplicativos para solicitar acesso a serviços e pontos de extremidade fora do Snowflake. As especificações do aplicativo permitem que os consumidores revisem e aprovem ou rejeitem as conexões externas exigidas por um aplicativo.
Acessar serviços externos de um Snowflake Native App¶
Alguns Snowflake Native Apps precisam se conectar a recursos que existem fora do Snowflake. Para lidar com conexões com esses recursos, o Snowflake fornece diferentes objetos para diferentes tipos de conexões.
Para acessar serviços externos, o Snowflake fornece os seguintes objetos:
- Integrações de acesso externo:
permitem acesso seguro a pontos de extremidade de rede externa dentro de uma função definida pelo usuário ou procedimento armazenado. Integrações de acesso externo usam regras de rede para restringir o acesso a locais de rede externos específicos.
- Integrações de segurança:
Permitir acesso seguro a provedores de autenticação de terceiros, como OAuth. As integrações de segurança fornecem autenticação e controle de acesso.
Ao usar a concessão automatizada de privilégios, um aplicativo tem os privilégios necessários para criar esses objetos ao executar o script de configuração. No entanto, como esses objetos permitem conexões fora do Snowflake, os consumidores devem aprovar essas conexões ao configurar o aplicativo.
Usar a concessão automatizada de privilégios com especificações de aplicativo oferece os seguintes benefícios:
Os consumidores não precisam criar manualmente a integração de acesso externo ou as integrações de segurança exigidas pelo aplicativo nem aprovar o acesso a elas usando referências.
Os provedores não precisam escrever um código que verifique a existência dos privilégios e objetos necessários durante a instalação ou atualização.
Uso de especificações de aplicativos para permitir que os consumidores aprovem conexões externas¶
As especificações de aplicativo permitem que um provedor especifique quais informações de conexão o aplicativo solicita. Depois que o consumidor instala o aplicativo, ele analisa a especificação e aprova ou recusa conforme necessário.
Para saber como usar especificações de aplicativos para solicitar o acesso a pontos de extremidade externos, consulte Solicitação de integrações de acesso externo (EAIs) com especificações do aplicativo. Para informações sobre como usar as especificações do aplicativo para solicitar acesso às integrações do OAuth, consulte Solicitação de integrações de segurança com especificações de aplicativos. Solicitação de integrações de acesso externo (EAIs) com especificações do aplicativo.
Definição da especificação de aplicativo¶
Uma definição de especificação de aplicativo contém as propriedades necessárias para que o aplicativo configure as conexões com recursos fora do Snowflake. Essas propriedades são exibidas para que sejam aprovadas pelo consumidor. Uma integração de acesso externo ou integração de segurança. A definição da especificação do aplicativo contém um subconjunto dos metadados e propriedades de uma integração de acesso externo ou integração de segurança.
Para informações sobre a definição da especificação do aplicativo para integrações de segurança, consulte Definição da especificação de aplicativo para integrações de segurança.
Para informações sobre a definição da especificação do aplicativo para integrações de acesso externo, consulte Definição de especificação de aplicativo para integrações de acesso externo.
Os números sequenciais de uma especificação de aplicativo¶
O número sequencial é semelhante a um número de versão para a especificação de aplicativo. Os números sequenciais são incrementados automaticamente quando um provedor altera a definição da especificação de aplicativo. A definição de uma especificação de aplicativo inclui detalhes de configuração e outras informações necessárias. Os campos que não fazem parte da definição, como description, não acionam uma atualização para o número sequencial.
Os números sequenciais permitem que provedores e consumidores identifiquem diferentes versões de uma especificação do aplicativo. Por exemplo, se um provedor adicionar um novo detalhe de configuração às especificações do aplicativo, o número de sequência será incrementado. Quando o consumidor visualiza a especificação do aplicativo, ele pode ver que o número de sequência foi alterado e pode revisar a especificação atualizada do aplicativo.
Práticas recomendadas ao usar especificações de aplicativos¶
A concessão automatizada de privilégios garante que o aplicativo tenha os privilégios necessários para criar integrações de acesso externo. No entanto, os consumidores podem optar por recusar a especificação de aplicativo que permite a conexão com os pontos de extremidade externos. Ao desenvolver um aplicativo, os provedores devem levar em conta situações em que as especificações de aplicativo podem não ser aprovadas
Por exemplo, um aplicativo pode solicitar o uso de várias portas de rede para uma integração de acesso externo, mas o consumidor pode permitir apenas uma. O aplicativo deve incluir lógica para lidar com erros que ocorrem se uma porta de rede não estiver disponível. Além disso, é uma prática recomendada capturar quaisquer exceções HTTP que possam ocorrer.
Uso de funções de retorno de chamada com especificações de aplicativo¶
Em alguns contextos, um aplicativo pode precisar saber quando o consumidor aprovou ou recusou uma especificação de aplicativo. Por exemplo, o aplicativo pode precisar aguardar até que uma especificação de aplicativo seja aprovada antes de criar um objeto.
Para lidar com essa situação, o Snowflake Native App Framework fornece um mecanismo que permite ao provedor definir um procedimento armazenado de retorno de chamada que é executado quando o consumidor aprova ou recusa uma especificação de aplicativo.
Os provedores podem adicionar um procedimento armazenado ao arquivo de manifesto, conforme mostrado no exemplo a seguir:
lifecycle_callbacks:
specification_action: callbacks.on_spec_update
Esse exemplo mostra como adicionar um procedimento armazenado chamado callbacks.on_spec_update ao arquivo de manifesto. Os provedores podem adicionar um procedimento armazenado ao script, como mostrado no exemplo a seguir:
CREATE OR REPLACE PROCEDURE callbacks.on_spec_update (
name STRING,
status STRING,
payload STRING)
...
Este exemplo mostra a assinatura de um procedimento armazenado chamado callbacks.on_spec_update. No corpo desse procedimento, os provedores incluem o código necessário para verificar o status da especificação de aplicativo, criar objetos e executar ações conforme necessário.