Cómo crear una política de seguridad de Kubernetes


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.

kuberneteshero.jpg

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

pspf.jpg "src =" https://tr1.cbsistatic.com/hub/i/r/2020/03/19/c68382e8-949f-49d6-8f84-1ed879eb3e10/resize/770x/ef654ea13ea248de4b555bb3e4384a4d/pspf.jpg

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.

Ver también



Enlace a la noticia first