甚麼是 Docker 容器防護?

Docker® 擁有很多組件,保護它比保護其他舊的部署科技更為複雜。它需要一個全面的方式涵蓋網絡和應用程式防火牆,以至容器運作期防禦和主機防護。

Docker 容器防護

保護 Docker 容器與保護其他容器沒有甚麼分別,它需要一個全包做法,保護主機、網絡及所有在中間的一切。其動態組件令很多機構都覺得要確保容器保安並不容易,並需要不低的警覺性。

要考慮的事項

以下為保護您的 Docker 容器時要考慮的事項:

  • 利用資源配額
  • Docker 容器不會以根系統形式運作
  • 確保 Docker 容器註冊的安全
  • 使用可靠來源
  • 直接採用編碼源
  • 在設計 API 及網絡時包括保安在內

利用資源配額

利用資源配額,您可以限制容器的記憶體及 CPU 用量。在每一個容器設定資源配額,不單有助增強效率,更可防止環境內所有容器的資源分佈不平衡。

此亦讓您的容器能以預期的速度運作,最重要的是可以加強保安。假如一個容器被惡意內容感染,它不會容許大量資源進入容器,因為資源將根據配額而被截斷,故此可以減低攻擊的影響。這是一個簡單的保安策略,用戶透過指令行即可進行設定。

Docker 容器不會以根系統形式運作

在建構應用程式時,最佳實務守則就是要緊隨最低權限的原則,包括限制應用程式只可存取運作所需的資源。這亦是保護容器免被意外存取的其中一個好方法。

此舉對保護 Docker 容器十分重要,亦是 Docker 默認設定不把容器以根系統運行的原因。例如,假如您的容器化應用程式是易受攻擊的,而您又以根用戶方式運行,攻擊面將會增大及為攻擊者建立一個提昇權限的簡單路徑。

確保 Docker 容器註冊的安全

容器註冊表,特別是在 Docker 容器的註冊表,是令容器成為強大平台的主因。透過註冊表,您可以建立一個中央化庫存,儲存可以簡單快速下載的影像。不過,假如您不採用可靠的註冊,這亦會帶來風險。您應先詳細研究如 Docker Trusted Registry 的列表才決定採用那個註冊表。您可將 Docker 註冊表安裝在資訊科技基建上的防火牆後面,以減低互聯網帶來的風險。但即使如此,您仍然應該拒絕讓用戶從註冊表上載或下載。

雖然您可以選擇開放存取權限以方便運作,但這會帶來註冊表被大規模入侵的風險。要解決這風險,您可以實施角色為基存取管控,設定不同人員在註冊表的不同存取權限。

使用可靠來源

在好好保護註冊表後,您不會希望它被來自不可靠來源的容器影像感染。從公用系統下載隨時可用的容器影像看來十分簡單方便,不過,最重要的是要確保下載來源是可靠及經認證的。

為了審慎及保安原因,您應避免公共容器註冊表,而只採用 Docker 提供的註冊表,如 Docker Hub。要進一步保護 Docker 容器,您需要採用影像掃瞄工具以發掘及保護 Docker 影像內的漏洞。

直接採用編碼源

正如前述,為 Docker 容器確保影像來源的可靠性是十分重要的。不過,即使影像是來自可靠的註冊表,分析在影像中的編碼也是一個很好的實務守則,可確保影像沒有包含受感染的編碼。Docker 影像都包含原本編碼及來自外部來源的套件,而這可能並非來自可靠來源。

在此情況下,採用來源碼分析工具會是一個最佳選擇。當取得影像時,您可以下載 Docker 影像中所有套件的源碼,以掃瞄套件來找出編碼的來源。這讓您了解是否有影像包含已知漏洞,保護您的第一版建構。

在設計 API 及網絡時包括保安在內

Docker 容器採用了應用程式界面(API)及網絡來互相通訊。這些通訊令容器可以正常運作,但亦需要適當的保安及監控。雖然 API 及網絡實際上並非 Docker 容器的一部份,但它們仍是 Docker 必要使用的資源,故此也會導致容器的保安風險。因此,為了加強迅速阻截入侵的能力,您在設計 API 及網絡時應將簡易監控及保安也考慮在內。

總結

保護 Docker 容器並不容易,但所得好處是絕對值得的。它採取全面方式強化在每一層面的容器環境。雖然以上看似有很多最佳實務守則,但長遠而言會節省很多時間及助您降低保安風險。

相關研究

相關資料