Azure Kubernetes Service (AKS) 中應用程式和叢集的安全性概念

容器安全性可保護整個端對端管線,從組建到在 Azure Kubernetes Service 中執行的應用程式工作負載。

安全供應鏈包含組建環境和登錄。

Kubernetes 包含安全性元件,例如 Pod 安全性標準和秘密。 Azure 包含 Active Directory、適用於容器的 Microsoft Defender、Azure 原則、Azure 金鑰保存庫、網路安全組,以及協調的叢集升級等元件。 AKS 會將這些安全性元件結合為:

  • 提供完整的驗證和授權案例。
  • 套用 AKS 內建 Azure 原則 來保護您的應用程式。
  • 使用適用於容器的 Microsoft Defender 從建置到應用程式的端對端深入解析。
  • 讓您的 AKS 叢集持續執行最新的 OS 安全性更新和 Kubernetes 版本。
  • 提供安全的 Pod 流量和敏感性認證的存取權。

本文介紹在 AKS 中保護應用程式的核心概念。

建置安全性

作為供應鏈的進入點,請務必先對映射組建進行靜態分析,再將其提升至管線。 這包括弱點和合規性評定。 這不是因為建置有弱點而失敗,因為這會中斷開發。 其內容是查看 廠商狀態 ,以根據開發小組可採取動作的弱點進行區隔。 此外,使用寬限期可讓開發人員有時間補救已識別的問題。

登錄安全性

評估登錄中映像的弱點狀態會偵測漂移,也會攔截不是來自組建環境的映像。 使用 Notary V2 將簽章附加至映像,以確保部署來自信任的位置。

叢集安全性

在 AKS 中,Kubernetes 主要元件是 Microsoft 所提供的受控服務、受控和維護的一部分。 每個 AKS 叢集都有自己的單一租使用者專用 Kubernetes 主機,以提供 API 伺服器、排程器等。如需詳細資訊,請參閱 Azure Kubernetes Service 的弱點管理。

根據預設,Kubernetes API 伺服器會使用公用 IP 位址和完整網域名稱 (FQDN)。 您可以使用授權的IP範圍來限制對 API 伺服器端點的存取。 您也可以建立完全 私人的叢集 ,以限制對虛擬網路的 API 伺服器存取。

您可以使用 Kubernetes 角色型存取控制 (Kubernetes RBAC) 和 Azure RBAC 來控制 API 伺服器的存取權。 如需詳細資訊,請參閱 Microsoft Entra 與 AKS 整合。

節點安全性

AKS 節點是您管理和維護的 Azure 虛擬機(VM)。

  • Linux 節點會執行Ubuntu或 Azure Linux 的優化版本。
  • Windows Server 節點會使用 containerd 或 Docker 容器運行時間來執行優化的 Windows Server 2019 版本。

建立或擴大 AKS 叢集時,節點會自動使用最新的作業系統安全性更新和設定進行部署。

注意

執行中的 AKS 叢集:

  • Kubernetes 1.19 版和更新版本 - Linux 節點集區會作為其容器運行時間使用 containerd 。 Windows Server 2019 節點集區會作為 containerd 其容器運行時間,目前處於預覽狀態。 如需詳細資訊,請參閱 使用 新增 Windows Server 節點集區 containerd
  • Kubernetes 1.19 版和更早版本 - Linux 節點集區會使用 Docker 作為其容器運行時間。 Windows Server 2019 節點集區會針對預設容器運行時間使用 Docker。

如需 Linux 和 Windows 背景工作角色節點安全性升級程式的詳細資訊,請參閱 安全性修補節點

執行 Azure 第 2 代 VM 的 AKS 叢集包含信任啟動(預覽版)的支援,藉由結合可獨立啟用的技術,例如安全開機和虛擬化版本的受信任平台模組 (vTPM),來保護進階和持續性的攻擊技術。 管理員 istrators 可以使用已驗證和簽署的開機載入器、OS 核心和驅動程式來部署 AKS 背景工作節點,以確保基礎 VM 的整個開機鏈結的完整性。

節點授權

節點授權是一種特殊用途的授權模式,專門授權 kubelet API 要求,以防止東西部攻擊。 AKS 1.24 + 叢集預設會啟用節點授權。

節點部署

節點會部署至私人虛擬網路子網,未指派任何公用IP位址。 為了進行疑難解答和管理,預設會啟用 SSH,且只能使用內部 IP 位址來存取。 在叢集和節點集區建立期間或現有叢集或節點集區停用SSH 目前為預覽狀態。 如需詳細資訊,請參閱 管理 SSH 存取

節點記憶體

為了提供儲存體,節點會使用 Azure 受控磁碟。 針對大部分的 VM 節點大小,Azure 受控磁碟 都是由高效能 SSD 支援的 進階版 磁碟。 儲存在受控磁碟上的資料會自動在 Azure 平台內進行待用加密。 為了改善備援,Azure 受控磁碟 會在 Azure 資料中心內安全地複寫。

惡意多租使用者工作負載

目前,Kubernetes 環境對於惡意的多租使用者使用並不安全。 額外的安全性功能,例如 適用於節點的 Pod 安全策略 或 Kubernetes RBAC,有效率地封鎖惡意探索。 針對執行惡意多租使用者工作負載時的真實安全性,請只信任 Hypervisor。 Kubernetes 的安全性網域會變成整個叢集,而不是個別節點。

針對這些類型的惡意多租使用者工作負載,您應該使用實體隔離的叢集。 如需隔離工作負載方式的詳細資訊,請參閱 AKS 中的叢集隔離最佳做法。

計算隔離

由於合規性或法規需求,某些工作負載可能需要與其他客戶工作負載高度隔離。 針對這些工作負載,Azure 提供:

  • 作為 AKS 叢集中代理程序節點的核心隔離容器 。 這些容器完全隔離至特定硬體類型,並與 Azure 主機網狀架構、主機操作系統和 Hypervisor 隔離。 他們致力於單一客戶。 在建立 AKS 叢集或新增節點集區時,選取 其中一個隔離的 VM 大小 作為 節點大小
  • 機密容器 (預覽),也根據 Kata 機密容器,加密容器記憶體,並在計算期間防止記憶體中的數據是純文本、可讀取的格式和竄改。 它可協助隔離您的容器與其他容器群組/Pod,以及 VM 節點 OS 核心。 機密容器(預覽版)使用硬體型記憶體加密(SEV-SNP)。
  • Pod 沙盒化 (預覽) 提供容器應用程式與容器主機的共用核心和計算資源(CPU、記憶體和網路)之間的隔離界限。

網路安全性

若要使用內部部署網路進行連線和安全性,您可以將AKS 叢集部署到現有的 Azure 虛擬網路子網。 這些虛擬網路會使用 Azure 站對站 VPN 或 Express Route 連線回您的內部部署網路。 使用私人內部IP位址定義 Kubernetes 輸入控制器,以限制服務存取內部網路連線。

Azure 網路安全性群組

若要篩選虛擬網路流量流程,Azure 會使用網路安全組規則。 這些規則會定義允許或拒絕存取資源的來源和目的地IP範圍、埠和通訊協定。 系統會建立默認規則,以允許對 Kubernetes API 伺服器的 TLS 流量。 您可以使用負載平衡器、埠對應或輸入路由來建立服務。 AKS 會自動針對流量修改網路安全性群組。

如果您為 AKS 叢集提供您自己的子網(無論是使用 Azure CNI 或 Kubenet), 請勿 修改 AKS 所管理的 NIC 層級網路安全組。 您應建立更多子網路層級的網路安全性群組,以修改流量的流程。 請確定它們不會干擾管理叢集的必要流量,例如負載平衡器存取、與控制平面通訊或 輸出

Kubernetes 網路原則

為了限制叢集中 Pod 之間的網路流量,AKS 提供 Kubernetes 網路原則的支援。 使用網路原則,您可以根據命名空間和標籤選取器,允許或拒絕叢集中的特定網路路徑。

應用程式安全性

若要保護在 AKS 上執行的 Pod,請考慮 使用適用於容器 的 Microsoft Defender 來偵測和限制對 Pod 中執行之應用程式的網路攻擊。 執行持續掃描以偵測應用程式弱點狀態的漂移,並實作「藍色/綠色/Canary」程式來修補和取代易受攻擊的映像。

Kubernetes 秘密

使用 Kubernetes 秘密時,您會將敏感數據插入 Pod,例如存取認證或密鑰。

  1. 使用 Kubernetes API 建立秘密。
  2. 定義您的 Pod 或部署,並要求特定的秘密。
    • 秘密只會提供給具有需要其排程 Pod 的節點。
    • 秘密會儲存在 tmpfs,而不是寫入磁碟。
  3. 當您在需要秘密的節點上刪除最後一個 Pod 時,會從節點的 tmpfs 中刪除秘密。
    • 秘密會儲存在指定的命名空間內,而且只能從相同命名空間內的Pod存取。

使用秘密可減少 Pod 或服務 YAML 指令清單中定義的敏感性資訊。 相反地,您會要求 Kubernetes API 伺服器中儲存的祕密作為 YAML 資訊清單的一部分。 此方法只會提供特定 Pod 對祕密的存取。

注意

原始秘密指令清單檔案包含base64格式的秘密數據。 如需了解更多資訊,請參閱官方文件。 將這些檔案視為敏感性資訊,且絕不會將其認可至原始檔控制。

Kubernetes 秘密會儲存在 etcd中,這是分散式密鑰/值存放區。 AKS 會 完全管理 etcd 存放區,並在 Azure 平臺內加密待用數據。

下一步

若要開始保護您的 AKS 叢集,請參閱 升級 AKS 叢集

如需相關聯的最佳做法,請參閱 AKS 中叢集安全性和升級的最佳做法,以及 AKS 中 Pod 安全性的最佳做法。

如需核心 Kubernetes 和 AKS 概念的詳細資訊,請參閱: