什麼是容器網路安全性?
容器網路安全性是進階容器網路服務的供應專案,可提供對容器間網路流量的增強控制。 容器網路安全性利用 Cilium 型原則,相較於傳統 IP 型方法,提供更細微且方便使用者管理網路安全性的方法。
自今天起,容器網路安全性內可用的第一個功能是 FQDN 篩選。 這可讓您根據功能變數名稱定義網路安全策略,以提供更細微且方便使用者使用的方式來管理網路流量。
容器化環境面臨獨特的安全性挑戰。 傳統網路安全性方法通常依賴以IP為基礎的篩選,在IP位址經常變更時可能會變得繁瑣且效率較低。 此外,了解網路流量模式和識別潛在威脅可能相當複雜。
FQDN 篩選提供有效率且方便使用者管理網路原則的方法。 藉由根據功能變數名稱而非IP位址來定義這些原則,組織可以大幅簡化原則管理的程式。 這種方法可避免經常在IP位址變更時所需的更新,進而降低系統管理負擔,並將設定錯誤的風險降到最低。
在 Kubernetes 叢集中,Pod IP 位址可能會經常變更,因此使用 IP 位址來保護具有安全策略的 Pod 可能會很困難。 FQDN 篩選可讓您使用功能變數名稱而不是IP位址來建立Pod層級原則,這樣就不需要在IP位址變更時更新原則。
注意
需要由 Cilium 和 Kubernetes 1.29 版或更新版本的 Azure CNI,才能使用進階容器網路服務的容器網路安全性功能。
Cilium 代理程式:Cilium 代理程式是重要的網路元件,可在由 Cilium 提供電源的 Azure CNI 叢集中,以 DaemonSet 的形式執行。 它會處理叢集中 Pod 的網路、負載平衡和網路原則。 對於具有強制執行 FQDN 原則的 Pod,Cilium 代理程式會將封包重新導向至 ACNS 安全性代理程式以進行 DNS 解析,並使用從 ACNS 安全性代理程式取得的 FQDN-IP 對應來更新網路原則。
ACNS 安全性代理程式:ACNS 安全性代理程式會在已啟用進階容器網路服務的 Cilium 叢集中,以 DaemonSet 的形式執行。 它會處理 Pod 的 DNS 解析,並在成功的 DNS 解析上,使用 FQDN 將 Cilium 代理程式更新為 IP 對應。
啟用 FQDN 篩選時,會先評估 DNS 要求,以判斷是否應該允許這些要求,之後 Pod 才能根據網路原則存取指定的功能變數名稱。 Cilium 代理程式會標記源自 Pod 的 DNS 要求封包,並將其重新導向至 ACNS 安全性代理程式。 此重新導向只會針對強制執行 FQDN 原則的 Pod 進行。
ACNS 安全性代理程式接著會決定是否根據原則準則將 DNS 要求轉送至 DNS 伺服器。 如果允許,要求會傳送至 DNS 伺服器,並在收到回應時,ACNS 安全性代理程式會使用 FQDN 對應來更新 Cilium 代理程式。 這可讓 Cilium 代理程式更新原則引擎內的網路原則。 下圖說明 FQDN 篩選的高階流程。
可調整的安全策略管理:叢集和安全性系統管理員不需要在每次IP位址變更時更新安全策略,讓作業更有效率。
增強的安全性合規性:FQDN 篩選支援 零信任 安全性模型。 網路流量僅限於受信任的網域,只會降低未經授權的存取風險。
復原原則強制執行:使用 FQDN 篩選實作的 ACNS 安全性代理程式可確保即使 Cilium 代理程式停止運作,原則仍繼續強制執行,DNS 解析仍會順暢地繼續執行。 此實作可大幅確保動態和分散式環境中維護安全性和穩定性。
- 容器網路安全性功能需要由 Cilium 和 Kubernetes 1.29 版和更新版本支援的 Azure CNI。
- 部分支援通配符 FQDN 原則。 這表示您可以建立符合特定模式與前置通配符的原則(例如 .example.com),但您無法使用通用通配符 () 來比對字段上的所有網域
spec.egress.toPorts.rules.dns.matchPattern
支援的模式:
*.example.com
- 這可讓流量流向 example.com 下的所有子域。app*.example.com
- 此規則更具體,而且只允許流量流向以 「app」 開頭的子域,example.com不支援的模式
*
這會嘗試比對不支援的任何功能變數名稱。
- 節點本機 DNS 目前不支援 FQDN 篩選。
- 不支援雙堆疊。
- 不支援 Kubernetes 服務名稱。
- 不支援其他 L7 原則。
- 處理每秒超過 1000 個要求時,FQDN Pod 可能會表現出效能降低。
- 使用 Cilium 網路原則時,Alpine 型容器映射可能會遇到 DNS 解析問題。 這是因為 musl libc 的搜尋網域反覆運算有限。 若要解決此問題,請使用通配符模式明確定義網路原則 DNS 規則中的所有搜尋網域,如下列範例
rules:
dns:
- matchPattern: "*.example.com"
- matchPattern: "*.example.com.*.*"
- matchPattern: "*.example.com.*.*.*"
- matchPattern: "*.example.com.*.*.*.*"
- matchPattern: "*.example.com.*.*.*.*.*"
- toFQDNs:
- matchPattern: "*.example.com"
重要
進階容器網路服務是一項付費供應項目。 如需定價的詳細資訊,請參閱 進階容器網路服務 - 定價。
瞭解如何在 AKS 上啟用 容器網路安全性 。
探索 開放原始碼 社群如何建置 Cilium 網路原則。
如需 Azure Kubernetes Service (AKS) 進階容器網路服務的詳細資訊,請參閱什麼是 Azure Kubernetes Service (AKS) 進階容器網路服務?。
在什麼是容器網路可檢視性?中探索進階容器網路服務中的容器網路可檢視性功能?