共用方式為


AKS 的安全性

本文會逐步引導您在實作任何解決方案之前,先考慮 Azure Kubernetes Service (AKS) 安全性治理的各個層面。

本文著重於如何使用 Azure 和開放原始碼軟體來實作解決方案。 當您建立企業級登陸區域時所做的決策,可以部分預先定義治理。 若要瞭解治理原則,請參閱 企業級安全性治理和合規性

受攻擊面

當您建立 Kubernetes 叢集的安全性策略時,請考慮下列五個攻擊面:

  • 建立
  • 登錄
  • Cluster
  • 節點
  • 申請

針對每個類別,我們會討論要考慮的主要風險,以及這些風險的對策。

建置安全性

建置安全性是關於搭配容器映像正確使用DevSecOps。

主要風險

映像設定不佳可能會導致管線的安全性弱點。 例如,您可能具有比所需許可權更高的容器執行。 容器也可能設定為允許特定網路存取,這可能會讓系統面臨風險。 不限制允許的系統呼叫到容器安全作業所需的呼叫,可能會增加遭入侵容器的風險。

另一個弱點可能是允許容器存取主機的敏感性目錄,或允許容器變更控制主機基本功能的位置。

Rogue 容器是環境中的非計劃容器。 它們可能是開發人員在測試環境中測試程式代碼的結果。 這些容器可能尚未經過嚴格的弱點掃描,或已正確設定。 這些弱點可能會為攻擊者開啟進入點。

使用不是來自受信任來源的基底映射,或不是最新的安全性更新,也可能導致其用來建置的容器中的弱點。

風險對策

建置安全性是關於 DevSecOps 的實作,以將安全性向左移位,並在開始向下移動管線之前補救大部分的問題。 與其說是將所有擁有權放在開發人員上,而是要與作業共用擁有權。 開發人員接著可以看到並補救他們實際可解決的弱點和合規性問題。

您可以建置管線來掃描和失敗組建,因為它有一或10個重大弱點。 更好的方法是向下查看下一層。 您可以開始根據廠商狀態來分割責任點。

在弱點的狀態層設定臨界值。 任何狀態為 OpenWill not fixDeferred 的任何專案都會繼續流向管線,而 SecOps 可以存取風險,就像他們今天所做的一樣。 提供廠商修正狀態的弱點是開發人員可以解決的事項。 使用寬限期可讓開發人員有時間補救弱點。

除了弱點評定之外,還有合規性評定。 例如,允許映像以 身分執行,或公開 SSH 會中斷大部分企業的合規性狀態。 在建置期間,而不是在部署期間解決此問題。

一般而言,您會針對 Docker CIS 基準檢驗來掃描映射。 當您使用這些類型的流程時,不會藉由引進安全性補救來中斷開發,但您可以改善企業的整體安全性狀態。

使用可啟用這些功能的工具,對於有效地為您的企業實作正確的策略非常重要。 傳統工具通常無法偵測容器內的弱點,這可能會導致安全性感知錯誤。 需要考慮管線型建置方法和不可變且宣告性容器技術的工具,才能正確保護您的容器生態系統。

這些工具應具有下列屬性:

  • 從建置程式的開頭到登錄到運行時間,與映像的整個存留期整合。
  • 瞭解映像所有層級的弱點,包括映像、應用程式架構和自定義軟體的基底層。
  • 以正確的粒度層級強制執行原則驅動,讓您的組織能夠在建置和部署程式的每個階段建立品質網關。

登錄安全性

登入安全性是關於:

  • 來自組建的漂移控制。
  • 防止被污染影像的推送/提取。
  • 映像簽署。

主要風險

影像通常包含專屬資訊,包括組織的原始程式碼。 如果登錄的連線不安全,映像的內容可能會造成機密性風險,與組織內傳輸的任何其他數據形式一樣嚴重。 登錄中具有易受攻擊過時版本的過時映像,如果意外部署,可能會增加安全性風險。

另一個安全性弱點可能包括容器登錄的驗證和授權限制不足。 這些登錄可能會在映像中儲存敏感的專屬資產。

建置和部署內容時,此內容的發佈是許多攻擊媒介之一。 如何確定要發佈的內容與傳遞至預定端點的內容相同?

風險對策

設定部署程式,以確保開發工具、網路和容器運行時間僅透過加密通道連線到登錄。 此外,請確定內容來自受信任的來源。 若要降低使用過時影像的風險:

  • 拿掉不應再從容器登錄使用不安全且易受攻擊的映像。
  • 使用不可變的名稱強制存取映射,以指定要使用的特定映像版本。 您可以使用最新的標記或特定版本的映像來實作此組態。 標籤不保證新鮮度。 基於這個理由,請放置一個程式,以確保 Kubernetes 協調器使用最新的唯一數位,或 最新的 標記代表最新的版本。

存取包含敏感性映像的登錄應該需要驗證和授權。 所有寫入存取都應該需要驗證。 例如,您的原則可讓開發人員只將映像推送至他們負責的特定存放庫。

這些登錄的存取權應該是同盟的,並利用企業營運層級存取原則。 例如,您可以設定 CI/CD 管線,只在映像通過弱點掃描合規性評定和品質控制測試之後,才將映像推送至存放庫。

容器登錄現在視為成品登錄,正成為部署任何內容類型的主要方法,而不只是容器映像。 每個雲端都會提供一個登錄,其中包含開放原始碼專案和廠商產品,可供內部部署或私人裝載於雲端提供者內。 內容會在登錄內和跨登錄之間升級,從其初始組建升級至其生產部署。

如何確保進入登錄的內容完整性與來自登錄的內容相同? 採用映像簽署解決方案可確保部署只來自信任的登錄,且正在部署受信任的內容。

叢集安全性

叢集安全性是關於:

  • 驗證與授權。
  • 網路安全性。
  • 弱點和合規性管理。

主要風險

有時候,單一 Kubernetes 叢集可能會用來執行由不同小組管理且具有不同存取層級需求的不同應用程式。 如果存取權提供給沒有限制的個人,或只根據其需求,惡意或粗心的使用者可能會危害他們有權存取的工作負載,以及叢集上的其他資產。

當叢集自己的使用者目錄管理授權和驗證時,可能會發生另一個安全性弱點。 組織驗證目錄通常會更嚴格地控制。 由於這些帳戶具有高度特殊許可權,而且更常被遺棄,因此遭入侵帳戶的機會會增加。

此案例可能會導致叢集或甚至是全系統弱點。 容器磁碟區所儲存的數據是由協調器所管理,無論其裝載於哪個節點,都必須能夠存取數據。

傳統網路篩選可能會有安全性盲目,因為網路重疊設計用來加密傳輸中的數據。 此設計可讓您難以監視叢集內的流量,因此可能需要特殊布建來監視 Kubernetes 叢集。

來自共用相同叢集之不同應用程式流量可能會有不同的敏感度層級,例如公開網站,以及執行重要敏感性商務程序的內部應用程式。 共用叢集中的相同虛擬網路可能會導致敏感數據遭到入侵。 例如,攻擊者可能會使用公開至因特網的共享網路來攻擊內部應用程式。

保護執行叢集本身的元件免於弱點和合規性問題。 請確定您正在最新可能的 Kubernetes 版本上執行,以利用補救。

風險對策

Kubernetes 叢集使用者存取應該使用最低許可權存取模型。 只授與使用者存取權,在執行其工作所需的特定主機、容器和映像上執行特定動作。 測試小組成員應該對生產環境中容器有限制或沒有存取權。 具有全叢集存取權的用戶帳戶應受到嚴格控制,並謹慎使用。

使用強身份驗證方法,例如多重要素驗證來保護對這些帳戶的存取。 組織使用者目錄應該用來透過單一登錄來管理叢集,而不是可能沒有相同層級原則和控件的叢集特定用戶帳戶。

使用加密方法可讓容器正確存取執行容器的任何主機的數據。 這些加密工具應該防止其他容器未經授權存取數據,即使在不應該存取這些容器的相同節點內也一樣。

設定 Kubernetes 叢集,以透過敏感度層級將網路流量分成離散虛擬網路或子網。 個別應用程式分割也可能可行,但依敏感度層級定義網路可能就已足夠。 例如,應至少實作與具有敏感性流量的內部應用程式分開的客戶面向應用程式的虛擬網路。

您可以使用污點和容錯,依敏感度層級將部署隔離到特定節點集。 避免將高度敏感度工作負載裝載在與那些具有較低敏感度之工作負載相同的節點內。 使用個別的受控叢集是更安全的選項。

依用途、敏感度和線程狀態區隔容器,為敏感性工作負載提供額外的保護。 透過這種方式分割容器,攻擊者更難存取一個區段,以取得其他區段的存取權。 此設定具有確保剩餘數據,例如快取或磁碟區掛接等額外優點,會透過敏感度層級隔離。

Kubernetes 叢集應設定為:

  • 為在它們上執行的應用程式提供安全的環境。
  • 確定節點會安全地新增至叢集。
  • 擁有持續性身分識別,以協助確保其整個生命周期的安全性。
  • 提供叢集狀態的即時、準確資訊,包括網路功能及其內的節點。

在不影響叢集效能的情況下,從叢集隔離和移除遭入侵的節點必須很容易。 AKS 讓這一點變得簡單。

定義容器運行時間組態標準,以自動確保合規性。 Azure 內有許多原則可讓此程式變得簡單,而且使用者也可以建立自己的原則。 使用 Azure 安全性功能來持續評估整個環境的組態設定,並主動強制執行設定。

自動確保已解決 Kubernetes 元件的弱點。 使用個別的環境進行開發、測試和生產環境,每個環境都有自己的控件和角色型訪問控制 (RBAC)來進行容器管理。 將所有容器建立與個別使用者身分識別產生關聯,而且應該記錄它以進行稽核。 此設定有助於降低 Rogue 容器的風險。

節點安全性

節點安全性是關於:

  • 運行時間保護。
  • 弱點和合規性管理。

主要風險

背景工作節點具有節點上所有元件的許可權存取權。 攻擊者可以使用任何可網路存取的服務作為進入點,因此從多個點提供主機的存取權可能會嚴重增加其攻擊面。 攻擊面越大,攻擊者就越有機會存取節點及其操作系統。

此外,AKS 節點中使用的容器特定操作系統具有較小的受攻擊面,因為它們不包含可讓一般操作系統直接執行資料庫和網頁伺服器的連結庫。 共用核心的使用會導致在與不同虛擬機中容器相同的環境中執行的容器,產生較大的受攻擊面。 即使 AKS 節點上執行的容器特定作業系統正在使用中,也是如此。

主機操作系統提供可能有弱點和合規性風險的基礎系統元件。 因為它們是低階元件,因此其弱點和設定可能會影響所有裝載的容器。 AKS 可透過 AKS 上執行的節點上的一般 OS 更新,確保這些弱點可保護使用者,並維護背景工作節點的合規性狀態。

當使用者直接登入節點來管理容器,而不是透過 AKS 控制平面時,不當的使用者訪問許可權也可能會導致安全性風險。 直接登入可讓使用者對應用程式進行變更,使其無法存取這些應用程式。

此外,惡意容器可能會導致主機 OS 文件系統遭到竄改。 例如,如果允許容器在主機 OS 中掛接敏感性目錄,該容器可能會對檔案進行變更。 這些變更可能會影響主機上執行的其他容器的安全性。

風險對策

藉由限制 SSH 存取來限制節點存取。

使用 AKS 節點中的容器特定 OS 通常會減少受攻擊面,因為已停用其他服務和功能。 它們也有只讀文件系統,並默認採用其他叢集強化做法。

Azure 平臺會每晚自動將OS安全性修補程式套用至Linux和 Windows節點。 如果 Linux OS 安全性更新需要主機重新啟動,則不會自動重新啟動。 AKS 提供重新啟動機制來套用這些特定修補程式。

Microsoft適用於伺服器的 Defender 不適用於 AKS Linux 和 Windows 節點,因為Microsoft管理其 OS。 如果 AKS 部署所在的訂用帳戶中沒有其他虛擬機,您可以安全地停用適用於伺服器的 Defender Microsoft。

如果環境已部署,包括 企業級登陸區域建議的 Azure 原則,您可以設定排除管理群組中的原則指派,以自動啟用適用於伺服器的 Microsoft Defender,以避免不必要的成本。

應用程式安全性

應用程式安全性是關於:

  • 運行時間保護。
  • 弱點和合規性管理。

主要風險

映像是包含執行應用程式所需的所有元件檔案。 當這些元件的最新版本用來建立映射時,它們可能當時沒有已知的弱點,但可能會快速變更。

您必須讓這些檔案與最新版本保持最新狀態,因為套件開發人員會定期識別安全性弱點。 藉由更新用來建立容器的映像,讓容器在上游進行進一步更新,不同於通常會在主機上更新的傳統應用程式。

惡意檔案也可以內嵌在映像中,然後可用來攻擊系統的其他容器或元件。 第三方容器可以是可能的攻擊媒介。 特定詳細數據可能不明,而且可能會洩漏數據。 也許容器尚未保持最新狀態,且具有必要的安全性更新。

另一個攻擊媒介是直接在映像文件系統內嵌密碼和 連接字串 等秘密。 這種做法可能會導致安全性風險,因為任何具有映像存取權的人都可以存取秘密。

應用程式本身可能有缺陷,例如容易遭受跨網站腳本或 SQL 插入的應用程式。 存在缺陷時,弱點可能會用來讓未經授權的存取其他容器或甚至是主機 OS 內的敏感性資訊。

AKS 容器運行時間可讓您輕鬆地使用 Azure 上可用的各種安全性工具來監視弱點。 如需詳細資訊,請參閱 適用於 Kubernetes 的 Microsoft Defender 簡介。

您也應該控制傳送至容器的輸出網路流量,以確保容器無法跨不同敏感度層級的網路傳送流量,例如裝載安全數據的環境或因特網。 Azure 可讓您輕鬆地使用各種網路和 AKS 安全性功能來控制此控制件。

根據預設,Kubernetes 排程器著重於推動規模,並將節點上執行的工作負載密度最大化。 它們可能會將不同敏感度層級的Pod放在相同節點中,只是因為該主機具有最可用的資源。 當攻擊者使用對公開工作負載的存取權攻擊在相同主機上執行更敏感進程的容器時,此案例可能會導致安全性事件。 遭入侵的容器也可以用來掃描網路,以找出攻擊者可能利用的其他弱點。

風險對策

永遠不要將秘密儲存在應用程式程式代碼或檔案系統中。 秘密應該儲存在金鑰存放區中,並視需要在運行時間提供給容器。 AKS 可以確保只有需要存取特定密鑰的容器可以存取這些密鑰,而且這些秘密不會保存在磁碟上。 例如,Azure 金鑰保存庫 可以安全地儲存這些秘密,並視需要提供給 AKS 叢集。 也很容易確保這些秘密在記憶體和傳輸中都加密。

避免使用不受信任的映像和登錄,並確保只允許來自受信任集合的映像在其叢集中執行。 針對多層式方法:

  • 集中控制信任的映像和登錄。
  • 依密碼編譯簽章個別識別每個映像。
  • 放置原則,以確保所有主機只會執行來自已核准集的映像。
  • 在執行之前先驗證這些簽章。
  • 隨著弱點和組態需求變更,監視和更新這些映像和登錄。

安全運算配置檔應該用來限制容器,並在運行時間配置。 您可以建立自定義配置檔並傳遞至容器運行時間,以進一步限制其功能。 至少,請確定容器是使用預設配置檔來執行。 請考慮針對執行高風險應用程式的容器使用自定義且受限制的配置檔。

工具可以使用行為學習來自動分析應用程式,並偵測異常狀況。 您可以使用第三方解決方案來偵測運行時間的異常狀況。 異常可能包括下列事件:

  • 無效或非預期的進程執行或系統呼叫。
  • 受保護組態檔和二進位檔的變更。
  • 寫入非預期的位置和文件類型。
  • 建立非預期的網路接聽程式。
  • 傳送至非預期網路目的地的流量。
  • 惡意代碼儲存和執行。

Microsoft適用於 Kubernetes 的 Defender 目前正在投資此領域。

容器應該以唯讀模式使用其根文件系統執行,以隔離寫入至已定義的目錄,這些工具可以輕鬆地監視這些目錄。 此設定可讓容器更有彈性地危害,因為您隔離竄改至這些特定位置。 它們可以輕鬆地與應用程式的其餘部分分開。

設計考量

AKS 有數個與其他 Azure 服務的介面,例如 Microsoft Entra ID、Azure 儲存體 和 Azure 虛擬網絡。 在規劃階段,使用這些服務需要特別注意。 AKS 也會新增額外的複雜度,因此您必須考慮套用與基礎結構環境其餘部分相同的安全性治理和合規性機制和控件。

以下是 AKS 安全性治理和合規性的一些其他設計考慮:

  • 如果您根據企業級登陸區域最佳做法在部署的訂用帳戶中建立 AKS 叢集,請熟悉叢集將繼承的 Azure 原則。 如需詳細資訊,請參閱 Azure 登陸區域中包含的原則參考實作
  • 決定叢集的控制平面是否應該透過因特網存取(我們建議使用IP限制),這是預設值,還是只從Azure中的專用網或內部部署作為私人叢集。 如果您的組織遵循企業級登陸區域最佳做法,Corp管理群組會有 Azure 原則 關聯,強制叢集成為私人。 如需詳細資訊,請參閱 Azure 登陸區域中包含的原則參考實作
  • 評估使用內 建 AppArmor Linux 安全性模組來限制容器可執行的動作,例如讀取、寫入、執行或掛接檔系統等系統函式。 例如,所有訂用帳戶都有 Azure 原則,可防止所有 AKS 叢集中的 Pod 建立具特殊許可權的容器。 如需詳細資訊,請參閱 Azure 登陸區域中包含的原則參考實作
  • 評估在進程層級使用 seccomp (secure computing) 來限制容器可執行的進程呼叫。 例如,在登陸區域管理群組中,Azure 原則 套用為一般企業級登陸區域實作的一部分,以防止容器許可權提升至透過適用於 Kubernetes 的 Azure 原則來使用根seccomp目錄。
  • 決定您的容器登錄是可透過因特網存取,還是只能在特定虛擬網路記憶體取。 停用容器登錄中的因特網存取可能會對依賴公用連線存取的其他系統產生負面影響。 範例包括持續整合管線或適用於影像掃描Microsoft Defender。 如需詳細資訊,請參閱 使用 Azure Private Link 私下連線到容器登錄。
  • 決定您的私人容器登錄是跨多個登陸區域共用,還是將專用容器登錄部署到每個登陸區域訂用帳戶。
  • 請考慮使用適用於 Kubernetes Microsoft Defender 的安全性解決方案來進行威脅偵測。
  • 請考慮掃描您的容器映像是否有弱點。
  • 如果沒有非 AKS 虛擬機,請考慮停用 AKS 訂用帳戶中適用於伺服器的 Microsoft Defender,以避免不必要的成本。

設計建議

  • 使用 Azure RBAC 限制對 Kubernetes 叢集組態檔的存取。
  • 保護對資源的 Pod 存取。 提供最少的許可權數目,並避免使用根或特殊許可權提升。
  • 使用 Entra 工作負載 ID 搭配 AKS適用於秘密存放區 CSI 驅動程式的 Azure 金鑰保存庫 提供者來保護秘密、憑證和 連接字串。
  • 盡可能使用 AKS 節點映射升級來更新 AKS 叢集節點映射,或在套用更新之後將節點重新啟動自動化。
  • 使用適用於 Kubernetes 的 Azure 原則 附加元件來監視並強制執行設定。 在根據企業級登陸區域最佳做法部署的訂用帳戶中,此設定會自動透過部署在管理群組層級的 Azure 原則 進行。
  • 在 適用於雲端的 Microsoft Defender檢視 AKS 建議。
  • 使用 適用於容器的Defender Microsoft,雲端原生解決方案可改善、監視和維護叢集、容器及其應用程式的安全性。
  • 將 Azure Container Registry專用和私人實例部署到每個登陸區域訂用帳戶。
  • 使用 Container Registry 的 Private Link 將其連線至 AKS。
  • 使用 Microsoft Defender 弱點管理 或任何其他影像掃描解決方案掃描您的映像是否有弱點。

重要

適用於雲端的 Microsoft Defender 映射掃描與 Container Registry 端點不相容。 如需詳細資訊,請參閱 使用 Private Link 私下連線到容器登錄。