Agregar o eliminar las capacidades de Linux en Kubernetes SecurityContext

Agregar o eliminar las capacidades de Linux en Kubernetes SecurityContext

Puede ser difícil administrar el grado de privilegios que se proporcionan a cada vaina 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 utilizar el 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 utilizan para mostrar las capacidades del contenedor.

Paso 1: Inicie el servidor de Minikube

Primero, inicie el servidor Minikube para que pueda ejecutar su aplicación y usar las instrucciones de Kubectl. Puede implementar sus nodos, vainas e incluso clúster utilizando el servidor Minikube en el entorno Kubernetes. El siguiente comando debe usarse para mantener el minikube en modo activo:

> Minikube Start

Al hacerlo, el servidor de Minikube se enciende y el entorno Kubernetes está listo para su uso.

Paso 2: Crear un archivo Kubernetes Yaml

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 de 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 una muestra.archivo 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 de SecurityContext para este contenedor. Por lo tanto, todos están configurados en los valores predeterminados del sistema. Considere el hecho de que este contenedor funciona como el usuario predeterminado que se suministra en el DockerFile a partir del que se construye si no se define ningún usuario en Kubernetes. Para muchos contenedores, este usuario predeterminado es la raíz.

Etapa 4: Crear una vaina

En este paso, creemos podsample.Yaml con el siguiente comando adjunto:

> kubectl aplicar -f podsample.yaml

Paso 5: Verifique las capacidades

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

Ahora que tenemos un caparazón dentro de él, podemos usar Capsh para verificar sus capacidades utilizando el siguiente comando:

> $ kubectl ejecut - -stdin - -tty taps - - cenizas

Usando el comando CAPSH, es posible ver las capacidades predeterminadas del contenedor que se enumeran de la siguiente manera:

Podemos observar en la salida dada que el contenedor tiene muchas capacidades predeterminadas que se dan al contenedor en tiempo de ejecución.

Paso 6: Colgar el Soltero CapacidadY En Kubernetes SecurityContext

En este paso, dejamos caer la capacidad única del contenedor.

Configuremos el archivo YAML utilizando el siguiente comando:

> nano dropod.yaml

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

> kubectl aplicar -f droppod.yaml

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

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

El archivo configurado es como se muestra:

Paso 8: Verifique las capacidades

El archivo YAML está configurado para soltar la capacidad CAP_MKNOD.

En este paso, ejecute y ejecute DropCaps.Archivo YAML para verificar las capacidades del contenedor utilizando el siguiente comando:

> $ kubectl ejecut - -stdin - -tty dropcaps - - ceniza

Las capacidades se pueden verificar ejecutando el archivo DropCaps:

> # Capsh - -impresión

Podemos observar que esta cápsula dejó caer la capacidad de Cap_Mknod en comparación con el primer pod.

Paso 9: Deje caer todas las capacidades en Kubernetes SecurityContext

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

> Nano Sampenocap.yaml

Después de eso, configure la muestra.Archivo YAML usando el siguiente comando:

> Kubectl Crear -f SumePlenocap.yaml

Ahora, pasemos al siguiente paso para soltar 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 del contenedor.SecurityContext y suelte todas las capacidades del contenedor.

El archivo configurado es como se muestra:

Paso 11: Verifique las capacidades

Ejecute las 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 exec - -stdin - -tty nocaps - - ceniza

Las capacidades se pueden verificar en la siguiente ilustración ejecutando el archivo yaml de muestreads en Capsh:

># Capsh - -impresión

La salida anterior muestra que la corriente = "" y el acorde set = "" están vacías ahora. Las capacidades se dejan caer con éxito.

Paso 12: Instale la fiesta

En este paso, instale BASH a través de APK ya que algunas funciones del sistema no funcionarán si no tenemos ninguna capacidad en absoluto. A pesar de que nuestro contenedor está funcionando como una raíz, la instalación del paquete bash falla.

> # apk agregar bash

Paso 13: Verifique la información de capacidades

Hay varias formas de ver las capacidades de nuestro contenedor, como el uso de los comandos CAPSH y PROC. En este paso, mostramos las capacidades del contenedor utilizando el comando PROC y PROC muestra capacidades como un mapa de bits. Aunque no es tan legible como el resultado de Capsh, cada bit que se define aquí representa una cierta capacidad.

> # CD/Proc/1/

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

Paso 14: Agregar una sola capacidad en Kubernetes SecurityContext

En los pasos anteriores, dejamos caer una sola capacidad que es Cap_Mknod y dejamos caer todas las capacidades. Pero, en este paso, podemos agregar las capacidades.

Ejecute el siguiente comando para crear el archivo YAML:

> nano muestreado.yaml

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

> kubectl create -f samplpeadd.yaml

Ahora, intentemos el Samplineadd.archivo YAML y agregar una sola capacidad en nuestra configuración de SecurityContext.

Paso 15: Configurar la capacidad única en el archivo YAML

Ahora, configuremos el archivo agregando la capacidad en la especificación.envase.SecurityContext en capacidades.Agregar ["mknod"].

La capacidad se muestra en el archivo YAML.

Paso dieciséis: Verifique las capacidades

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

> kubectl exec - -stdin - -tty addCaps - - AS

La capacidad adicional se puede ver en la siguiente salida dada:

actual = Cap_mknod+EP

Set de límite = Cap_mknod

> # Capsh - -impresión

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 soltar todas las capacidades del contenedor utilizando la configuración // Drop: -tal. Luego, utilizamos dos formas de mostrar las capacidades de los contenedores: utilizando los comandos Capsh y PROC.