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:
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.
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.
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:
Todos os aplicativos devem fornecer as seguintes informações aos clientes como parte de uma listagem:
Todas as funcionalidades e recursos do aplicativo.
Todos os pontos de extremidade e URLs da Internet aos quais o aplicativo se conecta.
Todas as funções externas no aplicativo.
Quaisquer dados do consumidor registrados, coletados ou armazenados pelo aplicativo.
Os aplicativos devem proibir todos os cookies não essenciais.
Os aplicativos devem comunicar todos os cookies essenciais aos consumidores
Os aplicativos devem funcionar conforme anunciado na listagem de aplicativos.
Todas as instruções de instalação e configuração do aplicativo devem ser inclusas na listagem do aplicativo.
Os aplicativos não devem armazenar ou exigir nenhum segredo de cliente em texto simples.
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.
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:
Vazamento e/ou perda de dados;
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.
Consumo excessivo de recursos.
Injeção/execução de código arbitrário.
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.
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:
Todos os aplicativos devem fornecer as seguintes informações no arquivo de manifesto:
Todos os privilégios exigidos pelo aplicativo em todos os objetos.
Todas as ntegrações de API
Os aplicativos devem solicitar apenas o conjunto mínimo de privilégios necessários para que o aplicativo funcione.
Práticas recomendadas de segurança¶
Além dos requisitos de segurança impostos pela verificação de segurança automatizada, a Snowflake recomenda as seguintes práticas recomendadas ao desenvolver um Snowflake Native App. Seguir essas práticas recomendadas ajuda a reduzir a probabilidade de um aplicativo ser bloqueado durante a revisão de segurança.
Siga as práticas do ciclo de vida de desenvolvimento de software seguro (SDLC).
Revise o código do aplicativo em busca de vulnerabilidades durante o ciclo de vida de desenvolvimento e corrija-as antes de criar uma versão do aplicativo.
Revise as bibliotecas de terceiros em busca de vulnerabilidades e atualize-as para a versão segura mais recente.
Revise e atualize todas as bibliotecas de terceiros no aplicativo pelo menos uma vez por trimestre.
Siga as práticas recomendadas de segurança do Snowflake, conforme descrito a seguir:
Práticas recomendadas de segurança para um aplicativo com contêineres¶
Além das práticas recomendadas de segurança para um Snowflake Native App principal descritas em Práticas recomendadas de segurança, as seguintes práticas recomendadas de segurança se aplicam a um aplicativo com contêineres:
Limite o uso de dependências e bibliotecas externas para minimizar a superfície de ataque de um aplicativo e reduzir o risco de vulnerabilidades na cadeia de suprimentos.
Siga os requisitos de proteção de imagem de contêiner, como o uso de imagens base mínimas, remoção de pacotes desnecessários e configuração segura de ambientes de tempo de execução.
Utilize protocolos de comunicação seguros e criptografia para todas as comunicações entre contêineres e externas.
Gere registro e auditoria abrangentes de atividades de contêiner e padrões de acesso a dados.
Atualize e aplique patches nas imagens de contêiner regularmente para corrigir vulnerabilidades e problemas de segurança conhecidos.
Implemente apenas os privilégios necessários para minimizar a superfície de ataque de aplicativos em contêineres.
Gerencie segredos e dados confidenciais com segurança, usando criptografia e controles de acesso apropriados.
Realize testes de segurança completos e avaliações de vulnerabilidade antes de enviar aplicativos para análise.
Responda prontamente a incidentes de segurança e colabore com a Snowflake durante a resposta a incidentes.
Forneça documentação clara e precisa da funcionalidade do aplicativo, dependências e controles de segurança.
Educar e orientar os consumidores sobre o uso seguro e a configuração de seus aplicativos.
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.