Los clústeres de Tanzu Kubernetes incluyen PodSecurityPolicy predeterminados a los que se puede enlazar para la implementación de cargas de trabajo con privilegios y restringidas.

Acerca de la directiva de seguridad de pods predeterminada

En esta sección, se proporcionan comandos de YAML y CLI para crear objetos de enlace de funciones a la directiva de seguridad de pods predeterminada, incluidos ClusterRoleBinding y RoleBinding. Para obtener más información, consulte Usar las directivas de seguridad de pods con clústeres de Tanzu Kubernetes.

RoleBinding otorga permisos en un espacio de nombres específico, mientras que ClusterRoleBinding otorga permisos en todo el clúster. La decisión de utilizar RoleBindings o ClusterRoleBinding depende de cada caso práctico. Por ejemplo, si usa ClusterRoleBinding y configura los asuntos para que usen system:serviceaccounts:<namespace>, puede enlazar a una PSP antes de que se cree el espacio de nombres. Para obtener más información, consulte RoleBinding y ClusterRoleBinding en la documentación de Kubernetes.

Ejemplo 1: ClusterRoleBinding para ejecutar un conjunto privilegiado de cargas de trabajo

El siguiente comando kubectl crea un ClusterRoleBinding que otorga acceso a los usuarios autenticados para que ejecuten un conjunto de cargas de trabajo con privilegios mediante la PSP predeterminada vmware-system-privileged.
Advertencia: La aplicación del Ejemplo 1, de forma declarativa o imperativa, permite la implementación de cargas de trabajo con privilegios en todo el clúster. En efecto, el Ejemplo 1 deshabilita los controles de seguridad nativos y debe utilizarse con precaución y con total conocimiento de las implicaciones. Para una seguridad más estricta, considere los Ejemplos 2, 3 y 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
Como alternativa a la aplicación de YAML, puede ejecutar el siguiente de comando de kubectl:
kubectl create clusterrolebinding default-tkg-admin-privileged-binding --clusterrole=psp:vmware-system-privileged --group=system:authenticated

Ejemplo 2: RoleBinding para ejecutar un conjunto de cargas de trabajo con privilegios

El siguiente comando kubectl crea un RoleBinding que otorga acceso a todas las cuentas de servicio dentro del espacio de nombres predeterminado para ejecutar un conjunto de cargas de trabajo con privilegios mediante la PSP predeterminada 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
Como alternativa a la aplicación de YAML, puede ejecutar el siguiente de comando de kubectl:
kubectl create rolebinding rolebinding-default-privileged-sa-ns_default --namespace=default --clusterrole=psp:vmware-system-privileged --group=system:serviceaccounts

Ejemplo 3: ClusterRoleBinding para ejecutar un conjunto restringido de cargas de trabajo

El siguiente YAML crea un ClusterRoleBinding que otorga a los usuarios autenticados acceso en todo el clúster para ejecutar un conjunto restringido de cargas de trabajo mediante la PSP predeterminada 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

Como alternativa a la aplicación de YAML, puede ejecutar el siguiente de comando de kubectl:

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

Ejemplo 4: RoleBinding para ejecutar un conjunto restringido de cargas de trabajo

El siguiente YAML crea un RoleBinding que otorga acceso a todas las cuentas de servicio dentro de un espacio de nombres específico para ejecutar un conjunto restringido de cargas de trabajo mediante la PSP predeterminada 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

Como alternativa a la aplicación de YAML, puede ejecutar el siguiente de comando de kubectl:

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