自動掃描上傳至 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 值區。
  2. Eventarc 服務會擷取這項上傳事件,並將這項新檔案通知 Cloud Run 服務。
  3. Cloud Run 服務會從未掃描的 Cloud Storage 值區下載新檔案,並將檔案傳遞給 ClamAV 惡意程式掃描器。
  4. 視惡意軟體掃描結果而定,服務會執行下列其中一項操作:
    • 如果 ClamAV 宣告檔案為乾淨檔案,檔案就會從未掃描的 Cloud Storage 值區移至「clean」Cloud Storage 值區。
    • 如果 ClamAV 宣告檔案含有惡意軟體,檔案就會從未掃描的 Cloud Storage 值區移至隔離的 Cloud Storage 值區。
  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) 上,而 CDN 會對這些下載作業設定頻率限制。如果有多個執行個體啟動並嘗試下載完整資料庫,系統可能會觸發速率限制。這會導致 Cloud Run 使用的外部 IP 位址遭到封鎖 24 小時。這麼做可防止 ClamAV 服務啟動,並防止下載惡意軟體資料庫更新。

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

成本最佳化

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

如要根據預測用量產生預估費用,請使用Pricing Calculator

提升作業效率

如要針對受感染的檔案觸發記錄檔型快訊,您可以使用 Logging 中的記錄項目。不過,設定這些警示不在本架構的討論範圍內。

部署作業

如要部署這個架構,請參閱為上傳至 Cloud Storage 的檔案部署自動化惡意軟體掃描功能

後續步驟