Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Auf dieser Seite sind wichtige bewährte Methoden für die Entwicklung und Ausführung von Databricks-Apps aufgeführt. Diese Richtlinien konzentrieren sich auf Sicherheits-, Leistungs- und Plattformanforderungen.
Allgemeine bewährte Methoden
Verwenden Sie systemeigene Azure Databricks-Features für die Datenverarbeitung. Die App-Berechnung ist für das Rendern der Benutzeroberfläche optimiert. Verwenden Sie Databricks SQL für Abfragen und Datasets, Lakeflow-Aufträge für batchverarbeitung und Model Serving für KI-Inference-Workloads. Entladen Sie die verarbeitung von umfangreichen Daten an diese Dienste, um Leistungsprobleme zu vermeiden. Testen Sie Ihre App unter erwarteten Ladebedingungen, um zu überprüfen, ob sie Ihren Anforderungen entspricht.
Implementieren Sie eine elegante Handhabung beim Herunterfahren. Ihre App muss innerhalb von 15 Sekunden herunterfahren, nachdem sie ein
SIGTERMSignal empfängt, oder sie wird mitSIGKILLerzwungen beendet.Vermeiden Sie privilegierte Vorgänge. Apps werden als nicht privilegierte Benutzer ausgeführt und können keine Aktionen ausführen, die erhöhte Berechtigungen erfordern, z. B. Stammzugriff. Pakete auf Systemebene können nicht mit Paketmanagern wie
apt-get,yumoderapkinstalliert werden. Verwenden Sie stattdessen Python-Pakete von PyPI oder Node.js Pakete von npm, um Ihre App-Abhängigkeiten zu verwalten.Grundlegendes zu plattformverwalteten Netzwerken. Anforderungen werden über einen Reverseproxy weitergeleitet, sodass Ihre App nicht vom Ursprung der Anforderungen abhängig ist. Azure Databricks verarbeitet TLS-Beendigung und erfordert apps, http/2 cleartext (H2C) zu unterstützen. Implementieren Sie keine benutzerdefinierte TLS-Behandlung.
Binden sie an den richtigen Host und Port. Ihre App muss auf
0.0.0.0lauschen und den in der UmgebungsvariablenDATABRICKS_APP_PORTangegebenen Port verwenden. Details finden Sie unter Umgebungsvariablen .Minimieren Sie die Startzeit des Containers. Initialisierungslogik einfach halten, um die Kaltstartlatenz zu reduzieren. Vermeiden Sie blockierungsvorgänge wie große Abhängigkeitsinstallationen oder externe API-Aufrufe während des Starts. Laden Sie schwere Ressourcen nur bei Bedarf.
Melden Sie sich bei stdout und stderr an. Azure Databricks erfasst Protokolle aus Standardausgabe- und Fehlerdatenströmen. Verwenden Sie diese Für alle Protokollierungen, um sicherzustellen, dass Protokolle in der Azure Databricks-Benutzeroberfläche sichtbar sind. Vermeiden Sie das Schreiben von Protokollen in lokale Dateien.
Behandeln Sie unerwartete Fehler ordnungsgemäß. Implementieren Sie die globale Ausnahmebehandlung, um Abstürze durch nicht abgefangene Fehler zu verhindern. Geben Sie ordnungsgemäße HTTP-Fehlerantworten zurück, ohne Stapelablaufverfolgungen oder vertrauliche Daten verfügbar zu geben.
Abhängigkeitsversionen festlegen. Verwenden Sie genaue Versionsnummern in Ihrer
requirements.txtDatei, um konsistente Umgebungen in allen Builds sicherzustellen. Vermeiden Sie die Verwendung von nicht angepinnten oder neuesten Versionen von Paketen.Überprüfen und berinfizieren Sie die Benutzereingabe. Überprüfen Sie eingehende Daten immer, und bereinigen Sie sie, um Einfügungsangriffe oder falsch formatierte Eingaben zu verhindern, auch in internen Apps.
Verwenden Sie speicherinternes Zwischenspeichern für teure Vorgänge. Zwischenspeichern häufig verwendeter Daten wie Abfrageergebnisse oder API-Antworten, um Latenz zu reduzieren und redundante Verarbeitung zu vermeiden. Verwenden Sie
functools.lru_cache,cachetoolsoder ähnliche Bibliotheken, und gehen Sie bei Caches in Apps mit mehreren Benutzern sorgfältig vor.Verwenden Sie asynchrone Anforderungsmuster für lange ausgeführte Vorgänge. Vermeiden Sie synchrone Anforderungen, die auf den Abschluss von Vorgängen warten, was zu einem Timeout führen kann. Stellen Sie stattdessen eine anfängliche Anforderung zum Starten des Vorgangs vor, und fragen Sie dann regelmäßig den Ressourcenstatus oder endpunkt ab, um den Abschlussstatus zu überprüfen.
Bewährte Sicherheitsmethoden
Folgen Sie dem Prinzip der geringsten Rechte. Erteilen Sie nur die berechtigungen, die für jeden Benutzer oder jede Gruppe erforderlich sind. Verwenden Sie
CAN USEstattCAN MANAGE, es sei denn, Vollzugriff ist erforderlich. Weitere Informationen finden Sie unter Bewährte Methoden für Berechtigungen.Wählen Sie Authentifizierungsmethoden sorgfältig aus. Verwenden Sie Dienstprinzipale, wenn der Zugriff auf Ressourcen und Daten für alle Benutzer der App identisch ist. Implementieren Sie nur die Benutzerauthentifizierung in Arbeitsbereichen mit vertrauenswürdigen App-Autoren und peergeprüften App-Code, wenn die App die Berechtigungen des aufrufenden Benutzers respektieren muss.
Verwenden Sie dedizierte Dienstprinzipale für jede App. Geben Sie Anmeldedaten des Dienstprinzipals nicht zwischen Apps oder Benutzern weiter. Erteilen Sie nur die erforderlichen Mindestberechtigungen, z. B.
CAN USEoderCAN QUERY. Erneuern Sie die Dienstprinzipal-Berechtigungen, wenn Ersteller von Anwendungen Ihre Organisation verlassen. Siehe Verwalten des App-Zugriffs auf Ressourcen.Isolieren sie App-Umgebungen. Verwenden Sie verschiedene Arbeitsbereiche, um Entwicklungs-, Staging- und Produktions-Apps zu trennen. Dadurch wird der versehentliche Zugriff auf Produktionsdaten während der Entwicklung und tests verhindert.
Greifen Sie auf Daten über die entsprechende Berechnung zu. Konfigurieren Sie Ihre App nicht für den direkten Zugriff oder die Verarbeitung von Daten. Verwenden Sie SQL-Lagerhäuser für Abfragen, Model Serving für KI-Ableitungen und Lakeflow-Aufträge für die Batchverarbeitung.
Verwalten sie geheime Schlüssel. Machen Sie niemals rohe geheime Werte in Umgebungsvariablen verfügbar. Verwenden Sie
valueFromin der App-Konfiguration und wechseln Sie geheime Schlüssel regelmäßig, insbesondere wenn sich die Teamrollen ändern. Weitere Informationen finden Sie unter "Bewährte Methoden".Minimieren Sie Bereiche und protokollieren Sie Benutzeraktionen. Fordern Sie bei Verwendung der Benutzerautorisierung nur die Bereiche an, die Ihre App benötigt, und protokollieren Sie alle Benutzeraktionen mit strukturierten Überwachungsdatensätzen. Siehe bewährte Methoden für die Benutzerautorisierung.
Einschränken des ausgehenden Netzwerkzugriffs. Lassen Sie nur die Domänen zu, die Ihre App benötigt, z. B. Paketrepositorys und externe APIs. Verwenden Sie den Trockenlaufmodus und Denialprotokolle, um Ihre Konfiguration zu überprüfen. Bewährte Methoden zum Konfigurieren von Netzwerkrichtlinien finden Sie unter "Bewährte Methoden".
Befolgen Sie sichere Codierungsmethoden. Parametrisieren Sie SQL-Abfragen, um Einfügungsangriffe zu verhindern und allgemeine Richtlinien für die sichere Entwicklung anzuwenden, z. B. Eingabeüberprüfung und Fehlerbehandlung. Siehe Anweisungsausführungs-API: Ausführen von SQL auf Lagerhäusern.
Überwachen Sie verdächtige Aktivitäten. Überprüfen Sie regelmäßig Überwachungsprotokolle auf ungewöhnliche Zugriffsmuster oder nicht autorisierte Aktionen. Richten Sie Warnungen für kritische Sicherheitsereignisse ein.