Important
這項功能位於 測試版 (Beta) 中。 Azure Databricks 在 Beta 測試版期間啟用了符合資格工作空間的程式碼安全掃描功能。
Important
安全掃描可能會產生誤報,且可能無法識別所有安全錯誤。
Databricks Apps 每次部署原始碼變更時,都會掃描應用程式的原始碼,找出常見的安全問題。 掃描不會阻擋部署,也不會導致部署失敗。 發現會顯示在應用程式的安全性頁面,應用程式管理員可以檢視並進行分流。
程式碼安全掃描的運作原理
程式碼安全掃描會在部署過程中對應用程式的原始碼進行靜態分析:
- 執行於原始碼變更:部署原始碼變更時,掃描會自動執行。 若部署重用現有建置且未更改原始碼,則不會被掃描。
- 只讀取原始碼:掃描器會分析你的原始碼而不執行原始碼,且不會修改你的應用程式。
- 非阻塞:掃描器會報告安全發現,但不會阻擋或使部署失敗。 根據發現項目的嚴重程度及您的安全需求進行審查與處理。
- 故障安全:若掃描無法完成,結果會被記錄為不可用而非乾淨,因此遺失掃描絕不會被誤認為已通過掃描。
掃描會偵測到什麼
程式碼安全掃描只分析你應用程式的原始碼。 它不會掃描你應用程式的相依關係,也不會對執行中的應用程式進行動態分析。
掃描器使用由 Azure Databricks 為 Databricks 應用程式選擇、建立並調整的偵測規則。 Azure Databricks 可能會隨時間新增、移除或更新規則,以提升偵測覆蓋率與準確度。 這些規則偵測常見的漏洞類別,包括:
- 硬編碼認證資訊與機密
- SQL 注入
- 跨網站腳本攻擊 (XSS)
- 伺服器端請求偽造(SSRF)
- 路徑穿越
- 不安全的反序列化
- 允許跨來源資源共享(CORS)的設定
- 不安全的 YAML 載入
- 使用者(代表)權杖的洩露
備註
掃描結果正常並不保證你的應用程式是安全的。 掃描器會檢查特定的一組問題,因此其規則未涵蓋的問題將不會被偵測到。 請維持自己的程式碼審查和安全措施,尤其是處理敏感資料的應用程式。 更多安全指引,請參閱 安全最佳實務。
查看安全性發現結果
您必須對應用程式具有 CAN MANAGE 權限,才能查看其安全發現。 請參閱 設定 Databricks 應用程式的許可權。
查看結果:
- 在工作區中,開啟該應用程式。 請參閱 檢視 Databricks 應用程式的詳細數據。
- 選取 [安全性] 索引標籤。
安全性頁面顯示所選部署的發現,並依檔案分組。 每項發現包括:
- 相符的檢查
- 檔案路徑與行號
- 嚴重程度
- 問題描述
研究結果使用以下嚴重程度等級:
- 嚴重:高嚴重性問題,例如可能的漏洞,應先處理,然後再依賴該應用程式。
- 警告:這是個潛在問題,如果這適用於你的應用程式,應該檢視並修正。
- 資訊:一個風險較低的觀察或安全編碼建議。
頁面頂端的摘要顯示未解決發現項目數量、關鍵發現項目數量、整體風險等級,以及您已解決或忽略的發現項目數量。 風險等級反映你未處理的發現及其嚴重性;你解決或忽略的發現不計入風險等級。 依嚴重程度篩選發現項目,聚焦於最重要的議題。
若要檢視先前部署的結果,請使用程式碼版本選擇器選擇先前的部署。
分診結果
分類處理讓你追蹤你已經處理過哪些結果項目。 和查看發現一樣,你必須在應用程式上取得 CAN MANAGE 權限才能進行分類處理。
每個發現具有以下其中一種狀態:
- 開啟:新發現的預設狀態。
- 已解決:在你解決根本問題後,將發現項目標記為已解決。
- 忽略:忽略不適用於你的應用程式,或你已接受為已知風險的發現項目。
要對發現項目進行分類處理,請在該發現項目上選擇「標記為已解決」或「忽略」。 要將發現項目移回開啟狀態,請選擇 「重新開啟」。 要同時分類處理多個發現項目,選擇多個發現項目並批量套用一個動作。
分類狀態會針對每個發現分別儲存,並在部署間持續存在。 如果同樣的問題在後續部署出現,系統會保留你設定的狀態,這樣你就不會重新分流已經審查過的問題。
掃描結果
安全性頁面反映部署掃描的結果。 掃描結果描述掃描發現了什麼,掃描狀態則表示掃描是否完成。
結果反映掃描執行時的偵測規則。 Azure Databricks 在規則變更時不會重新掃描現有部署,因此早期結果(包括無安全發現)可能不反映當前規則。 下一次原始碼變更時,新的掃描會自動執行。
以下結果描述了掃描結果:
| 結果 | Description |
|---|---|
| 未發現安全性問題 | 掃描完成,依目前規則集未發現任何問題。 |
| 結果 | 掃描發現了一個或多個問題需要審查和分類處理。 |
以下狀態描述掃描本身的狀態:
| Status | Description |
|---|---|
| 正在掃描此部署作業 | 掃描正在進行中。 掃描結束後頁面會自動更新。 |
| 掃描不完整 | 掃描有執行,但跳過了一些檔案或規則,結果可能不完整。 |
| 掃描結果無法取得 | 這次部署的掃描無法完成。 |
| 這次部署未被掃描 | 此次部署重用了現有的建置,且未更改原始碼。 程式碼變更後,請重新部署以進行掃描。 |