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