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:
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
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.