Tanzu Kubernetes Grid 服務 使用已啟用的 PodSecurityPolicy 許可控制器佈建 Tanzu Kubernetes 叢集。這表示部署工作負載需要網繭安全性原則。叢集管理員可以將網繭從其使用者帳戶部署到任何命名空間,以及從服務帳戶部署到 kube-system 命名空間。對於所有其他使用案例,您必須明確繫結至 PodSecurityPolicy 物件。叢集包括可繫結至的預設網繭安全性原則,或建立您自己的安全性原則。

關於 Kubernetes 網繭安全性原則

Kubernetes 網繭安全性原則 (PSP)是控制網繭安全性的叢集層級資源。透過 PSP,可讓您控制可部署的網繭類型以及可部署這些網繭的帳戶類型。

PodSecurityPolicy 資源會定義網繭必須滿足才能部署的一組條件。如果未滿足這些條件,則無法部署網繭。單一 PodSecurityPolicy 必須對網繭進行完整驗證。網繭不能在一個原則中有一些規則,同時在另一個原則中又有一些規則。

有多種方式可在 Kubernetes 中實作網繭安全性原則的使用。一般方法是使用角色型存取控制 (RBAC) 物件。ClusterRole 和 ClusterRoleBinding 適用於整個叢集;Role 和 RoleBinding 適用於特定命名空間。如果使用 RoleBinding,則僅會讓網繭在與繫結相同的命名空間中執行。

有兩種方式可建立 Kubernetes 網繭:直接或間接。透過使用您的使用者帳戶部署網繭規格,可以直接建立網繭。透過定義一些更高層級的資源 (例如 Deployment 或 DaemonSet),可以間接建立網繭。在此情況下,服務帳戶會建立基礎網繭。

若要有效使用 PSP,您必須同時考慮上述網繭建立工作流程。如果使用者直接建立網繭,則繫結到使用者帳戶的 PSP 會控制該作業。如果使用者透過服務帳戶建立網繭,則 PSP 必須繫結至用於建立網繭的服務帳戶。如果在網繭規格中未指定服務帳戶,則會使用命名空間的預設服務帳戶。

如需詳細資訊,請參閱 Kubernetes 說明文件中的網繭安全性原則RBAC服務帳戶

Tanzu Kubernetes 叢集的預設 PodSecurityPolicy

此表列出並說明 Tanzu Kubernetes 叢集的有權限和受限制的預設網繭安全性原則,以及與每個原則相關聯的預設 ClusterRole。
表 1. 具有相關聯 ClusterRole 的預設 PodSecurityPolicy
預設 PSP 權限 說明 相關聯的預設 ClusterRole
vmware-system-privileged 以任何身分執行 寬鬆的 PSP。相當於在未啟用 PSP 許可控制器的情況下執行叢集。 psp:vmware-system-privileged 可以使用此 PSP
vmware-system-restricted 必須以非根使用者身分執行 限制性 PSP。不允許對網繭容器進行具有特殊權限的存取,封鎖可能升階至根使用者,並且需要使用多個安全機制。 psp:vmware-system-restricted 可以使用此 PSP

Tanzu Kubernetes 叢集沒有預設繫結

Tanzu Kubernetes Grid 服務 不會為 Tanzu Kubernetes 叢集提供預設的 RoleBinding 和 ClusterRoleBinding。

被授與 vSphere 命名空間編輯權限的 vCenter Single Sign-On 使用者,將指派有 cluster-admin 角色 (對於在該命名空間中部署的任何 Tanzu Kubernetes 叢集)。已驗證的叢集管理員可隱式使用 vmware-system-privileged PSP。雖然從技術層面來說並不是 ClusterRoleBinding,但其效果也相同。

叢集管理員必須定義任何繫結,以允許或限制使用者可部署到叢集的網繭類型。如果使用 RoleBinding,則該繫結僅允許網繭在與繫結相同的命名空間中執行。這樣可以與系統群組配對,以向命名空間中執行的所有網繭授與存取權。向叢集進行驗證的非管理員使用者會指派有 authenticated 角色,因此可繫結至預設 PSP。請參閱向開發人員授與 Tanzu Kubernetes 叢集的存取權

預設 PodSecurityPolicy 對 Tanzu Kubernetes 叢集的影響

將針對任何 Tanzu Kubernetes 叢集強制執行下列行為:
  • 叢集管理員可使用其使用者帳戶,直接在任何命名空間中建立有權限的網繭。
  • 叢集管理員可以在 kube-system 命名空間中建立 Deployment、StatefulSet 和 DaemonSet (每個都建立有權限的網繭)。如果您想要使用其他命名空間,請參閱Tanzu Kubernetes Guestbook 教學課程
  • 叢集管理員可以建立自己的 PSP (除了兩個預設 PSP),並將這些 PSP 繫結到任何使用者。若要定義自己的 PSP,請參閱 Kubernetes 說明文件中的原則順序
  • 在叢集管理員將 PSP 繫結至已驗證的使用者之前,任何已驗證的使用者都無法建立有權限或無權限的網繭。請參閱Tanzu Kubernetes Guestbook 教學課程