Pridajte alebo odstráňte možnosti Linuxu v Kubernetes SecurityContext

Pridajte Alebo Odstrante Moznosti Linuxu V Kubernetes Securitycontext



Môže byť ťažké spravovať stupeň privilégií, ktoré sú poskytnuté každému podu a kontajneru v kontajneri Kubernetes. Na zvýšenie bezpečnosti kontajnera môžeme využiť možnosti Kubernetes SecurityContext na pridanie alebo odstránenie možností Linuxu z podu a kontajnera. Tento článok sa zameriava na použitie securityContext na implementáciu jednoduchého príkladu pridávania a odstraňovania možností. Konfigurácia súboru yaml na vymazanie všetkých schopností a pridanie len jednej schopnosti do kontajnera je poskytnutá vo vzorovom príklade. V tomto článku sa na zobrazenie možností kontajnera používajú príkazy proc a capsh.

Krok 1: Spustite server Minikube







Najprv spustite server minikube, aby ste mohli spustiť svoju aplikáciu a použiť pokyny kubectl. Svoje uzly, pody a dokonca klaster môžete nasadiť pomocou servera minikube v prostredí Kubernetes. Na udržiavanie minikube v aktívnom režime je potrebné použiť nasledujúci príkaz:



> spustiť minikube



Tým sa minikube server zapne a prostredie Kubernetes je pripravené na použitie.





Krok 2: Vytvorte súbor Kubernetes YAML



V druhom kroku vytvorte súbor YAML na nasadenie modulu.

Postupujte podľa krokov na vytvorenie súboru yaml pomocou nano:

  • Prejdite na cestu k adresáru, kde chcete vytvoriť súbor alebo upraviť existujúci súbor.
  • Zadajte príkaz nano a za ním názov súboru.

Spustite nasledujúci príkaz nano. Vytvorí konfiguračný súbor YAML s názvom „nano podsample.yaml“.

> nano podsample.yaml

Prejdime k ďalšiemu kroku, ktorý vám pomôže zistiť, ako nakonfigurovať súbor podsample.yaml.

Krok 3: Nakonfigurujte súbor YAML

V predchádzajúcom kroku sme pridali nástroj caph, aby sme videli možnosti nášho kontajnera.

Všimnite si, že žiadny z týchto parametrov nie je nakonfigurovaný pre sekciu securityContext pre tento kontajner. Všetky sú teda nastavené na predvolené nastavenia systému. Zvážte skutočnosť, že tento kontajner funguje ako predvolený používateľ, ktorý je dodaný v súbore Dockerfile, z ktorého je skonštruovaný, ak pre neho nie je v Kubernetes definovaný žiadny používateľ. Pre mnoho kontajnerov je týmto predvoleným používateľom root.

Krok 4: Vytvorte pod

V tomto kroku vytvoríme podsample.yaml s nasledujúcim priloženým príkazom:

> kubectl aplikovať -f podsample.yaml

Krok 5: Skontrolujte schopnosti

V predchádzajúcom kroku sa vytvorí a spustí modul.

Teraz, keď v ňom máme shell, môžeme použiť capsh na overenie jeho schopností pomocou nasledujúceho príkazu:

> $ kubectl exec - -štin - -tty vrchnáky - - popol

Pomocou príkazu capsh je možné vidieť predvolené kapacity kontajnera, ktoré sú uvedené nasledovne:

Z daného výstupu môžeme pozorovať, že kontajner má veľa predvolených schopností, ktoré sú kontajneru dané za behu.

Krok 6: Zahoďte Slobodný Schopnosť Y v Kubernetes SecurityContext

V tomto kroku upustíme od jedinej schopnosti kontajnera.

Nakonfigurujme súbor yaml pomocou nasledujúceho príkazu:

> nano dropod.yaml

Potom prejdite na konfiguráciu súboru droppod.yaml pomocou nasledujúceho príkazu:

> kubectl aplikovať -f droppod.yaml

Krok 7 : Nakonfigurujte pridanie jedinej schopnosti do súboru YAML

V tomto kroku otvorte súbor yaml (dropped.yaml), ktorý bol vytvorený v kroku 6. Potom nastavte kontajner tak, aby už nemal prístup k funkcii CAP_MKNOD, čím sa odstráni možnosť vytvárať nové uzly systému súborov.

Konfigurovaný súbor vyzerá takto:

Krok 8 : Skontrolujte schopnosti

Súbor yaml je nakonfigurovaný tak, aby zrušil schopnosť CAP_MKNOD.

V tomto kroku spustite a spustite súbor dropcaps.yaml, aby ste skontrolovali možnosti kontajnera pomocou nasledujúceho príkazu:

> $ kubectl exec - -štin - -tty kvapky - - popol

Kapacity je možné skontrolovať spustením súboru dropcaps:

> # capsh - -print

Môžeme pozorovať, že tento modul znížil schopnosť CAP_MKNOD v porovnaní s prvým modulom.

Krok 9 : Zrušte všetky schopnosti v Kubernetes SecurityContext

Keďže Kubernetes môže zrušiť jednu schopnosť, môže tiež zrušiť všetky funkcie prostredníctvom securityContext. V tomto kroku zrušte všetky možnosti kontajnera implikovaním daného príkazu:

> nano samplenocap.yaml

Potom nakonfigurujte súbor samplenocap.yaml pomocou nasledujúceho príkazu:

> kubectl vytvoriť -f samplenocap.yaml

Teraz prejdime k ďalšiemu kroku, aby sme zrušili všetky kapacity v našich nastaveniach securityContext.

Krok 10: Nakonfigurujte všetky možnosti v súbore YAML

V tomto kroku otvorte súbor yaml, ktorý bol vytvorený v kroku 9. Potom nakonfigurujte v kontajneri.securityContext a zrušte všetky možnosti kontajnera.

Konfigurovaný súbor vyzerá takto:

Krok jedenásť : Skontrolujte schopnosti

Ak chcete zobraziť informácie o schopnostiach, spustite nocaps in caph. V tomto kroku použite nasledujúci príkaz a zobrazte všetky možnosti kontajnera:

> kubectl exec - -štin - -tty nocaps -- popol

Kapacity je možné skontrolovať na nasledujúcom obrázku spustením súboru samplenocaps yaml vo formáte capsh:

> # capsh - -print

Predchádzajúci výstup ukazuje, že aktuálne =”” a hraničná množina=”” sú teraz prázdne. Schopnosti sú úspešne zrušené.

Krok 1 2 : Nainštalujte Bash

V tomto kroku nainštalujte Bash cez apk, pretože niektoré systémové funkcie nebudú fungovať, ak nemáme vôbec žiadne možnosti. Aj keď náš kontajner funguje ako root, inštalácia balíka Bash zlyhá.

> # apk pridať bash

Krok 1 3 : Skontrolujte informácie o schopnostiach

Existuje niekoľko spôsobov, ako zobraziť možnosti nášho kontajnera, napríklad pomocou príkazov capsh a proc. V tomto kroku zobrazíme kapacity kontajnerov pomocou príkazu proc a proc zobrazí kapacity ako bitmapu. Hoci to nie je také čitateľné ako výsledok z capsh, každý bit, ktorý je tu definovaný, predstavuje určitú schopnosť.

> # cd /proc/1/

Tu vidíme, že tento konkrétny kontajner nemá žiadne povolené funkcie; všetky tieto hodnoty sú nulové.

Krok 1 4 : Pridanie jednej funkcie v Kubernetes SecurityContext

V predchádzajúcich krokoch sme zrušili jednu schopnosť, ktorou je CAP_MKNOD, a zrušili sme všetky schopnosti. V tomto kroku však môžeme pridať funkcie späť.

Vykonajte nasledujúci príkaz na vytvorenie súboru yAML:

> nano sampleadd.yaml

Potom nakonfigurujte súbor sampleadd.yaml.

> kubectl vytvoriť -f sampleadd.yaml

Teraz vyskúšajme súbor sampleadd.yaml a pridajte jednu kapacitu do našich nastavení securityContext.

Krok 1 5 : Nakonfigurujte samostatnú schopnosť v súbore YAML

Teraz nakonfigurujme súbor pridaním schopnosti v spec.container.securityContext do options.add [“MKNOD”].

Schopnosť je zobrazená v súbore YAML.

Krok 16 : Skontrolujte schopnosti

V tomto kroku spustite addcaps a skontrolujte možnosti pomocou nasledujúceho príkazu:

> kubectl exec - -štin - -tty addcaps -- ako

Pridanú kapacitu je možné vidieť na nasledujúcom danom výstupe:

prúd = cap_mknod+ep

Ohraničujúca množina = cap_mknod

> # capsh - -print

Záver

Najprv ste sa z implementovaného príkladu dozvedeli o predvolených schopnostiach kontajnera, ktoré sú priradené v čase spustenia, ktorý sa zobrazuje pomocou príkazu capsh. Ďalej ste sa naučili vypustiť jednu schopnosť v kontajneri s názvom CAP_MKNOD. Potom ste sa tiež naučili, ako zrušiť všetky možnosti kontajnera pomocou konfigurácie //drop: –all. Potom sme použili dva spôsoby zobrazenia schopností kontajnerov – pomocou príkazov capsh a proc.