Afegiu o elimineu les capacitats de Linux a Kubernetes SecurityContext

Afegiu O Elimineu Les Capacitats De Linux A Kubernetes Securitycontext



Pot ser difícil gestionar el grau de privilegis que es proporcionen a cada pod i contenidor en un contenidor de Kubernetes. És possible que utilitzem les capacitats de SecurityContext de Kubernetes per afegir o suprimir les capacitats de Linux del pod i del contenidor per augmentar la seguretat del contenidor. Aquest article se centra a utilitzar el securityContext per implementar un exemple senzill d'afegir i suprimir capacitats. La configuració d'un fitxer yaml per suprimir totes les capacitats i afegir només una capacitat a un contenidor es proporciona a l'exemple d'exemple. En aquest article, les ordres proc i capsh s'utilitzen per mostrar les capacitats del contenidor.

Pas 1: inicieu el servidor Minikube







Primer, inicieu el servidor minikube perquè pugueu executar la vostra aplicació i utilitzar les instruccions kubectl. Podeu desplegar els vostres nodes, pods i fins i tot clúster mitjançant el servidor minikube a l'entorn Kubernetes. S'ha d'utilitzar l'ordre següent per mantenir el minikube en mode actiu:



> iniciar minikube



En fer-ho, el servidor minikube s'encén i l'entorn Kubernetes està preparat per utilitzar-lo.





Pas 2: Creeu un fitxer YAML de Kubernetes



En el segon pas, creeu un fitxer YAML per desplegar un pod.

Seguiu els passos per crear un fitxer yaml amb nano:

  • Aneu a la ruta del directori on voleu crear el fitxer o modificar un fitxer existent.
  • Escriviu l'ordre nano seguida del nom del fitxer.

Executeu la següent comanda nano. Crea un fitxer de configuració YAML anomenat 'nano podsample.yaml'.

> nano podsample.yaml

Passem al següent pas que us ajudarà a saber com configurar un fitxer podsample.yaml.

Pas 3: Configureu el fitxer YAML

Afegim l'eina capsh al pas anterior perquè puguem veure les capacitats del nostre contenidor.

Tingueu en compte que cap d'aquests paràmetres està configurat per a una secció securityContext per a aquest contenidor. Així, tots estan configurats per defecte del sistema. Tingueu en compte el fet que aquest contenidor funciona com l'usuari predeterminat que es proporciona al Dockerfile a partir del qual es construeix si no hi ha cap usuari definit per a ell a Kubernetes. Per a molts contenidors, aquest usuari predeterminat és l'arrel.

Pas 4: Crea un pod

En aquest pas, creem podsample.yaml amb la següent comanda adjunta:

> s'aplica kubectl -f podsample.yaml

Pas 5: Comproveu les capacitats

Al pas anterior, es crea i s'executa un pod.

Ara que tenim un shell dins, podem utilitzar capsh per verificar les seves capacitats mitjançant l'ordre següent:

> $ kubectl executiu - -stdin - -tty gorres -- cendra

Mitjançant l'ordre capsh, és possible veure les capacitats per defecte del contenidor que s'enumeren de la següent manera:

Podem observar a partir de la sortida donada que el contenidor té moltes capacitats per defecte que es donen al contenidor en temps d'execució.

Pas 6: Deixa caure el Solter Capacitat i a Kubernetes SecurityContext

En aquest pas, eliminem la capacitat única del contenidor.

Configurem el fitxer yaml amb l'ordre següent:

> nano dropod.yaml

Després d'això, aneu a configurar el fitxer droppod.yaml mitjançant l'ordre següent:

> s'aplica kubectl -f droppod.yaml

Pas 7 : Configureu per afegir la capacitat única al fitxer YAML

En aquest pas, obriu el fitxer yaml (dropped.yaml) que es va crear al pas 6. A continuació, configureu el contenidor de manera que ja no tingui accés a la capacitat CAP_MKNOD, que elimina la possibilitat de crear els nous nodes del sistema de fitxers.

El fitxer configurat és el que es mostra:

Pas 8 : Comproveu les capacitats

El fitxer yaml està configurat per eliminar la capacitat CAP_MKNOD.

En aquest pas, executeu i executeu el fitxer dropcaps.yaml per comprovar les capacitats del contenidor mitjançant l'ordre següent:

> $ kubectl executiu - -stdin - -tty dropcaps - - cendra

Les capacitats es poden comprovar executant el fitxer dropcaps:

> # capsh - -print

Podem observar que aquest pod va deixar caure la capacitat CAP_MKNOD en comparació amb el primer pod.

Pas 9 : Elimina totes les capacitats a Kubernetes SecurityContext

Atès que Kubernetes pot eliminar una única capacitat, també pot eliminar totes les capacitats mitjançant securityContext. En aquest pas, deixeu anar totes les capacitats del contenidor implicant l'ordre donada:

> nano samplenocap.yaml

Després d'això, configureu el fitxer samplenocap.yaml amb l'ordre següent:

> kubectl crear -f samplenocap.yaml

Ara, passem al següent pas per eliminar totes les capacitats de la nostra configuració de context de seguretat.

Pas 10: configureu totes les capacitats del fitxer YAML

En aquest pas, obriu el fitxer yaml que es va crear al pas 9. A continuació, configureu dins del container.securityContext i deixeu anar totes les capacitats del contenidor.

El fitxer configurat és el que es mostra:

Pas 11 : Comproveu les capacitats

Executeu els nocaps a capsh per veure la informació sobre les capacitats. En aquest pas, utilitzeu l'ordre següent i mostreu totes les capacitats del contenidor:

> kubectl executiu - -stdin - -tty nocaps - - cendra

Les capacitats es poden comprovar a la il·lustració següent executant el fitxer samplenocaps yaml a capsh:

> # capsh - -print

La sortida anterior mostra que l'actual='' i el conjunt de límits='' estan buits ara. Les capacitats s'han eliminat correctament.

Pas 1 2 : Instal·leu el Bash

En aquest pas, instal·leu Bash mitjançant apk, ja que algunes funcions del sistema no funcionaran si no tenim cap capacitat. Tot i que el nostre contenidor funciona com a arrel, la instal·lació del paquet Bash falla.

> # apk afegeix bash

Pas 1 3 : Comproveu la informació de capacitats

Hi ha diverses maneres de veure les capacitats del nostre contenidor, com ara utilitzar les ordres capsh i proc. En aquest pas, mostrem les capacitats del contenidor mitjançant l'ordre proc i proc mostra les capacitats com a mapa de bits. Tot i que no és tan llegible com el resultat de capsh, cada bit que es defineix aquí representa una capacitat determinada.

> # cd /proc/1/

Aquí, podem veure que aquest contenidor en particular no té cap capacitat habilitat; tots aquests valors són zero.

Pas 1 4 : Afegir una capacitat única a Kubernetes SecurityContext

En els passos anteriors, vam deixar caure una única capacitat que és CAP_MKNOD i vam deixar anar totes les capacitats. Però, en aquest pas, podem tornar a afegir les capacitats.

Executeu l'ordre següent per crear el fitxer yAML:

> nano sampleadd.yaml

Després d'això, configureu el fitxer sampleadd.yaml.

> kubectl crear -f sampleadd.yaml

Ara, provem el fitxer sampleadd.yaml i afegim una única capacitat a la nostra configuració de securityContext.

Pas 1 5 : Configureu la capacitat única al fitxer YAML

Ara, configurem el fitxer afegint la capacitat a spec.container.securityContext a capabilities.add [“MKNOD”].

La capacitat es mostra al fitxer YAML.

Pas 16 : Comproveu les capacitats

En aquest pas, executeu els addcaps per comprovar les capacitats mitjançant l'ordre següent:

> kubectl executiu - -stdin - -tty addcaps - - com

La capacitat afegida es pot veure a la següent sortida donada:

corrent = cap_mknod+ep

Conjunt delimitador = cap_mknod

> # capsh - -print

Conclusió

Primer heu après de l'exemple implementat sobre les capacitats predeterminades del contenidor que s'assignen en temps d'execució que es mostra amb l'ordre capsh. A continuació, heu après a deixar anar una única capacitat en un contenidor anomenat CAP_MKNOD. Aleshores, també vau aprendre a eliminar totes les capacitats del contenidor mitjançant la configuració //drop: –all. A continuació, vam utilitzar dues maneres de mostrar les capacitats dels contenidors: utilitzant les ordres capsh i proc.