自動掃描上傳至 Cloud Storage 的檔案是否存在惡意軟體

Last reviewed 2024-07-16 UTC

這項參考架構說明如何建構事件導向管道,自動評估檔案是否含有木馬程式、病毒和其他惡意程式碼等惡意軟體。手動評估上傳至 Cloud Storage 的大量檔案,對大多數應用程式來說都太耗時。自動化程序可協助您節省時間並提高效率。

這個架構中的管道會使用 Google Cloud 產品,以及開放原始碼防毒引擎 ClamAV。您也可以使用任何其他防惡意軟體引擎,在 Linux 容器中執行隨選掃描。在此架構中,ClamAV 會在 Cloud Run 代管的 Docker 容器中執行。管道也會將記錄項目寫入 Cloud Logging,並將指標記錄至 Cloud Monitoring

架構

下圖為架構總覽:

惡意軟體掃描管道的架構。

架構顯示下列管道:

  • 使用者上傳的檔案掃描管道,可檢查上傳的檔案是否含有惡意軟體。
  • ClamAV 惡意軟體資料庫鏡像更新管道,可維護 ClamAV 所用惡意軟體資料庫的最新鏡像。

以下各節將詳細說明這些管道。

使用者上傳檔案的掃描管道

檔案掃描管道的運作方式如下:

  1. 使用者將檔案上傳至 未掃描的 Cloud Storage bucket。
  2. Eventarc 服務會擷取這項上傳事件,並將新檔案告知 Cloud Run 服務。
  3. Cloud Run 服務會從未掃描的 Cloud Storage bucket 下載新檔案,並傳遞至 ClamAV 惡意軟體掃描器。
  4. 服務會根據惡意軟體掃描結果,執行下列其中一項動作:
    • 如果 ClamAV 判定檔案沒有病毒,就會將檔案從未掃描的 Cloud Storage bucket 移至「clean」(乾淨) Cloud Storage bucket。
    • 如果 ClamAV 判定檔案含有惡意軟體,就會將檔案從未掃描的 Cloud Storage bucket 移至隔離的 Cloud Storage bucket。
  5. 服務會將這些動作的結果回報給 Logging 和 Monitoring,方便管理員採取行動。

ClamAV 惡意軟體資料庫鏡像更新管道

ClamAV 惡意軟體資料庫鏡像更新管道會將 Cloud Storage 中的資料庫,更新為最新的私人本機鏡像。這可確保每次更新只會存取一次 ClamAV 公開資料庫,下載較小的差異更新檔案,而非完整資料庫,避免受到速率限制。

這個管道的運作方式如下:

  1. Cloud Scheduler 工作設定為每兩小時觸發一次,這與 ClamAV freshclam 服務使用的預設更新檢查間隔相同。這項工作會對 Cloud Run 服務發出 HTTP POST 要求,指示服務更新惡意軟體資料庫鏡像。
  2. Cloud Run 執行個體會將惡意軟體資料庫鏡像從 Cloud Storage 值區複製到本機檔案系統。
  3. 接著,執行個體會執行 ClamAV CVDUpdate 工具,下載所有可用的差異更新,並套用至資料庫副本。
  4. 然後將更新後的惡意軟體資料庫鏡像複製回 Cloud Storage 值區。

啟動時,在 Cloud Run 執行個體中執行的 ClamAV freshclam 服務會從 Cloud Storage 下載惡意軟體資料庫。在執行階段,這項服務也會定期檢查並從 Cloud Storage 值區下載任何可用的資料庫更新。

設計須知

下列指南可協助您開發架構,滿足貴機構的可靠性、成本和營運效率需求。

可靠性

為有效掃描,ClamAV 惡意軟體掃描器必須維護最新的惡意軟體簽章資料庫。ClamAV 服務是透過 Cloud Run (無狀態服務) 執行。服務執行個體啟動時,ClamAV 一律會下載最新的完整惡意軟體資料庫,大小為數百 MB。

ClamAV 的公開惡意軟體資料庫代管於內容發布網路 (CDN),因此這些下載作業會受到速率限制。如果多個執行個體啟動並嘗試下載完整資料庫,可能會觸發頻率限制。這會導致 Cloud Run 使用的外部 IP 位址遭到封鎖 24 小時。這樣做可防止 ClamAV 服務啟動,以及下載惡意軟體資料庫更新。

此外,Cloud Run 會使用共用外部 IP 位址集區。因此,CDN 會將來自不同專案惡意軟體掃描執行個體的下載作業,視為來自單一地址,並觸發封鎖。

成本最佳化

這個架構使用下列 Google Cloud 計費元件:

您可以使用 Pricing Calculator 根據預測用量估算費用。

提升作業效率

如要觸發記錄檔型快訊,以通知您檔案遭到感染,可以使用 Logging 的記錄項目。不過,設定這些快訊不在本架構的討論範圍內。

部署

如要部署這項架構,請參閱「Deploy automated malware scanning for files uploaded to Cloud Storage」(部署自動惡意軟體掃描功能,掃描上傳至 Cloud Storage 的檔案)。

後續步驟