Si está buscando llevar su seguridad de Kubernetes al siguiente nivel, querrá comenzar a trabajar con políticas de seguridad de pod. Aquí hay una introducción rápida a esta característica.

Imagen: Jack Wallen
Kubernetes es una herramienta de administración de contenedores increíblemente poderosa. Si ha trabajado con contenedores el tiempo suficiente, sabe que la seguridad tiene que desempeñar un papel central en la implementación de sus aplicaciones y servicios. Sin bloquear esos contenedores, podría causar estragos en su purple.
Ciertamente no quieres eso.
¿Entonces que puedes hacer? Con Kubernetes, debe considerar establecer políticas de seguridad de pod.
VEA: 10 cosas que las empresas mantienen en sus propios centros de datos (descarga TechRepublic)
¿Qué es una vaina?
Si eres nuevo en Kubernetes, es posible que no sepas qué es una cápsula. En pocas palabras, un pod Kubernetes es una colección de procesos que forman un contenedor, como:
En otras palabras, un pod es una unidad de despliegue, ya sea un contenedor único o varios contenedores que trabajan juntos.
Ahora que comprende qué es un pod, veamos qué podemos hacer para elaborar una política de seguridad.
¿Qué es una política de seguridad de pod?
La política de seguridad de pod de Kubernetes es un recurso que controla la seguridad de una especificación de pod. Usando la definición de objeto PodSecurityPolicy, puede controlar cosas como:
-
La capacidad de ejecutar contenedores privilegiados
-
Escalada de privilegios
-
Acceso a tipos de volumen.
-
Acceso a sistemas de archivos host
-
Uso de redes de host
Pero, ¿cómo definir la política? Como con casi todo en Kubernetes, esto se define dentro de un archivo YAML.
Cómo crear una política de seguridad de pod Kubernetes
Creemos una política de seguridad de pod de Kubernetes que evite la creación de pods privilegiados y controle el acceso a los volúmenes. Primero, debemos crear el archivo YAML. Desde una ventana de terminal, emita el comando:
nano psp.yaml
En ese archivo, pegue lo siguiente:
apiVersion: plan/v1beta1 kind: PodSecurityPolicy metadata: name: psp spec: privileged: false seLinux: rule: RunAsAny supplementalGroups: rule: RunAsAny runAsUser: rule: RunAsAny fsGroup: rule: RunAsAny volumes: - '*'
En ese archivo, evitamos que se creen pods privilegiados con la línea:
privileged: false
También permitimos lo siguiente (a través de la regla RunAsAny):
-
SeLinux: permite a cualquier usuario controlar SELinux dentro de los pods
-
Grupos de Linux – Grupos suplementarios
-
runAsUser: permite a los usuarios ejecutar puntos de entrada de contenedor con un nombre de usuario diferente
-
fsGroup: volúmenes que admiten la gestión de propiedad
Guarde y cierre el archivo.
Ahora tenemos que aplicar la política. Esto se hace con el comando:
kubectl use -f psp.yaml
El comando informará:
podsecurity.policy/psp created
En cualquier momento, puede modificar el archivo YAML de la política y ejecutar el mismo comando para reconfigurar la política.
Verifique para asegurarse de que su política esté disponible emitiendo el comando:
kubectl get psp
La salida enumerará los detalles de la política (Figura A)
Figura A
Nuestra política de seguridad de pod Kubernetes ha sido creada.
Cómo asignar una política de seguridad de pod Kubernetes
Ahora que ha creado su política, ¿cómo la asigna? Esto se realiza mediante el Control de acceso basado en roles (RBAC). Cree una configuración RBAC para la política con el comando:
nano rbac-psp.yaml
En ese archivo, pegue lo siguiente:
sort: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: title: psp:psp regulations: - apiGroups: - extensions sources: - podsecuritypolicies resourceNames: - psp verbs: - use --- form: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: identify: psp:psp topics: - sort: Group identify: technique:authenticated apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole title: psp:psp apiGroup: rbac.authorization.k8s.io
El archivo anterior creará un rol de clúster llamado psp que puede usar nuestra nueva política que llamamos psp. Esto también creará un enlace de roles en todo el clúster que dará acceso al rol psp: psp a cada usuario autenticado.
Guarde y cierre el archivo. Cree esta política con el comando:
kubectl utilize -f rbac-psp.yaml
Ahora hemos creado una política y un control RBAC. Veamos si ahora podemos usar esta nueva política. Emita el comando:
kubectl auth can-i use psp/psp
La salida debería decir «sí».
Por supuesto, debería decir «sí», ya que soy un usuario administrador. Pero, ¿y si lo probamos con algún usuario? Haz eso con el comando:
kubectl auth can-i use psp/psp --as-team=method:authenticated --as=any-consumer
Ahora debería ver «no» en la respuesta.
Acaba de crear una política de seguridad de pod Kubernetes, la asignó con RBAC y la probó para asegurarse de que la política realmente funcione. Estás un paso más cerca de obtener más seguridad con tus implementaciones de contenedores Kubernetes.