此頁面列出開發和執行 Databricks Apps 的重要最佳做法。 這些指導方針著重於安全性、效能和平臺需求。
一般最佳做法
使用 Azure Databricks 原生功能來處理數據。 應用程式計算已針對UI轉譯進行優化。 針對查詢和數據集使用 Databricks SQL,針對批處理使用 Lakeflow 工作,針對 AI 推理工作負載使用模型供應。 將繁重的資料處理卸載到這些服務,以避免效能問題。 在預期負載條件下測試您的應用程式,以驗證它是否符合您的需求。
實作正常關機處理。 您的應用程式在收到
SIGTERM訊號后,必須在15秒內關閉,否則會強制終止 。SIGKILL避免特殊許可權作業。 應用程式會以非特殊許可權使用者身分執行,而且無法執行需要提高許可權的動作,例如 root 存取權。 您無法使用
apt-get、yum或apk等套件管理員來安裝系統層級套件。 相反地,請使用 PyPI 中的 Python 套件或 npm 中的 Node.js 套件來管理您的應用程式相依性。了解平臺管理的網路功能。 要求會透過反向 Proxy 轉送,因此您的應用程式無法相依於要求的來源。 Azure Databricks 會處理 TLS 終止,並要求應用程式支援 HTTP/2 純文字 (H2C)。 請勿實作自定義 TLS 處理。
系結至正確的主機和埠。 您的應用程式必須監聽
0.0.0.0,並使用環境變數中指定的DATABRICKS_APP_PORT埠。 如需詳細資訊,請參閱 環境變數 。將容器啟動時間降至最低。 保持初始化邏輯輕量型,以減少冷啟動延遲。 避免在啟動期間封鎖大型相依性安裝或外部 API 呼叫等作業。 只有在需要時才載入大量資源。
登入 stdout 和 stderr。 Azure Databricks 會從標準輸出和錯誤數據流擷取記錄。 請使用這些設定進行所有記錄,以確保記錄顯示於 Azure Databricks UI。 避免將記錄寫入本機檔案。
正常處理非預期的錯誤。 實作全域例外處理,以防止因未攔截的錯誤而導致的當機。 傳回適當的 HTTP 錯誤回應,而不公開堆疊追蹤或敏感數據。
固定相依性版本。 在檔案中使用精確的
requirements.txt版本號碼,以確保組建之間環境的一致性。 避免使用未釘選或最新版本的套件。驗證並清理用戶輸入。 請一律驗證傳入數據並加以清理,以防止插入式攻擊或格式不正確的輸入,即使在內部面向應用程式中也是如此。
針對昂貴的作業使用記憶體內部快取。 快取經常使用的資料,例如查詢結果或 API 回應,以減少延遲並避免多餘的處理。 在多使用者應用程式中,謹慎使用
functools.lru_cache、cachetools或類似的庫,並仔細管理快取範圍。針對長時間執行的作業使用非同步請求模式。 避免等待作業完成的同步要求,這可能會逾時。相反地,請提出初始要求以啟動作業,然後定期查詢資源狀態或端點以檢查完成狀態。
安全性最佳做法
遵循最低許可權原則。 僅授與每個使用者或群組所需的許可權。 除非需要完全控制,否則請使用
CAN USE而非CAN MANAGE。 請參閱 許可權的最佳做法。仔細選擇身份驗證方法。 當應用程式的所有使用者對資源和資料的存取權都相同時,請使用服務主體。 只有在具有受信任應用程式作者和同儕審查應用程式程式碼的工作區中,當應用程式必須遵守呼叫使用者的權限時,才實作使用者驗證。
針對每個應用程式使用專用的服務主體。 請勿在應用程式或使用者之間共用服務主體認證。 只授與所需的最低許可權,例如
CAN USE或CAN QUERY。 當應用程式建立者離開您的組織時輪替服務主體認證。 請參閱 管理應用程式對資源的存取。隔離應用程式環境。 使用不同的工作區來分隔開發、預備和生產應用程式。 這可以防止在開發和測試期間意外訪問生產數據。
透過適當的運算存取資料。 請勿將應用程式設定為直接存取或處理資料。 使用 SQL 倉儲進行查詢、使用 Model Serving 進行 AI 推斷,以及使用 Lakeflow 作業進行批次處理。
管理秘密。 絕不會在環境變數中公開原始秘密值。 在應用程式設定中使用
valueFrom,並定期更新密鑰,尤其是在小組角色變更時。 請參閱最佳實務。最小化範圍和記錄用戶動作。 使用使用者授權時,請只要求應用程式所需的範圍,並使用結構化稽核記錄記錄所有使用者動作。 請參閱 用戶授權的最佳做法。
限制輸出網路存取。 只允許應用程式所需的網域,例如套件存放庫和外部 API。 使用試執行模式和拒絕記錄來驗證您的設定。 請參閱 設定網路原則的最佳做法。
遵循安全編碼作法。 參數化 SQL 查詢以防止注入攻擊並應用一般安全開發準則,例如輸入驗證和錯誤處理。 請參閱 語句執行 API:在倉儲上執行 SQL。
監控可疑活動。 定期查看稽核日誌是否有異常存取模式或未經授權的操作。 設定重要安全事件的警示。