Tanzu Kubernetes 集群包括可绑定到的默认 PodSecurityPolicy,以进行特权和受限工作负载部署。

关于默认 Pod 安全策略

此部分提供用于创建角色绑定对象(包括 ClusterRoleBinding 和 RoleBinding)以绑定到默认 pod 安全策略的 YAML 和 CLI 命令。有关详细信息,请参见对 Tanzu Kubernetes 集群使用 POD 安全策略

RoleBinding 在特定命名空间内授予权限,而 ClusterRoleBinding 在集群范围内授予权限。决定使用 RoleBindings 还是 ClusterRoleBinding 取决于您的用例。例如,如果使用 ClusterRoleBinding 并配置主体使用 system:serviceaccounts:<namespace>,则可以在创建命名空间之前绑定到 PSP。有关详细信息,请参见 Kubernetes 文档中的 RoleBinding 和 ClusterRoleBinding

示例 1:用于运行特权工作负载集的 ClusterRoleBinding

下面的 kubectl 命令创建了一个 ClusterRoleBinding,用于向经过身份验证的用户授予访问权限,使其能够使用默认 PSP vmware-system-privileged 运行特权工作负载集。
警告: 以声明或强制性方式应用示例 1 允许在集群范围内部署特权工作负载。实际上,示例 1 禁用本机安全控制,因此应谨慎使用并完全了解影响。为了加强安全性,请考虑示例 2、3 和 4。
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: psp:privileged
rules:
- apiGroups: ['policy']
  resources: ['podsecuritypolicies']
  verbs:     ['use']
  resourceNames:
  - vmware-system-privileged
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: all:psp:privileged
roleRef:
  kind: ClusterRole
  name: psp:privileged
  apiGroup: rbac.authorization.k8s.io
subjects:
- kind: Group
  name: system:serviceaccounts
  apiGroup: rbac.authorization.k8s.io
作为应用 YAML 的替代方案,您可以运行以下 kubectl 命令。
kubectl create clusterrolebinding default-tkg-admin-privileged-binding --clusterrole=psp:vmware-system-privileged --group=system:authenticated

示例 2:用于运行特权工作负载集的 RoleBinding

下面的 kubectl 命令创建了一个 RoleBinding,用于向默认命名空间内的所有服务帐户授予访问权限,使其能够使用默认 PSP vmware-system-privileged 运行特权工作负载集。
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rolebinding-default-privileged-sa-ns_default
  namespace: default
roleRef:
  kind: ClusterRole
  name: psp:vmware-system-privileged
  apiGroup: rbac.authorization.k8s.io
subjects:
- kind: Group
  apiGroup: rbac.authorization.k8s.io
  name: system:serviceaccounts
作为应用 YAML 的替代方案,您可以运行以下 kubectl 命令。
kubectl create rolebinding rolebinding-default-privileged-sa-ns_default --namespace=default --clusterrole=psp:vmware-system-privileged --group=system:serviceaccounts

示例3:用于运行受限工作负载集的 ClusterRoleBinding

下面的 YAML 创建了一个 ClusterRoleBinding,用于向经过身份验证的用户授予集群范围的访问权限,使其能够使用默认 PSP vmware-system-restricted 运行受限工作负载集。

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: psp:authenticated
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: Group
  name: system:authenticated
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: psp:vmware-system-restricted

作为应用 YAML 的替代方案,您可以运行以下 kubectl 命令。

kubectl create clusterrolebinding psp:authenticated --clusterrole=psp:vmware-system-restricted --group=system:authenticated

示例 4:用于运行受限工作负载集的 RoleBinding

下面的 YAML 创建了一个 RoleBinding,用于向特定命名空间内的所有服务帐户授予访问权限,使其能够使用默认 PSP vmware-system-restricted 运行受限工作负载集。

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: psp:serviceaccounts
  namespace: some-namespace
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: Group
  name: system:serviceaccounts
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: psp:vmware-system-restricted

作为应用 YAML 的替代方案,您可以运行以下 kubectl 命令。

kubectl create rolebinding psp:serviceaccounts --clusterrole=psp:vmware-system-restricted --group=system:serviceaccounts