Azure Kubernetes Service (AKS) 提供一個託管的 Kubernetes 環境,用於部署與操作容器化應用程式。 Microsoft 管理 Kubernetes 控制平面,而你則負責保護叢集中的工作負載、節點配置、網路、身份和資料的安全。 部署 AKS 時,遵循安全最佳實務以保護這個共享表面在整個叢集生命週期中非常重要。
本文提供安全建議,以協助保護您的 AKS 部署。 許多這些控制是在 AKS Automatic 中預先設定的,該系統從強化基線開始叢集,並可在 AKS Standard 中啟用和管理。 關於這些控制背後的概念,包括 AKS 安全性如何在建置到執行時的流程中運作,請參見 AKS 中應用程式與叢集的安全概念。
本文中的安全性建議會實作零信任原則:「明確驗證」、「使用最低許可權存取」和「假設違規」。 如需完整的 零信任 指引,請參閱 零信任 指引中心。
服務特定安全性
AKS 結合了 Kubernetes 安全原語與 Azure 平台控制。 以下建議針對運行受管 Kubernetes 叢集時特有的硬化問題,包括節點完整性、映像來源及工作負載隔離。
叢集與節點強化
- 保持叢集在支援的 Kubernetes 版本並自動升級:將叢集註冊到自動升級通道,讓控制平面和節點池能收到 Kubernetes 修補程式,無需手動介入即可修復已知漏洞。 欲了解更多資訊,請參閱 「自動升級 AKS 叢集」。
- 自動套用節點作業系統安全更新:設定節點作業系統自動升級通道,使節點依固定頻率接收 Linux 與 Windows OS 的安全修補程式。 欲了解更多資訊,請參閱 自動升級 AKS 叢集節點作業系統映像檔。
- 強制執行 Pod 安全性准入標準:在命名空間層級套用基準或限制 Pod 安全性標準,以防止特權 Pod、主機命名空間共用及不安全的磁碟區掛載。 欲了解更多資訊,請參閱 Secure your pods in AKS。
- 部署支援 FIPS 的節點池以處理受管制的工作負載:當工作負載必須符合如 FedRAMP 合規等要求時,啟用啟用啟用 FIPS 啟用的節點池,這些節點池使用 FIPS 140-3 驗證的密碼模組。 欲了解更多資訊,請參閱 啟用聯邦資訊處理標準(FIPS)以支援AKS節點池。
- 不要在共享叢集上運行敵意多租戶工作負載:標準的 Kubernetes 叢集並非不可信租戶間的硬性安全邊界,因為安全領域是整個叢集,而非單一節點。 對於需要強隔離的工作負載,可以使用物理隔離的叢集、隔離的虛擬機節點大小,或是 Pod 沙箱。 欲了解更多資訊,請參閱 AKS 叢集隔離的最佳實務。
貨櫃影像與供應鏈安全
- 限制部署至受信任的容器登錄檔:使用 Azure 原則 附加元件強制 Pod 只能從核准的登錄檔拉取映像檔,例如你的私人 Azure Container Registry,這樣不受信任的公開映像檔無法在叢集中執行。 欲了解更多資訊,請參閱 Secure your AKS clusters with with Azure 原則。
- 使用影像清理器移除未使用的有漏洞影像:啟用影像清理器,自動移除節點上的過時影像,並減少有漏洞影像所留下的攻擊面。 欲了解更多資訊,請參閱 使用影像清理工具清理 AKS 上易受攻擊的影像。
- 使用 Microsoft Defender for Containers 掃描登錄檔與正在執行的工作負載:在部署前後,偵測登錄檔與叢集中的脆弱映像與錯誤設定。 欲了解更多資訊,請參閱 Microsoft Defender for Containers 概覽。
網路安全
預設情況下,AKS API 伺服器可透過公共端點存取,叢集出口則不受限制。 限制控制平面的入站存取與工作負載的出站流量,是減少叢集網路攻擊面最有效的變更之一。
-
部署私有叢集以移除公開 API 伺服器端點:建立一個私有叢集,讓 Kubernetes API 伺服器只能透過私有端點從你的虛擬網路存取。 欲了解更多資訊,請參閱建立私人 Azure Kubernetes Service (AKS) 叢集。
- 如果你無法使用完全私有叢集,請將公共 API 伺服器端點限制在已知且有授權 IP 範圍的位址。 欲了解更多資訊,請參閱 使用授權 IP 位址範圍的安全存取 API 伺服器。
- 將 API 伺服器整合到虛擬網路:使用 API 伺服器虛擬網路整合,讓控制平面流量保持在私有子網路上,無需隧道組件。 如需詳細資訊,請參閱使用 API 伺服器虛擬網路整合建立 AKS 叢集。
- 強制執行網路政策以控制 pod 間流量:套用 Kubernetes 網路政策,限制 pod 間東西向流量,僅符合你的工作負載需求。 如需詳細資訊,請參閱 在 AKS 中使用網路原則保護 Pod 之間的流量。
- 限制叢集出口流量:設定使用者自訂的出站類型,並透過 Azure 防火牆 路由出口,以過濾並檢查你的工作負載可到達的目的地。 如需詳細資訊,請參閱控制 AKS 中叢集節點的輸出流量。
- 以完全限定的網域名稱過濾出站流量:在進階容器網路服務中使用基於 FQDN 的過濾,只允許出口至核准的網域。 欲了解更多資訊,請參閱 進階容器網路服務的 FQDN 篩選。
身分識別與存取權管理
AKS 透過 Microsoft Entra ID 驗證叢集與工作負載身份,並授權透過 Azure RBAC 及 Kubernetes RBAC 存取。 使用受管理身份和 Entra 支援的授權,取代靜態憑證或獨立的 Kubernetes 帳號。
- 叢集使用受管理身份:設定叢集使用受管理身份,讓 AKS 能存取 Azure 資源,而不需要你必須輪換的靜態服務主體憑證。 欲了解更多資訊,請參閱 Use a managed identity in Azure Kubernetes Service (AKS)。
- 使用 workload identity 供 Pod 存取 Azure 資源:將 Kubernetes 服務帳戶與 Microsoft Entra 工作負載身分識別建立同盟,讓 Pod 無須儲存祕密資訊即可取得 Azure 資源的權杖。 欲了解更多資訊,請參閱使用 Microsoft Entra 工作負載 ID 搭配 AKS。
- 將叢集認證整合至 Microsoft Entra ID:啟用 Microsoft Entra 整合,讓使用者和群組以 Entra 身份認證叢集,而非共用憑證。 如需詳細資訊,請參閱 AKS 管理的 Microsoft Entra 整合。
- 使用 Azure RBAC 授權 Kubernetes API 存取:使用 Azure RBAC 進行 Kubernetes 授權,並在叢集或命名空間範圍指派 AKS 內建角色(Azure Kubernetes Service RBAC Reader、Azure Kubernetes Service RBAC Writer、Azure Kubernetes Service RBAC Admin 和 Azure Kubernetes Service RBAC Cluster Admin),以授與最低權限存取。 欲了解更多資訊,請參閱 叢集授權概念。
- 停用本地 Kubernetes 帳號:關閉本地帳號,讓所有叢集存取都經過 Microsoft Entra ID,無法繞過 Entra 支援的靜態叢集管理員憑證授權。 欲了解更多資訊,請參閱「以 AKS 管理的 Microsoft Entra 整合管理本地帳號」。
- 對叢集管理員強制執行條件式存取:套用條件式存取原則,要求可建立、升級或刪除 AKS 叢集,並管理其節點集區、網路設定及角色指派的 Entra 身分使用多重要素驗證和合規裝置。 欲了解更多資訊,請參閱「Azure 管理要求多重因素驗證」。
資料保護
AKS 預設會加密管理磁碟上的靜態資料。 配置以下控制措施以保護 Kubernetes 機密,並在合規需求需要時攜帶自己的金鑰。
- 用金鑰管理服務加密 etcd 中的 Kubernetes 祕密:啟用 KMS 資料加密,讓 Kubernetes 祕密物件在應用層加密,然後再寫入 etcd,使用平台管理的金鑰或你自己在 Azure Key Vault 中由客戶管理的金鑰。 欲了解更多資訊,請參閱 AKS 的靜態資料加密概念。
- 將應用程式密碼儲存在 Azure Key Vault 中:使用適用於 Secrets Store CSI Driver 的 Azure Key Vault 提供者來掛接來自 金鑰保存庫 的密碼、金鑰和憑證,而不是將它們以純文字形式儲存在 Kubernetes 密碼中。 欲了解更多資訊,請參閱 在 AKS 中將 Azure Key Vault 提供者搭配 Secrets Store CSI Driver 使用。
- 使用客戶管理的節點與資料磁碟金鑰:當您需要控制加密金鑰生命週期時,請在 金鑰保存庫 中用自己的金鑰加密作業系統與資料磁碟。 欲了解更多資訊,請參閱 AKS 中 Azure 磁碟的自帶金鑰(BYOK)。
- 啟用主機端加密:啟用主機端加密,使節點虛擬機上的臨時磁碟及作業系統/資料磁碟快取在主機上靜止時被加密。 欲了解更多資訊,請參閱 AKS 的主機加密。
記錄和監視
收集叢集、控制平面和工作負載的遙測數據,以便偵測並調查針對 AKS 叢集的威脅。
- 利用容器洞察監控叢集:啟用容器洞察,將節點與容器的指標及日誌收集到 Log Analytics 工作空間中。 欲了解更多資訊,請參閱 Monitor Azure Kubernetes Service (AKS)。
-
收集控制平面稽核日誌及診斷設定:設定診斷設定,將 Kubernetes API 伺服器及稽核日誌類別
kube-audit(、kube-audit-admin、guard及 )送至 Log Analytics 進行安全調查。 如需詳細資訊,請參閱 AKS 監視資料參考。 - 啟用 Microsoft Defender for Containers 的威脅偵測:開啟 Defender for Containers,以接收叢集節點、工作負載及 Kubernetes 控制平面的執行時威脅偵測警示。 欲了解更多資訊,請參閱 Microsoft Defender for Containers 概覽。
合規性和治理
使用 Azure 原則 在 AKS 叢集中持續執行安全設定,並防止不合規的工作負載被部署。
- 使用 Azure 原則 for AKS 強制叢集與工作負載設定:啟用 Azure 原則 附加元件,並指派 AKS 內建政策倡議來稽核與執行如核准登錄檔、資源限制及封鎖特權容器等控制措施。 欲了解更多資訊,請參閱 Secure your AKS clusters with with Azure 原則。
- 為 Kubernetes 最佳實務套用部署防護:啟用部署防護措施,以在警告或強制模式下驗證叢集資源是否符合 AKS 最佳實務。 欲了解更多資訊,請參閱 「使用部署保障措施以執行 AKS 最佳實務」。
- 指派 AKS 內建政策定義以強制執行特定控制:為 AKS 指派內建 Azure 原則 定義以強制執行個別控制,例如要求授權的 IP 範圍或私有叢集、停用特權容器及強制內部負載平衡器。 欲了解更多資訊,請參閱 Azure 原則 內建定義中的 AKS。
備份及復原
保護叢集狀態與應用程式資料,讓您能從意外刪除、損壞或升級失敗中恢復。
- 使用 AKS 備份叢集狀態與持久磁碟區:使用 AKS 備份與備份保險庫,排程叢集資源及由 Azure 磁碟與 Azure 檔案儲存體(SMB)支援的持久磁碟的備份,並還原命名空間或整個叢集。 欲了解更多資訊,請參閱 What is Azure Kubernetes Service (AKS) backup?。
- 以可信存取(Trusted Access)授權備份存取,而非廣泛權限:啟用可信存取(Trusted Access),讓備份保險庫能以有範圍的權限抵達叢集,而非需要持續的管理存取權限。 欲了解更多資訊,請參閱「啟用 Azure 資源以透過受信任存取存取 AKS 叢集」。