甚麼是容器保安?

容器保安是使用保安工具及政策以確保所有容器都按預先計劃而運作的程序,包括保護基礎建設、軟件供應鏈、運作期及其中的一切。

容器保安

容器保安是一個持續性的程序。它應整合至開發流程,並應自動化以消除人手接觸點的數目,也需要擴展至底層基建的維護及運作部份。此亦即表示要保護建構流程的容器影像及運作期主機平台,與及應用程式層。將保安成為持續交付週期的一部份,令您可以舒緩業務風險及在不斷增加的攻擊面上減少漏洞。

保護容器時的主要憂慮是:

  • 容器主機的保安
  • 容器網絡流量
  • 容器內應用程式的保安
  • 應用程式內的惡意行為
  • 保護容器管理組件
  • 應用程式的基礎層面
  • 建構流程的完整性

網絡保安的目標是要確保所有容器都只會按預先計劃持續運作。

相關名稱

了解這些在使用容器時會見到的名字:Docker®、Kubernetes®、Amazon Web Services™ (AWS) 及 Microsoft®。

保護 Docker

在開始保護容器前,您需要先認識在相關技術上的主要廠商。Docker 是容器化業界的領導者,提供容器平台來建構、管理及保護應用程式。Docker 讓客戶可在任何地方部署傳統應用程式以至最新的微服務。像其他容器平台一樣,您需要確保擁有充分保護。進一步了解 Docker 容器保安

保護 Kubernetes

Kubernetes 是另一個需要認識的名字。Kubernetes 提供可攜帶及可擴展的開源平台來處理容器化工作負載及服務。雖然 Kubernetes 也提供保安功能,但您仍然需要專用的保安方案來維持安全,因為針對 Kubernetes 組群的攻擊正日益增加。進一步了解如何 保護 Kubernetes

Amazon Web Services 及容器保安

現在讓我們看看 Amazon Web Services(AWS)。AWS 了解容器的需要,能讓開發人員更快及更穩定地交付應用程式的能力。這亦是 AWS 提供 Amazon Elastic Container Service(Amazon ECS)的原因。這個可縮放的高性能容器協調服務專門支援 Docker 容器。它移除了管理虛擬機器及容器環境時的依賴性,並讓您更容易運作及延展 AWS 容器化應用程式。不過,正如前述的其他廠商一樣,要取得服務的最大效益,保安是不可或缺的。了解更多關於 AWS 容器保安

保護 Microsoft Azure Container 事件

最後就是 Microsoft® Azure™ Container Instances(ACI)。此方案讓開發人員在 Microsoft® Azure™ Public Cloud 上部署容器,而無須運作或管理底層基建。您可以很簡單的使用 Microsoft® Azure™ 入門網站來編造一個新容器,而Microsoft 則會自動按規模提供底層運算資源。Azure Container Instances 提供更高速度及靈活性,但亦需要充分保安才可以享受所有好處。

現在您已經認識所有主要廠商,讓我們進一步了解如何保護它們。了解如何保護 Microsoft Azure Container 事件

保護主機

保護主機應從選擇作業系統開始。在可能情況下,您應該採用為運作容器而優化的分布式作業系統。假如您使用積存的 Linux® 配送或 Microsoft® Windows®,您需要確保已停用或移除不必要的服務,並需整體強化作業系統。之後,更需要增加一層保安及監控工具以確保主機如您預期般運作。像應用程式管控及入侵防禦系統(IPS)這類工具在此情況下將極為有用。

當您的容器在生產上運作時,它需要與其他容器及資源互動。所有網絡交通流量必須通過 IPS 進行,以確保這些內部流量被監控及防護,而這亦會改變您部署保安管控的方式。除了在周邊應用少量極大型的傳統 IPS 引擎外,您亦可在每一部主機使用 IPS,讓您可以在不嚴重影響系統效能的情況下有效監控所有流量。

保護在容器內的應用程式

當容器在生產運作後,它會持續處理應用程式的數據、產生記錄及快取檔案。保安管控可協助確保它們只是恆常活動,而非惡意行為。在容器內容上運行的實時防惡意程式管控是重要一環。

而 IPS 亦在此擔當重要角色,它提供名為虛擬補丁的功能。假如一個漏洞被在遙距利用,IPS 引擎可偵測到試圖利用漏洞的行為,並會發出封包保護您的應用程式。這為您爭取時間在容器的下一版本對應根本原因,而無須急於推出緊急修補程式。

監控您的應用程式

當您在容器部署應用程式時,一個運行期應用程式自我防護(RASP)保安管控可以對您有幫助。這個保安管控在應用程式碼內運行,並經常在程式碼中阻截或鉤出主要的請求。除了結構化查詢語言(SQL)監控、依賴性檢查與修正、網址確認及其他管控外,RASP 亦可以解決保安中的其中一個大挑戰:根源識別。

這個處於應用程式碼之內的保安管控,可以協助連繫一宗保安事故中的資料及導致事件的程式碼。此程度的警覺性可說是無可匹敵的,並會大為強化您的保安態勢。

保護您的容器管理組合

以保安而言,管理組合可以協助協調經常被忽視的容器。任何重視容器部署的機構都無可避免地需要兩個重要的基建來協助管理整個程序,包括私隱容器註冊,如 Amazon ECS 及 Kubernetes 等,以協助協調容器部署。

結合容器註冊及 Kubernetes 讓您可以在重新在環境部署之前及之中自動為容器執行一套質素及保安標準。

註冊表可簡化分享容器程序及協助團隊在其他成員的項目上進行建構。不過,要確保每個容器都達到開發及保安的最低要求,您需要一個自動化掃瞄儀。在註冊表未察覺前已掃瞄每個容器,以找出已知漏洞、惡意程式及其他被暴露的機密,以便在下游減少事故數量。

此外,您亦須確保註冊表亦得到充分保護。它應在強化的系統或有信譽的雲服務上運行。即使在使用雲服務的情況下,您仍然需要了解共享責任模式及施行強大的角色為基措施來登入註冊表。

在協調方面,當 Kubernetes 開始在環境運行及部署後,您將可享有一系列優勢,協助確保團隊從環境中取得最大好處。Kubernetes 亦可提供實施運作及保安管控的功能,包括 Pod (組群層級資源)及網絡保安政策等,讓您可以執行不同選項以達至風險容忍度。

在安全基礎下建構應用程式:容器掃瞄

您需要準備就粹一套容器掃瞄流程,以確保用作建構板塊的容器是可靠並可防護常見威脅。此級別的工具會掃瞄容器內容,在它被用作應用程式建構板塊前尋找問題,並在容器被部署至生產前進行最後檢查。

適當實施的掃瞄將自然成為編碼程序的一部份。這是一個全自動化的程序,可在開發應用程式及其容器時簡單快速地識別任何問題。

確保建構流程的完整性

攻擊者者開始將攻擊改至持續整合/持續交付(CI/CD)流程的初期進行。假如攻擊者成功入侵您的建構伺服器、編碼庫或開發人員工仍站,他們就可以長時間逗留在您的環境內。您需要一套持續更新的強大保安管控。

從編碼庫開始至分枝政策一直擴展至容器庫,在整個流程實施強大的登入管控政策。您需要確保實行了最低權限原則(只提供與進行有關任務所需的存取權限),與及定期審核此存取權。

連繫一切

您需要全面的保安方式來保護您的容器,亦需要確保處理了機構內所有團隊的需要,與及確保您的方法可以自動化配合 DevOps 程序,能在限期前完成及在保護所有團隊的同時也可以快速交付應用程式。保安不可以再與現實脫節,或是在最後時刻出現並令機構改變工作流程。由開始即建構可靠的保安管控及自動化程序,可回應他們的擔心及更容易地縮窄團隊間的差異。

相關研究

相關資料