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 controlado de consumidores. As especificações do aplicativo permitem que os consumidores revisem e aprovem ou rejeitem solicitações para as seguintes ações:

  • Conexões com pontos de extremidade externos ao Snowflake

  • Autenticação com serviços de terceiros

  • Compartilhamento de dados com outras contas Snowflake

Tipos de acesso controlado para Snowflake Native Apps

Os Snowflake Native Apps geralmente precisam interagir com recursos além da conta Snowflake do consumidor. Essas interações podem incluir conexão com serviços externos, autenticação com provedores terceirizados ou compartilhamento de dados com outras contas Snowflake.

Para acessar serviços externos e compartilhar dados, 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.

Compartilhamentos e listagens:

Permitem que os aplicativos compartilhem dados com provedores ou contas Snowflake de terceiros. Os compartilhamentos contêm objetos de banco de dados a serem compartilhados, e as listas fornecem o mecanismo para compartilhar dados entre contas e regiões.

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 externas ou compartilhamento de dados, os consumidores devem aprovar essas operaçõ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 integrações, compartilhamentos ou listas exigidos pelo aplicativo e aprovar o acesso a eles 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.

  • Os consumidores têm visibilidade e controle claros sobre as conexões externas e as solicitações de compartilhamento de dados.

Usar as especificações do aplicativo para aprovação do consumidor

As especificações do aplicativo permitem que você especifique qual acesso controlado o aplicativo requer. Após o consumidor instalar o aplicativo, ele analisa a especificação do aplicativo e aprova ou rejeita cada solicitação conforme necessário. Isso inclui solicitações de conexões externas, integrações de autenticação e permissões de compartilhamento de dados.

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 execute operações controladas, como conexões externas ou compartilhamento de dados. Essas propriedades são exibidas ao consumidor para aprovação. A definição de especificação de aplicativo contém um subconjunto de metadados e propriedades específico para cada tipo de operação: integração de acesso externo, integração de segurança ou listagem.

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 da especificação do aplicativo para uma EAI.

Para obter informações sobre a definição de especificação de aplicativo para listagens, consulte Criação de especificação do app para uma listagem.

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 automática de privilégios garante que o aplicativo tenha os privilégios necessários para criar objetos como integrações de acesso externo, integrações de segurança ou listagens. No entanto, os consumidores podem optar por recusar a especificação de aplicativo que permite conexões externas ou compartilhamento de dados. Ao desenvolver um aplicativo, você deve levar em consideração situações em que as especificações do aplicativo podem não ser aprovadas.

Considere os seguintes cenários:

  • Um aplicativo pode solicitar 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.

  • Uma solicitação de compartilhamento de dados pode ser recusada ou aprovada apenas parcialmente para algumas contas de destino, mas não para outras. O aplicativo deve lidar com esses casos de forma adequada.

  • Integrações de autenticação podem ser rejeitadas, exigindo que o aplicativo use métodos alternativos.

Como prática recomendada, sempre inclua um tratamento de erros adequado e forneça feedback claro aos consumidores sobre quais recursos exigem especificações aprovadas para funcionar.

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 a aprovação de uma especificação de acesso externo antes de fazer chamadas de API.

  • O preenchimento de dados pode precisar começar somente após a aprovação de uma especificação de listagem.

  • Os fluxos de OAuth podem precisar ser inicializados após a aprovação da integração de segurança.

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
Copy

Este exemplo mostra como adicionar um procedimento armazenado chamado callbacks.on_spec_update ao arquivo de manifesto. No script de configuração, os provedores podem adicionar um procedimento armazenado, conforme mostrado no exemplo a seguir:

CREATE OR REPLACE PROCEDURE callbacks.on_spec_update (
  name STRING,
  status STRING,
  payload STRING)
  ...
Copy

Este exemplo mostra a assinatura de um procedimento armazenado chamado callbacks.on_spec_update. Você inclui o código no corpo deste procedimento para verificar o status da especificação do aplicativo, criar objetos e executar ações conforme necessário.