Exigences de sécurité et bonnes pratiques pour une Snowflake Native App¶
Cette rubrique décrit les exigences de sécurité et les meilleures pratiques que les fournisseurs doivent suivre lors du développement d’une Snowflake Native App. Toutes les applications qui remplissent les conditions décrites dans Examens de sécurité automatisés doivent se conformer aux exigences de sécurité décrites dans les sections suivantes :
Note
Les exigences de sécurité sont susceptibles de changer à mesure que Snowflake continue de surveiller de nouveaux risques potentiels.
Exigences de sécurité pour le code d’application¶
Le code d’application inclus dans un paquet d’application doit être conforme aux exigences de sécurité suivantes :
Votre application ne doit pas charger ou exécuter de code provenant d’un endroit extérieur au paquet d’application, à l’exception des bibliothèques fournies par Snowflake. Tout le code de l’application, y compris toutes les dépendances de la bibliothèque et le code d’installation, doit être inclus dans la version de l’application définie dans le paquet d’application.
Tout le code de l’application doit être non flouté, ce qui signifie que le code doit être lisible par l’homme. Cette exigence comprend le code JavaScript minifié.
Note
Si une application doit utiliser du code JavaScript minifié, elle doit inclure un fichier de mappage des sources correspondant qui peut être utilisé pour récupérer le code non minifié.
Toutes les dépendances ou bibliothèques présentant des vulnérabilités et expositions critiques ou très communes (CVE) doivent être mises à jour vers une version sécurisée, si elle est disponible.
Exigences de sécurité pour la fonctionnalité d’application¶
Les exigences de sécurité suivantes s’appliquent à la fonctionnalité de votre application :
Toutes les applications doivent fournir les informations suivantes aux clients dans le cadre d’une annonce :
Toutes les fonctionnalités et caractéristiques de l’application.
Tous les points de terminaison Internet et toutes les URLs que l’application utilise pour se connecter.
Toutes les fonctions externes de l’application.
Toute donnée du consommateur enregistrée, collectée ou stockée par l’application.
Les applications devraient interdire tous les cookies non essentiels.
Les applications doivent communiquer tous les cookies essentiels aux consommateurs
Les applications doivent fonctionner comme annoncé dans l’annonce des applications.
Toutes les instructions d’installation et de configuration de l’application doivent être incluses dans l’annonce de l’application.
Les applications ne doivent pas stocker ni nécessiter de secrets clients en texte brut.
Toute communication entre l’application et Internet doit se faire via une connexion HTTPS avec un certificat TLS valide.
Les applications ne doivent comporter aucune fonctionnalité susceptible de porter préjudice à Snowflake, à ses clients ou à des tiers. Les préjudices subis comprennent, mais ne sont pas limités à, ce qui suit :
Fuite et/ou perte de données.
Restriction de l’accès des consommateurs à leurs données, à moins que ce ne soit explicitement conçu comme faisant partie du fonctionnement de l’application, par exemple, le masquage des données pour les politiques d’accès aux données.
Consommation excessive de ressources.
Injection/exécution de code arbitraire.
Toutes les connexions à une application, y compris les interfaces utilisateur Web et les APIs, doivent d’abord s’authentifier à l’aide d’une méthode d’authentification fournie par Snowflake. Toute authentification spécifique à l’application doit être présentée aux utilisateurs une fois l’authentification Snowflake réussie.
Les applications ne doivent pas créer de points de terminaison publics autorisant les connexions à l’application sans une authentification réussie via Snowflake au préalable.
Exigences de sécurité pour les autorisations des applications¶
Les exigences de sécurité suivantes s’appliquent aux privilèges définis par votre application :
Toutes les applications doivent fournir les informations suivantes dans le fichier du manifeste :
Tous les privilèges requis par l’application sur tous les objets.
Toutes les intégrations API.
Les applications ne doivent demander que le minimum de privilèges nécessaires à leur fonctionnement.
Meilleures pratiques de sécurité recommandées¶
Outre les exigences de sécurité imposées par l’analyse de sécurité automatisée, Snowflake recommande les meilleures pratiques suivantes lors du développement d’une Snowflake Native App. Le respect de ces meilleures pratiques permet de réduire la probabilité qu’une application soit bloquée lors de l’examen de sécurité.
Suivez les pratiques sécurisées du cycle de vie du développement logiciel (SDLC).
Examinez le code de l’application pour détecter les vulnérabilités au cours du cycle de vie du développement et corrigez-les avant de créer une version de l’application.
Vérifiez que les bibliothèques tierces ne présentent pas de vulnérabilités et mettez-les à jour avec la dernière version sécurisée.
Examinez et mettez à jour toutes les bibliothèques tierces dans l’application au moins une fois par trimestre.
Suivez les meilleures pratiques de Snowflake en matière de sécurité décrites ci-après :
Meilleures pratiques de sécurité recommandées pour les consommateurs d’une application avec des conteneurs¶
En plus des meilleures pratiques de sécurité pour un cœur de Snowflake Native App décrit dans Meilleures pratiques de sécurité recommandées, les meilleures pratiques de sécurité suivantes s’appliquent à une application avec des conteneurs :
Limitez l’utilisation de dépendances et de bibliothèques externes pour réduire la surface d’attaque d’une application et réduire le risque de vulnérabilités de la chaîne d’approvisionnement.
Respectez les exigences de renforcement des images de conteneur, telles que l’utilisation d’images de base minimales, la suppression de paquets inutiles et la configuration sécurisée des environnements d’exécution.
Utilisez des protocoles de communication sécurisés et un chiffrement pour toutes les communications inter-conteneurs et externes.
Générez une journalisation et un audit complets des activités des conteneurs et des modèles d’accès aux données.
Mettez à jour et corrigez régulièrement les images de conteneurs pour corriger les vulnérabilités et les problèmes de sécurité connus.
Implémentez uniquement les privilèges requis pour réduire la surface d’attaque des applications conteneurisées.
Gestion des secrets et des données sensibles en toute sécurité, en utilisant un chiffrement et des contrôles d’accès appropriés.
Effectuez des tests de sécurité et des évaluations de vulnérabilité approfondis avant de soumettre des applications à examen.
Réagissez rapidement aux incidents de sécurité et collaborez avec Snowflake pendant la réponse aux incidents.
Fournissez une documentation claire et précise des fonctionnalités de l’application, des dépendances et des contrôles de sécurité.
Éduquez et guidez les consommateurs sur l’utilisation et la configuration sécurisées de leurs applications.
Meilleures pratiques pour le développement et la publication d’un paquet d’application¶
Pour rationaliser le processus de développement et de publication d’une Snowflake Native App, Snowflake recommande de créer deux paquets d’application distincts :
Paquet d’application de développement
Le paquet d’application de développement est destiné à des fins d’itération et de test rapides. Il devrait avoir sa propriété DISTRIBUTION définie sur
INTERNAL
. Cela garantit que le paquet d’application reste interne et n’est pas distribué à des consommateurs externes ou à l’analyse et à l’approbation de Snowflake.En gardant ce paquet séparé du paquet de production, les développeurs peuvent rapidement apporter des modifications et tester de nouvelles fonctionnalités sans déclencher le processus de révision de sécurité pour chaque itération.
Paquet d’application de production
Le paquet d’application de production est destiné à la publication d’un paquet d’application et à sa distribution dans Snowflake pour analyse et approbation et aux consommateurs externes. Le paquet d’application de production doit avoir sa propriété DISTRIBUTION définie sur
EXTERNAL
.Seules les versions ayant passé avec succès l’examen de sécurité du fournisseur doivent être ajoutées à ce paquet, garantissant ainsi que l’application répond aux normes de sécurité requises avant d’être mise à la disposition des consommateurs.
En suivant les meilleures pratiques consistant à disposer de paquets de développement et de production distincts, les développeurs peuvent maintenir un cycle de vie de développement efficace tout en garantissant que seules les versions sécurisées et approuvées de l’application sont publiées et distribuées aux consommateurs externes.