Configurar permisos de seguridad de pod en Kubernetes

El permiso de seguridad de pod en Kubernetes es una función que proporciona funciones de seguridad para los pods que se ejecutan en un espacio de nombres. Los estándares nos permiten restringir de manera fácil y consistente el comportamiento de los pods. Esta guía trata sobre la gestión de la seguridad de los pods. Usaremos un escenario básico para aprender a configurar la seguridad de pods en pods que se ejecutan en un espacio de nombres.

Contenidos

¿Qué es la admisión de seguridad de pod en Kubernetes?

Para hacer cumplir los estándares de seguridad del pod en los pods que se ejecutan en un espacio de nombres, Kubernetes v1.22 tiene un controlador de admisión integrado llamado Admisión de seguridad del pod. Estos valores predeterminados se utilizan para establecer excepciones y valores predeterminados en todo el clúster. Para configurar el acceso de seguridad del pod, debe tener al menos v1.22 Kubernetes y PodSecurity Feature Gate habilitados. La versión Alpha de Kubernetes v1.22 tiene una política de seguridad de pod (PSP) que está obsoleta en Kubernetes v1.25. Ahora, la extensión de la Política de seguridad de pod (PSP) se llama Admisión de seguridad de pod (PSA). A diferencia de la política de seguridad de pod, la ingestión de seguridad de pod no admite recursos de mutación pero valida el controlador de admisión. Además, los estándares de seguridad de pod han definido tres niveles de aprobación de seguridad de pod: base, restringido y privilegiado. Estos niveles se colocan en un contexto de seguridad de un pod y varios otros campos por el permiso de seguridad del pod. Después de configurar el modo de control de acceso de seguridad del pod para cada espacio de nombres, puede configurar el espacio de nombres para especificar ese modo. El conjunto de etiquetas proporcionado por Kubernetes le permite elegir cualquier nivel predeterminado de seguridad de pod para un espacio de nombres. Ahora, aprendamos cómo configurar la aprobación de seguridad del pod con un ejemplo simple.
requisitos
Antes de continuar, asegúrese de tener estas herramientas básicas instaladas y las funciones requeridas habilitadas:

  • Ubuntu 22.04 u otra versión reciente
  • Clúster de Kubernetes v1.22 con el indicador –feature-gates=»….,PodSecurity=true» habilitado.
  • Clúster de minikube
  • Herramienta de línea de comandos de Kubectl

Una vez que tenga estas herramientas configuradas en su sistema, puede configurar los permisos de seguridad del pod en Kubernetes. Continúe con la sección de implementación suponiendo que ya haya instalado todos estos requisitos previos.

¿Cómo configuro el acceso de seguridad del pod?

Siga los pasos que se indican a continuación y configure fácilmente el permiso de seguridad del pod en Kubernetes para su sistema.

Paso #1: Inicie Kubernetes

Primero, debemos poner en funcionamiento el clúster de Minikube. Para hacer esto, usaremos el comando que se proporciona a continuación para iniciarlo correctamente: Este comando garantizará que el clúster de Minikube esté funcionando, permitiéndole implementar su comando y ejecutar aplicaciones en el clúster.

Paso n.º 2: hacer cumplir la aprobación de seguridad del pod con la implementación

Hay tres niveles definidos por los estándares de seguridad de pod: Baseline, Privilege y Restricted. Aquí aplicaremos una aprobación de seguridad de pod en dos niveles de estándares de seguridad de pod, privilegiado y restringido.

Paso 2(a): Cree espacios de nombres para pods

Primero creamos dos espacios de nombres. El primer espacio de nombres se crea con la política privilegiada con el siguiente comando: > kubectl create namespace test-privileged

El segundo espacio de nombres se crea con la política restringida usando el siguiente comando: > kubectl create namespace test-restricted

Paso #2(b): Establecer estándares de seguridad para los espacios de nombres

Ahora debemos establecer los valores predeterminados de seguridad para los espacios de nombres que creamos en el paso anterior. Para establecer el valor predeterminado de seguridad para la política privilegiada, usamos el siguiente comando: > kubectl label –overwrite ns test-privileged pod-security.kubernetes.io/enforce=privileged pod-security.kubernetes.io/warn=privileged

Usamos el siguiente comando para establecer el valor predeterminado de seguridad para la política restringida: > kubectl label –overwrite ns test-restricted pod-security.kubernetes.io/enforce=restricted pod-security.kubernetes.io/warn=restricted

Estos estándares permiten que los espacios de nombres bloqueen cualquier pod en ejecución y envíen una alerta al usuario cuando un pod intente ejecutarse si no se cumple la política configurada. Ahora intentemos implementar pods en el espacio de nombres para ver qué resultado obtenemos.

Paso n.º 3: implementar pods en espacios de nombres

Se han creado los espacios de nombres y se han establecido estándares de seguridad para ellos. Entonces, implementemos pods en estos espacios de nombres administrados por pod-security.

Paso 3(a): Intenta implementar pods

Primero, implementemos pods en la política privilegiada con el comando que se proporciona a continuación: kalsoom@kalsoom-VirtualBox> kubectl apply –namespace test-privileged -f https://raw.githubusercontent.com/Azure-Samples/azure-voting-app -redis/master/azure-vote-todo-en-uno-redis.yaml

En segundo lugar, implementamos grupos de políticas privilegiados mediante el comando proporcionado a continuación: kalsoom@kalsoom-VirtualBox > kubectl apply –namespace test-restricted -f https://raw.githubusercontent.com/Azure-Samples/azure-voting -app -redis /master/azure-vote-todo-en-uno-redis.yaml

Como puede ver, cuando intentamos implementar pods con la política restringida, se generó una advertencia. Debido a que los pods están violando la política configurada, se generó esta alerta. No se genera ninguna alerta para la política privilegiada porque ningún pod violó la política configurada.

Paso #3(b): Comprobar si los pods se están ejecutando en espacios de nombres

Ahora, verifiquemos si hay un pod ejecutándose en los espacios de nombres o no. Primero verificamos la política privilegiada con el siguiente comando: > kubectl get pods –namespace test-privileged

Tenga en cuenta que algunos pods se ejecutan en el espacio de nombres. No se generaron advertencias para la política privilegiada, lo que significa que hay algunos pods ejecutándose en el espacio de nombres que no infringen la política configurada. Ahora, verifiquemos si un pod se está ejecutando en el espacio de nombres restringido con el siguiente comando: > kubectl get pods –namespace test-restricted

No se está ejecutando ningún pod en el espacio de nombres restringido. Recuerda que recibimos la advertencia de que algunos pods violaron la política configurada en el paso anterior.

Paso 4: Eliminar el espacio de nombres

El paso final es eliminar los espacios de nombres que creamos. Utilice el siguiente comando para eliminar los espacios de nombres: > kubectl delete namespace test-restricted test-privileged Este comando elimina ambos espacios de nombres del clúster.

Conclusión

En este artículo, proporcionamos pautas para la Admisión de seguridad de pod (PSA) en Kubernetes. Examinamos qué es una aprobación de seguridad de pod en Kubernetes. También aprendimos a configurar los permisos de seguridad de los pods en Kubernetes para los pods que se ejecutan en un espacio de nombres. Al demostrar un escenario simple, mostramos cómo configurar fácilmente la aprobación de seguridad del pod para los pods que se ejecutan en diferentes espacios de nombres.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.