Agregar o quitar las capacidades de Linux en Kubernetes SecurityContext

Agregar O Quitar Las Capacidades De Linux En Kubernetes Securitycontext



Puede ser difícil administrar el grado de privilegios que se proporcionan a cada Pod y contenedor en un contenedor de Kubernetes. Podemos utilizar las capacidades de Kubernetes SecurityContext para agregar o eliminar las capacidades de Linux del Pod y el Contenedor para aumentar la seguridad del contenedor. Este artículo se centra en el uso de securityContext para implementar un ejemplo simple de agregar y eliminar capacidades. La configuración de un archivo yaml para eliminar todas las capacidades y agregar solo una capacidad a un contenedor se proporciona en el ejemplo de muestra. En este artículo, los comandos proc y capsh se usan para mostrar las capacidades del contenedor.

Paso 1: Inicie el servidor Minikube







Primero, inicie el servidor minikube para que pueda ejecutar su aplicación y usar las instrucciones de kubectl. Puede implementar sus nodos, pods e incluso clústeres utilizando el servidor minikube en el entorno de Kubernetes. Se debe usar el siguiente comando para mantener el minikube en modo activo:



> iniciar minikube



Al hacerlo, el servidor minikube se enciende y el entorno de Kubernetes está listo para usarse.





Paso 2: Crear un archivo YAML de Kubernetes



En el segundo paso, cree un archivo YAML para implementar un pod.

Siga los pasos para crear un archivo yaml usando nano:

  • Vaya a la ruta del directorio donde desea crear el archivo o modificar un archivo existente.
  • Escriba el comando nano seguido del nombre del archivo.

Ejecute el siguiente comando nano. Crea un archivo de configuración YAML llamado 'nano podsample.yaml'.

> nano podsample.yaml

Pasemos al siguiente paso, que es ayudarlo a saber cómo configurar un archivo podsample.yaml.

Paso 3: Configurar el archivo YAML

Agregamos la herramienta capsh en el paso anterior para que podamos ver las capacidades de nuestro contenedor.

Tenga en cuenta que ninguno de esos parámetros está configurado para una sección securityContext para este contenedor. Por lo tanto, todos están configurados con los valores predeterminados del sistema. Considere el hecho de que este contenedor funciona como el usuario predeterminado que se proporciona en el Dockerfile a partir del cual se construye si no se define ningún usuario para él en Kubernetes. Para muchos contenedores, este usuario predeterminado es la raíz.

Etapa 4: Crear una vaina

En este paso, vamos a crear podsample.yaml con el siguiente comando adjunto:

> aplicar kubectl -F podsample.yaml

Paso 5: Compruebe las capacidades

En el paso anterior, se crea y ejecuta un pod.

Ahora que tenemos un caparazón dentro, podemos usar capsh para verificar sus capacidades usando el siguiente comando:

> $ kubectl ejecutivo - -stdin - -tty tapas - - ceniza

Usando el comando capsh, es posible ver las capacidades predeterminadas del contenedor que se enumeran a continuación:

Podemos observar a partir del resultado dado que el contenedor tiene muchas capacidades predeterminadas que se otorgan al contenedor en tiempo de ejecución.

Paso 6: Suelta el Único Capacidad y en el contexto de seguridad de Kubernetes

En este paso, eliminamos la capacidad única del contenedor.

Configuremos el archivo yaml usando el siguiente comando:

> nano droppod.yaml

Después de eso, muévase para configurar el archivo droppod.yaml usando el siguiente comando dado:

> aplicar kubectl -F droppod.yaml

Paso 7 : Configurar para agregar la capacidad única en el archivo YAML

En este paso, abra el archivo yaml (dropped.yaml) que se creó en el Paso 6. Luego, configure el contenedor de modo que ya no tenga acceso a la capacidad CAP_MKNOD, lo que elimina la capacidad de crear los nuevos nodos del sistema de archivos.

El archivo configurado es como se muestra:

Paso 8 : Compruebe las capacidades

El archivo yaml está configurado para descartar la capacidad CAP_MKNOD.

En este paso, ejecuta y ejecuta el archivo dropcaps.yaml para verificar las capacidades del contenedor usando el siguiente comando:

> $ kubectl ejecutivo - -stdin - -tty capitulares - - ceniza

Las capacidades se pueden verificar ejecutando el archivo dropcaps:

> # capsh - -imprimir

Podemos observar que este pod eliminó la capacidad CAP_MKNOD en comparación con el primer pod.

Paso 9 : Eliminar todas las capacidades en Kubernetes SecurityContext

Dado que Kubernetes puede descartar una sola capacidad, también puede descartar todas las capacidades a través de securityContext. En este paso, elimine todas las capacidades del contenedor implicando el comando dado:

> nano muestranocap.yaml

Después de eso, configure el archivo samplenocap.yaml usando el siguiente comando:

> kubectl crear -F muestranocap.yaml

Ahora, pasemos al siguiente paso para descartar todas las capacidades en nuestra configuración de securityContext.

Paso 10: configure todas las capacidades en el archivo YAML

En este paso, abra el archivo yaml que se creó en el Paso 9. Luego, configure dentro de container.securityContext y elimine todas las capacidades del contenedor.

El archivo configurado es como se muestra:

Paso 11 : Compruebe las capacidades

Ejecute nocaps en capsh para ver la información sobre las capacidades. En este paso, use el siguiente comando y muestre todas las capacidades del contenedor:

> kubectl ejecutivo - -stdin - -tty Sin mayúsculas - - ceniza

Las capacidades se pueden verificar en la siguiente ilustración ejecutando el archivo samplenocaps yaml en capsh:

> # capsh - -imprimir

El resultado anterior muestra que current=”” ybounding set=”” están vacíos ahora. Las capacidades se eliminan con éxito.

Paso 1 2 : Instalar el bash

En este paso, instale Bash a través de apk, ya que algunas funciones del sistema no funcionarán si no tenemos ninguna capacidad. Aunque nuestro contenedor está funcionando como root, la instalación del paquete Bash falla.

> # apk añadir bash

Paso 1 3 : Verifique la información de capacidades

Hay varias formas de ver las capacidades de nuestro contenedor, como usar los comandos capsh y proc. En este paso, mostramos las capacidades del contenedor usando el comando proc y proc muestra las capacidades como un mapa de bits. Aunque no es tan legible como el resultado de capsh, cada bit que se define aquí representa una determinada capacidad.

> # cd /proc/1/

Aquí, podemos ver que este contenedor en particular no tiene capacidades habilitadas; todos estos valores son cero.

Paso 1 4 : Adición de una capacidad única en Kubernetes SecurityContext

En los pasos anteriores, descartamos una sola capacidad que es CAP_MKNOD y descartamos todas las capacidades. Pero, en este paso, podemos volver a agregar las capacidades.

Ejecute el siguiente comando para crear el archivo yAML:

> nano muestraadd.yaml

Después de eso, configure el archivo sampleadd.yaml.

> kubectl crear -F muestraadd.yaml

Ahora, probemos el archivo sampleadd.yaml y agreguemos una sola capacidad en nuestra configuración de securityContext.

Paso 1 5 : Configurar la capacidad única en el archivo YAML

Ahora, configuremos el archivo agregando la capacidad en spec.container.securityContext en functions.add [“MKNOD”].

La capacidad se muestra en el archivo YAML.

Paso 16 : Compruebe las capacidades

En este paso, ejecute addcaps para verificar las capacidades usando el siguiente comando:

> kubectl ejecutivo - -stdin - -tty añadir mayúsculas - - como

La capacidad adicional se puede ver en el siguiente resultado dado:

corriente = cap_mknod+ep

Conjunto delimitador = cap_mknod

> # capsh - -imprimir

Conclusión

Primero aprendió del ejemplo implementado sobre las capacidades predeterminadas del contenedor que se asignan en el tiempo de ejecución que se muestra con el comando capsh. A continuación, aprendió a soltar una sola capacidad en un contenedor llamado CAP_MKNOD. Luego, también aprendió cómo descartar todas las capacidades del contenedor usando la configuración //drop: –all. Luego, usamos dos formas de mostrar las capacidades de los contenedores: usando los comandos capsh y proc.