本文發表於一年多前。舊文章可能包含過時內容。請檢查頁面中的資訊自發布以來是否已變得不正確。

Kubernetes v1.25:Pod 安全准入控制器進入穩定版

Kubernetes v1.25 的釋出標誌著 Kubernetes 開箱即用的 Pod 安全控制的一個重要里程碑:Pod 安全准入(PSA)已進入穩定階段,而 Pod 安全策略(PSP)已被移除。PSP 在 Kubernetes v1.21 中被棄用,並且在 Kubernetes v1.25 及更高版本中不再可用。

Pod 安全准入控制器取代了 PodSecurityPolicy,只需為名稱空間新增一個標籤,即可更輕鬆地強制執行預定義的Pod 安全標準。Pod 安全標準由 K8s 社群維護,這意味著每當引入影響安全的新 Kubernetes 功能時,你都會自動獲得更新的安全策略。

自 Beta 版以來有什麼新變化?

自 Kubernetes v1.23 中的 Beta 版以來,Pod 安全准入沒有太大變化。重點一直在於改善使用者體驗,同時繼續保持高質量標準。

改進了違規訊息

我們改進了違規訊息,以便你收到更少的重複訊息。例如,當 Baseline 和 Restricted 策略檢查相同權能時,你不會再收到以下訊息:

pods "admin-pod" is forbidden: violates PodSecurity "restricted:latest": non-default capabilities (container "admin" must not include "SYS_ADMIN" in securityContext.capabilities.add), unrestricted capabilities (container "admin" must not include "SYS_ADMIN" in securityContext.capabilities.add)

你會收到這條訊息:

pods "admin-pod" is forbidden: violates PodSecurity "restricted:latest": unrestricted capabilities (container "admin" must not include "SYS_ADMIN" in securityContext.capabilities.add)

改進了名稱空間警告

當你修改名稱空間上的 enforce Pod 安全標籤時,Pod 安全准入控制器會檢查所有現有 Pod 是否存在違規行為,如果任何 Pod 不合規,則會顯示警告。對於具有相同違規行為的 Pod,這些警告現在會被聚合,使得具有許多副本的大型名稱空間更易於管理。例如:

Warning: frontend-h23gf2: allowPrivilegeEscalation != false
Warning: myjob-g342hj (and 6 other pods): host namespaces, allowPrivilegeEscalation != false Warning: backend-j23h42 (and 1 other pod): non-default capabilities, unrestricted capabilities

此外,當你將非特權標籤應用於已被配置為豁免的名稱空間時,你現在會收到一條警告,提醒你這一事實:

Warning: namespace 'kube-system' is exempt from Pod Security, and the policy (enforce=baseline:latest) will be ignored

Pod 安全標準的變更

由 Pod 安全准入強制執行的Pod 安全標準已經更新,以支援新的 Pod OS 欄位。在 v1.25 及更高版本中,如果你使用 Restricted 策略,並且明確將 Pod 的 .spec.os.name 欄位設定為 windows,則以下特定於 Linux 的限制將不再是必需的:

  • Seccomp - Pod 和容器安全上下文中的 seccompProfile.type 欄位
  • 特權提升 - 容器安全上下文中的 allowPrivilegeEscalation 欄位
  • 權能 - 在容器的 capabilities 欄位中要求去除 ALL 權能

在 Kubernetes v1.23 及更早版本中,kubelet 不會強制執行 Pod OS 欄位。如果你的叢集包含執行 v1.23 或更早版本 kubelet 的節點,你應該明確地將受限策略固定到 v1.25 之前的版本。

從 PodSecurityPolicy 遷移到 Pod 安全准入控制器

有關從 PodSecurityPolicy 遷移到 Pod 安全准入控制器的說明,以及選擇遷移策略的幫助,請參閱遷移指南。我們還在開發一個名為 pspmigrator 的工具,以自動化部分遷移過程。

我們將在即將到來的 KubeCon 2022 北美大會的演講《從 Pod 安全策略遷移》中更詳細地討論 PSP 遷移。使用 KubeCon 北美大會日程瞭解更多資訊。