Los clústeres de servicio TKG que utilizan TKR 1.24 y versiones anteriores incluyen la directiva de seguridad de pods predeterminada a la que se puede enlazar para la implementación de cargas de trabajo con privilegios y restringidas.
Aplicar la directiva de seguridad de pods predeterminada mediante enlaces de función y ClusterRole
Un objeto RoleBinding concede permisos dentro de un espacio de nombres específico. Un objeto ClusterRoleBinding concede 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.
En las siguientes secciones, se brindan comandos de YAML y CLI para crear objetos RoleBinding y ClusterRoleBinding que autorizan el uso de la directiva de seguridad de pods predeterminada.
Ejemplo 1: ClusterRoleBinding para ejecutar un conjunto privilegiado de cargas de trabajo
vmware-system-privileged
.
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
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
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
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
kubectl create rolebinding psp:serviceaccounts --clusterrole=psp:vmware-system-restricted --group=system:serviceaccounts -n some-namespace
Función de ejemplo para la directiva de seguridad de pods
Si define su propia directiva de seguridad de pods (Pod Security Policy, PSP) para implementar cargas de trabajo, consulte este ejemplo para crear una función o ClusterRole que haga referencia a la PSP personalizada.
El siguiente ejemplo demuestra una función enlazada a PodSecurityPolicy. En la definición de la función, la función example-role
otorgada al verbo use
para un recurso de PSP personalizado que usted defina. De forma alternativa, utilice una de las PSP predeterminadas. A continuación, cree un enlace.
apiVersion: rbac.authorization.k8s.io/v1beta1 kind: Role metadata: name: example-role namespace: tkgs-cluster-ns rules: - apiGroups: - "" resources: - configmaps verbs: - create - get - list - watch - update - apiGroups: - "" resources: - events verbs: - create - update - patch - apiGroups: - extensions resourceNames: - CUSTOM-OR-DEFAULT-PSP resources: - podsecuritypolicies verbs: - use