Requisitos de segurança e melhores práticas para um Snowflake Native App

Este tópico descreve os requisitos de segurança e as melhores práticas que os provedores devem seguir ao desenvolver um Snowflake Native App. Todos os aplicativos que atendem às condições descritas em Revisões de segurança automatizadas devem estar em conformidade com os requisitos de segurança descritos nas seções a seguir:

Nota

Os requisitos de segurança estão sujeitos a alterações à medida que a Snowflake continua monitorando novos riscos potenciais.

Requisitos de segurança para o código do aplicativo

O código do aplicativo incluso em um pacote de aplicativo deve estar em conformidade com os seguintes requisitos de segurança:

  1. Seu aplicativo não deve carregar ou executar nenhum código de fora do pacote do aplicativo, exceto bibliotecas fornecidas pelo Snowflake. Todo o código do aplicativo, incluindo todas as dependências da biblioteca e o código de configuração, deve ser incluso na versão do aplicativo definida no pacote do aplicativo.

  2. Todo código de aplicativo deve estar desofuscado, o que significa que o código deve ser legível por humanos. Este requisito inclui código JavaScript minificado.

    Nota

    Se um aplicativo precisar usar código JavaScript minimizado, ele deverá incluir um arquivo de mapa de origem correspondente que possa ser usado para recuperar o código não minimizado.

  3. Todas as dependências ou bibliotecas com vulnerabilidades e exposições comuns críticas ou altas (CVE) devem ser atualizadas para uma versão segura, se disponível.

Requisitos de segurança para funcionalidade do aplicativo

Os seguintes requisitos de segurança se aplicam à funcionalidade de seu aplicativo:

  1. Todos os aplicativos devem fornecer as seguintes informações aos clientes como parte de uma listagem:

    1. Todas as funcionalidades e recursos do aplicativo.

    2. Todos os pontos de extremidade e URLs da Internet aos quais o aplicativo se conecta.

    3. Todas as funções externas no aplicativo.

    4. Quaisquer dados do consumidor registrados, coletados ou armazenados pelo aplicativo.

      1. Os aplicativos devem proibir todos os cookies não essenciais.

      2. Os aplicativos devem comunicar todos os cookies essenciais aos consumidores

  2. Os aplicativos devem funcionar conforme anunciado na listagem de aplicativos.

  3. Todas as instruções de instalação e configuração do aplicativo devem ser inclusas na listagem do aplicativo.

  4. Os aplicativos não devem armazenar ou exigir nenhum segredo de cliente em texto simples.

  5. Qualquer comunicação entre o aplicativo e a Internet deve ser feita por meio de uma conexão HTTPS com um certificado TLS válido.

  6. Os aplicativos não devem ter nenhuma funcionalidade que possa causar danos à Snowflake, seus clientes ou terceiros. Danos incluem, mas não estão limitados a:

    1. Vazamento e/ou perda de dados;

    2. Restringir o acesso do consumidor aos seus dados, a menos que seja explicitamente projetado como parte da funcionalidade do aplicativo, por exemplo, mascaramento de dados para políticas de acesso a dados.

    3. Consumo excessivo de recursos.

    4. Injeção/execução de código arbitrário.

  7. Todas as conexões com um aplicativo, incluindo interfaces de usuário baseadas na Web e APIs, devem primeiro ser autenticadas usando um método de autenticação fornecido pelo Snowflake. Qualquer autenticação específica do aplicativo deve ser apresentada aos usuários após a autenticação do Snowflake ser bem-sucedida.

  8. Os aplicativos não devem criar nenhum ponto de extremidade público que permita conexões com o aplicativo sem uma autenticação bem-sucedida por meio do Snowflake primeiro.

Requisitos de segurança para permissões de aplicativos

Os seguintes requisitos de segurança se aplicam aos privilégios definidos por seu aplicativo:

  1. Todos os aplicativos devem fornecer as seguintes informações no arquivo de manifesto:

    1. Todos os privilégios exigidos pelo aplicativo em todos os objetos.

    2. Todas as ntegrações de API

  2. Os aplicativos devem solicitar apenas o conjunto mínimo de privilégios necessários para que o aplicativo funcione.

Melhores práticas para desenvolver e publicar um pacote de aplicativo

Para agilizar o processo de desenvolvimento e publicação de um Snowflake Native App, a Snowflake recomenda a criação de dois pacotes de aplicativo separados:

  • Pacote de aplicativo de desenvolvimento

    O pacote de aplicativo de desenvolvimento é destinado a propósitos de iteração e testes rápidos. Sua propriedade DISTRIBUTION deve ser definida como INTERNAL. Isso garante que o pacote do aplicativo permaneça interno e não seja distribuído para consumidores externos ou para verificação e aprovação da Snowflake.

    Ao manter este pacote separado do pacote de produção, os desenvolvedores podem fazer alterações rapidamente e testar novos recursos sem acionar o processo de revisão de segurança para cada iteração.

  • Pacote de aplicativo de produção

    O pacote de aplicativo de produção destina-se à publicação de um pacote de aplicativo e sua distribuição ao Snowflake para verificação e aprovação, bem como aos consumidores externos. O pacote do aplicativo de produção deve ter sua propriedade DISTRIBUTION definida como EXTERNAL.

    Somente versões que passaram pela revisão de segurança do provedor devem ser adicionadas a este pacote, garantindo que o aplicativo atenda aos padrões de segurança exigidos antes de ser disponibilizado aos consumidores.

Ao seguir as práticas recomendadas de ter pacotes de desenvolvimento e produção separados, os desenvolvedores podem manter um ciclo de vida de desenvolvimento eficiente, garantindo que apenas versões seguras e aprovadas do aplicativo sejam publicadas e distribuídas para consumidores externos.