Azure 容器執行個體的安全性考量

本文介紹使用 Azure 容器執行個體來執行容器應用程式的安全性考量。 主題包括:

  • 管理 Azure 容器執行個體映像與祕密的安全性建議
  • 整個容器生命週期中容器生態系統的考量,適用於任何容器平台

如需可協助改善部署安全性狀態的建議,請參閱適用於容器執行個體的 Azure 安全性基準

Azure 容器執行個體的安全性建議

使用私人登錄

容器是從一或多個存放庫中儲存的映像建置的。 這些存放庫可以屬於公開登錄 (例如 Docker Hub) 或私人登錄。 私人登錄的範例是 Docker Trusted Registry,可安裝於內部部署或虛擬私人雲端。 您也可以使用雲端式私人容器登錄服務,包括 Azure Container Registry

公開可用的容器映像不保證安全性。 容器映像包含多個軟體層,每個軟體層可能各有弱點。 為了協助降低攻擊的威脅,您應該從私人登錄儲存和擷取映像,例如 Azure Container Registry 或 Docker Trusted Registry。 除了提供受控私人登錄之外,Azure Container Registry 還可透過適用於基本驗證流程的 Microsoft Entra ID 來支援服務主體式驗證。 這類驗證包括唯讀 (提取)、寫入 (推送) 和其他權限的角色型存取權。

監視與掃描容器映像

利用解決方案來掃描私人登錄中的容器映像,並找出潛在的弱點。 請務必了解不同解決方案所提供的威脅偵測深度。

例如,Azure Container Registry 選擇性地與適用於雲端的 Microsoft Defender 整合,以自動掃描推送至登錄的所有 Linux 映像。 適用於雲端的 Microsoft Defender 整合式 Qualys 掃描器會偵測映像弱點、將這些弱點分類,並提供補救指引。

也可以透過 Azure Marketplace 取得安全性監視與映像掃描解決方案,例如 TwistlockAqua Security

保護認證

容器可以分散到數個叢集和 Azure 區域。 因此,您必須保護登入或 API 存取所需的認證,例如密碼或權杖。 請確定只有具備權限的使用者可以在傳輸和待用時存取這些容器。 詳細記錄所有認證秘密,然後要求開發人員使用專為容器平台設計的新興秘密管理工具。 請確定您的解決方案包括加密的資料庫、傳輸中密碼資料的 TLS 加密,以及最低權限的 Azure 角色型存取控制 (Azure RBAC)Azure Key Vault 是用於保護容器化應用程式的加密金鑰與祕密 (例如憑證、連接字串、密碼) 雲端服務。 由於這項資料相當敏感且攸關業務,請保護金鑰保存庫的存取權,以便僅供獲得授權的應用程式和使用者存取。

容器生態系統的考量

下列安全性措施 (已妥善實作且有效管理) 可協助您保護容器生態系統。 這些量值適用於整個容器生命週期,從開發到生產環境部署,以及一系列容器協調器、主機與平台。

使用弱點管理作為容器開發生命週期的一部分

藉由在整個容器開發生命週期中使用有效的弱點管理,您可以提升找出並解決安全性疑慮的機率,以免造成更嚴重的問題。

掃描弱點

由於隨時可能發現新的弱點,因此請持續掃描並找出弱點。 將弱點掃描納入整個容器生命週期:

  • 在開發管道中最後檢查時,您應該先對容器執行弱點掃描,再將映像推送至公用或私人登錄。
  • 繼續掃描登錄中的容器映像,以找出開發期間可能遺漏的任何瑕疵,並針對在容器映像中使用的程式碼,解決可能存在的任何新發現弱點。

將映像弱點對應至正在執行的容器

您必須具備將容器映像中識別的弱點對應至執行中容器的方法,以便避免或解決安全性問題。

確保在您的環境中僅使用已核准的映像

容器生態系統中有足夠的變更和變動性,而不需要允許未知的容器。 只允許核准的容器映像。 使用工具和程序進行監視,並防止使用未經核准的容器映像。

降低攻擊面並防止開發人員發生重大安全性錯誤的有效方式,就是針對在開發環境中使用容器映像的流程進行控制。 例如,您可能會將單一 Linux 發行版本批准為基底映像,最好是精簡版 (Alpine 或 CoreOS,而不是 Ubuntu),使潛在攻擊面降到最低。

映像簽署或指紋可以提供監管鏈,讓您驗證容器的完整性。 例如,Azure Container Registry 支援 Docker 的內容信任模型,可讓映像發行者簽署推送至登錄的映像,並讓映像取用者只提取已簽署的映像。

只允許核准的登錄

確保環境只使用已核准映像的延伸模組,以僅允許使用已核准的容器登錄。 要求使用核准的容器登錄可限制引進未知弱點或安全性問題的可能性,藉此減少暴露在風險中的機會。

確保整個生命週期的映像完整性

管理整個容器生命週期安全性的其中一部分,是要在更改登錄中容器映像或將其部署至生產環境時,確保其完整性。

  • 即使映像所含的弱點再輕微,也不應允許該映像在生產環境中執行。 在生產環境中部署的所有映像,最好是儲存於只有少數幾個選定人員可存取的私人登錄中。 請不要保存太多生產映像,以便您能夠有效管理。

  • 因為要從可公開使用的容器映像中指出軟體的來源很困難,所以要從來源建置映像,以確保知道映像層的來源。 當自行建置的容器映像出現弱點,客戶可以很快地找到解決途徑。 使用公開映像,客戶就必須找到公開映像的根源才能加以修正,或從發佈者取得其他安全的映像。

  • 在生產環境中部署的映像即使經過徹底掃描,也不保證會是應用程式存留期間的最新映像。 針對先前未知的映像層或在部署生產環境後才導入的映像層,系統可能會報告它們有安全性弱點。

    定期稽核生產環境中所部署的映像,以找出過期或已有一段時間未更新的映像。 您可以使用藍綠部署方法與輪流升級機制來更新容器映像,而不需要停機。 您可以使用上一節所述的工具來掃描映像。

  • 使用持續整合 (CI) 管線搭配整合式安全性掃描來建置安全映像,並將其推送至您的私人登錄。 CI 解決方案內建的弱點掃描,可確保通過所有測試的映像都會推送至用來部署生產工作負載的私人登錄。

    CI 管線失敗則可確保有弱點的映像不會推送至用於部署生產工作負載的私人登錄。 其也會在有大量映像時自動掃描映像是否安全。 否則,手動稽核映像中是否有安全性弱點會是一件痛苦、冗長又容易出錯的工作。

在執行階段強制使用最低權限

最低權限的概念是也適用於容器的基本安全性最佳做法。 當弱點遭到惡意探索時,通常會讓攻擊者取得遭入侵應用程式或處理程序所擁有的存取權和權限。 確保容器以完成作業所需的最低權限和存取權運作,可讓您不容易暴露於風險中。

藉由移除不需要的權限來減少容器攻擊面

您也可以從容器執行階段移除任何未使用或不必要的處理程序或權限,使潛在攻擊面降到最低。 擁有權限的容器會以根身分執行。 如果惡意使用者或工作負載在擁有權限的容器中逸出,容器就會在該系統上以根身分執行。

預先核准允許容器存取或執行的檔案與可執行檔

減少變數或未知的數目可協助您維護穩定且可靠的環境。 限制容器,使其只能存取或執行預先核准或安全列出的檔案,而可執行檔是經證實可限制暴露於風險中的方法。

從頭開始實作安全清單會比較容易。 當您了解應用程式正常運作所需的檔案與可執行檔時,安全清單會提供控制與管理性的量值。

安全清單不僅可減少受攻擊面,還可以提供異常狀況的基準,並防止「擾鄰」與容器中斷案例的使用案例。

在執行中的容器上實施網路分割

為了協助保護某個子網路中的容器免遭來自另一個子網路的安全性風險,請於正在執行的容器之間維護網路分割 (或 nano 分割) 或隔離。 維護網路分割對於在符合合規性授權所需的產業中使用容器來說可能也是必要步驟。

例如,合作夥伴工具 Aqua 提供用於 nano 分割的自動化方法。 Aqua 會監視執行階段中的容器網路活動。 其會識別與其他容器、服務、IP 位址及公用網際網路之間的所有輸入與輸出網路連線。 Nano 分割會根據受監視的流量自動建立。

監視容器活動和使用者存取狀況

如同任何 IT 環境,您應該一致地監視容器生態系統的活動和使用者存取狀況,以快速識別任何可疑或惡意活動。 Azure 提供容器監視解決方案,包括:

  • 適用於容器的 Azure 監視器可監視部署至 Azure Kubernetes Service (AKS) 上所裝載 Kubernetes 環境的工作負載效能。 適用於容器的 Azure 監視器可藉由透過計量 API 從 Kubernetes 中取得的控制器、節點與容器來收集記憶體與處理器計量,為您提供效能可見度。

  • Azure 容器監視解決方案可協助您在單一位置檢視及管理其他 Docker 與 Windows 容器主機。 例如:

    • 檢視詳細的稽核資訊,其顯示搭配容器使用的命令。
    • 透過檢視及搜尋集中式記錄,以針對容器進行疑難排解,而不需從遠端檢視 Docker 或 Windows 主機。
    • 找到有雜訊且耗用過多主機資源的容器。
    • 檢視容器的集中式 CPU、記憶體、儲存體以及網路使用量和效能資訊。

    該解決方案支援容器協調器,包括 Docker Swarm、DC/OS、非受控 Kubernetes、Service Fabric 與 Red Hat OpenShift。

監視容器資源活動

監視您的資源活動,例如容器存取的檔案、網路和其他資源。 監視資源活動和耗用量對於效能監視和作為安全性量值很有用。

Azure 監視器會透過允許集合計量、活動記錄及診斷記錄,來啟用 Azure 服務的核心監視功能。 例如,活動記錄會告訴您新資源的建立或修改時間。

系統會提供計量,這些計量可提供不同資源 (甚至是虛擬機器內的作業系統) 的效能統計資料。 您可以在 Azure 入口網站中使用其中一個總管檢視此資料,並且根據這些計量建立警示。 Azure 監視器提供最快的計量管線 (5 分鐘降至 1 分鐘),因此您應該將它用於講究時效性的警示和通知。

記錄所有容器系統管理使用者存取權以進行稽核

維護容器生態系統管理存取權的精確稽核記錄,包括 Kubernetes 叢集、容器登錄和容器映像。 這些記錄可能需要用於稽核目的,而且在發生任何安全性事件之後,都會作為鑑識辨識項。 Azure 解決方案包括:

下一步