Sicherheitsanforderungen und Best Practices für ein Snowflake Native App¶
In diesem Thema werden die Sicherheitsanforderungen und die Best Practices beschrieben, die Anbieter bei der Entwicklung einer Snowflake Native App beachten müssen. Alle Apps, die die unter Automatisierte Überprüfungen der Sicherheit beschriebenen Bedingungen erfüllen, müssen die in den folgenden Abschnitten beschriebenen Sicherheitsanforderungen einhalten:
Bemerkung
Die Sicherheitsanforderungen können sich ändern, da Snowflake ständig neue potenzielle Risiken überwacht.
Sicherheitsanforderungen an den Anwendungscode¶
Der in einem Anwendungspaket enthaltene App-Code muss den folgenden Sicherheitsanforderungen entsprechen:
Ihre App darf keinen Code von außerhalb des Anwendungspakets laden oder ausführen, mit Ausnahme der von Snowflake bereitgestellten Bibliotheken. Der gesamte App-Code, einschließlich aller Abhängigkeiten von Bibliotheken und des Setup-Codes, muss in der im Anwendungspaket definierten App-Version enthalten sein.
Der gesamte App-Code muss unverschlüsselt sein, d. h. der Code muss für Menschen lesbar sein. Diese Anforderung schließt minifizierten JavaScript-Code ein.
Bemerkung
Wenn eine App minimierten JavaScript-Code verwenden muss, muss sie eine entsprechende Quellcode-Map-Datei enthalten, die zur Wiederherstellung des nicht-minimierten Codes verwendet werden kann.
Alle Abhängigkeiten oder Bibliotheken mit kritischen oder bekannten Schwachstellen und Anfälligkeiten (Common Vulnerabilities and Exposures, CVE) müssen auf eine sichere Version aktualisiert werden, sofern verfügbar.
Sicherheitsanforderungen für die App-Funktionalität¶
Die folgenden Sicherheitsanforderungen gelten für die Funktionalität Ihrer App:
Alle Apps müssen den Kunden im Rahmen eines Freigabeangebots die folgenden Informationen zur Verfügung stellen:
Alle Funktionen und Features der App.
Alle Endpunkte im Internet und URLs, mit denen die App eine Verbindung herstellt.
Alle externen Funktionen in der App.
Alle von der App erfassten, gesammelten oder gespeicherten Verbraucherdaten.
Apps sollten alle nicht notwendigen Cookies verbieten.
Apps sollten Verbrauchern alle wichtigen Cookies mitteilen
Apps sollten so funktionieren, wie es im App-Freigabeangebot angegeben ist.
Alle Anweisungen zur Installation und Einrichtung der App müssen im App-Freigabeangebot enthalten sein.
Apps dürfen keine Kundengeheimnisse im Klartext speichern oder verlangen.
Jede Kommunikation zwischen der App und dem Internet sollte über eine HTTPS-Verbindung mit einem gültigen TLS-Zertifikat erfolgen.
Apps dürfen keine Funktionen aufweisen, die Snowflake, seinen Kunden oder Dritten Schaden zufügen könnten. Mögliche Schäden umfassen Folgendes, sind aber nicht beschränkt darauf:
Datenleck und/oder Datenverlust
Einschränkung des Zugriffs der Verbraucher auf deren Daten, sofern dies nicht ausdrücklich als Teil der App-Funktionalität vorgesehen ist, z. B. Datenmaskierung für Datenzugriffsrichtlinien
Übermäßiger Ressourcenverbrauch
Willkürliche Einschleusung/Ausführung von Code
Alle Verbindungen zu einer App, einschließlich webbasierter Weboberflächen und APIs, müssen sich zunächst mit einer von Snowflake bereitgestellten Authentifizierungsmethode authentifizieren. Jede App-spezifische Authentifizierung muss den Benutzern nach erfolgreicher Snowflake-Authentifizierung präsentiert werden.
Apps sollten keine öffentlichen Endpunkte erstellen, die Verbindungen zur App zulassen, ohne dass zuvor eine erfolgreiche Authentifizierung durch Snowflake erfolgt ist.
Sicherheitsanforderungen für App-Berechtigungen¶
Die folgenden Sicherheitsanforderungen gelten für die Berechtigungen, die von Ihrer App festgelegt werden:
Alle Apps müssen die folgenden Informationen in der Manifest-Datei enthalten:
Alle von der Apps geforderten Berechtigungen für alle Objekte.
Alle API-Integrationen
Apps dürfen nur die minimal notwendigen Berechtigungen anfordern, die für das Funktionieren der App erforderlich sind
Empfohlene bewährte Sicherheitsmethoden¶
Zusätzlich zu den Sicherheitsanforderungen, die durch den automatischen Sicherheitsscan auferlegt werden, empfiehlt Snowflake die folgenden Best Practices bei der Entwicklung einer Snowflake Native App. Wenn Sie diese Best Practices befolgen, verringert sich die Wahrscheinlichkeit, dass eine App bei der Sicherheitsüberprüfung blockiert wird.
Befolgen Sie sichere Praktiken des Lebenszyklus der Softwareentwicklung (Software Development Life Cycle, SDLC).
Überprüfen Sie den App-Code während des Entwicklungszyklus auf Schwachstellen und korrigieren Sie diese, bevor Sie eine App-Version erstellen.
Überprüfen Sie Bibliotheken von Drittanbietern auf Sicherheitslücken, und aktualisieren Sie sie auf die neueste sichere Version.
Überprüfen und aktualisieren Sie alle Bibliotheken von Drittanbietern in der App mindestens einmal im Quartal.
Befolgen Sie die von Snowflake empfohlenen bewährten Sicherheitsmethoden, wie im Folgenden beschrieben:
Best Practices für Sicherheit für eine App mit Containern¶
Zusätzlich zu den Best Practices bezüglich Sicherheit für einen Snowflake Native App-Kern, die in Empfohlene Best Practices beschrieben sind, gelten die folgenden Best Practices für Sicherheit für eine App mit Containern:
Schränken Sie die Verwendung von externen Abhängigkeiten und Bibliotheken ein, um die Angriffsfläche einer App zu minimieren und das Risiko von Supply Chain-Schwachstellen zu verringern.
Befolgen Sie die Anforderungen an die Härtung von Container-Images, wie z. B. die Verwendung minimaler Basis-Images, die Entfernung unnötiger Pakete und die sichere Konfiguration von Umgebungen mit langer Laufzeit.
Verwenden Sie sichere Kommunikationsprotokolle und Verschlüsselungen für die gesamte Kommunikation zwischen Containern und nach außen.
Erstellen Sie eine umfassende Protokollierung und Prüfung von Container-Aktivitäten und Datenzugriffsmustern.
Aktualisieren und patchen Sie Container-Images regelmäßig, um bekannte Schwachstellen und Sicherheitsprobleme zu beheben.
Implementieren Sie nur die erforderlichen Berechtigungen, um die Angriffsfläche von containerisierten App zu minimieren.
Sichere Verwaltung von Geheimnissen und sensiblen Daten unter Verwendung geeigneter Verschlüsselungs- und Zugriffssteuerungen.
Führen Sie gründliche Sicherheitstests und Schwachstellenbewertungen durch, bevor Sie Apps zur Prüfung einreichen.
Reagieren Sie umgehend auf Sicherheitsvorfälle, und arbeiten Sie bei der Antwort auf Vorfälle mit Snowflake zusammen.
Erstellen Sie eine klare und genaue Dokumentation der Funktionen, Abhängigkeiten und Sicherheitskontrollen der App.
Informieren Sie die Verbraucher über die sichere Nutzung und Konfiguration ihrer Apps und leiten Sie sie an.
Best Practices für die Entwicklung und Veröffentlichung eines Anwendungspakets¶
Um den Entwicklungs- und Veröffentlichungsprozess für eine Snowflake Native App zu rationalisieren, empfiehlt Snowflake die Erstellung zweier separater Pakete:
Anwendungspaket für Entwicklung
Das Anwendungspaket für die Entwicklung ist für schnelle Iterationen und Tests gedacht. Die Eigenschaft DISTRIBUTION sollte auf
INTERNAL
eingestellt sein. Dadurch wird sichergestellt, dass das Anwendungspaket intern bleibt und nicht an externe Verbraucher oder zur Überprüfung und Genehmigung durch Snowflake verteilt wird.Indem dieses Paket vom Produktionspaket getrennt gehalten wird, können Entwickler schnell Änderungen vornehmen und neue Features testen, ohne den Prozess der Sicherheitsüberprüfung für jede Iteration auszulösen.
Anwendungspaket für Produktion
Das Anwendungspaket der Produktion ist für die Veröffentlichung eines Anwendungspakets und dessen Verteilung an Snowflake zur Prüfung und Genehmigung sowie an externe Verbraucher gedacht. Für das Anwendungspaket der Produktion sollte die Eigenschaft DISTRIBUTION auf
EXTERNAL
eingestellt sein.Nur Versionen, die die Sicherheitsprüfung des Anbieters bestanden haben, sollten zu diesem Paket hinzugefügt werden. So wird sichergestellt, dass die App die geforderten Sicherheitsstandards erfüllt, bevor sie den Verbrauchern zur Verfügung gestellt wird.
Durch die Einhaltung der Best Practice, getrennte Entwicklungs- und Produktionspakete zu erstellen, können Entwickler einen effizienten Entwicklungszyklus aufrechterhalten und gleichzeitig sicherstellen, dass nur sichere und genehmigte Versionen der App veröffentlicht und an externe Verbraucher verteilt werden.