Přidejte nebo odeberte možnosti Linuxu v Kubernetes SecurityContext

Pridejte Nebo Odeberte Moznosti Linuxu V Kubernetes Securitycontext



Může být obtížné spravovat stupeň oprávnění, která jsou poskytována každému podu a kontejneru v kontejneru Kubernetes. Můžeme využít funkce Kubernetes SecurityContext k přidání nebo odstranění možností Linuxu z podu a kontejneru, abychom zvýšili zabezpečení kontejneru. Tento článek se zaměřuje na použití securityContext k implementaci jednoduchého příkladu přidávání a odstraňování funkcí. Konfigurace souboru yaml pro odstranění všech schopností a přidání pouze jedné schopnosti do kontejneru je uvedena v ukázkovém příkladu. V tomto článku se k zobrazení možností kontejneru používají příkazy proc a capsh.

Krok 1: Spusťte server Minikube







Nejprve spusťte server minikube, abyste mohli spustit aplikaci a používat pokyny kubectl. Své uzly, pody a dokonce i cluster můžete nasadit pomocí serveru minikube v prostředí Kubernetes. Pro udržení minikube v aktivním režimu je nutné použít následující příkaz:



> spustit minikube



Tím se minikube server zapne a prostředí Kubernetes je připraveno k použití.





Krok 2: Vytvořte soubor Kubernetes YAML



Ve druhém kroku vytvořte soubor YAML pro nasazení pod.

Chcete-li vytvořit soubor yaml pomocí nano, postupujte takto:

  • Přejděte na cestu k adresáři, kde chcete vytvořit soubor nebo upravit existující soubor.
  • Zadejte příkaz nano následovaný názvem souboru.

Spusťte následující příkaz nano. Vytvoří konfigurační soubor YAML s názvem „nano podsample.yaml“.

> nano podsample.yaml

Přejděme k dalšímu kroku, který vám pomůže zjistit, jak nakonfigurovat soubor podsample.yaml.

Krok 3: Nakonfigurujte soubor YAML

V předchozím kroku přidáme nástroj capsh, abychom viděli možnosti našeho kontejneru.

Všimněte si, že žádný z těchto parametrů není nakonfigurován pro sekci securityContext pro tento kontejner. Všechny jsou tedy nastaveny na výchozí hodnoty systému. Vezměte v úvahu skutečnost, že tento kontejner funguje jako výchozí uživatel, který je dodán v souboru Dockerfile, ze kterého je sestaven, pokud pro něj není v Kubernetes definován žádný uživatel. U mnoha kontejnerů je tímto výchozím uživatelem root.

Krok 4: Vytvořte pod

V tomto kroku vytvoříme podsample.yaml s následujícím připojeným příkazem:

> kubectl aplikovat -F podsample.yaml

Krok 5: Zkontrolujte schopnosti

V předchozím kroku je vytvořen a spuštěn pod.

Nyní, když máme uvnitř shell, můžeme použít capsh k ověření jeho schopností pomocí následujícího příkazu:

> $ kubectl exec - -stdin - -tty čepice - - popel

Pomocí příkazu capsh je možné zobrazit výchozí kapacity kontejneru, které jsou uvedeny následovně:

Z daného výstupu můžeme pozorovat, že kontejner má mnoho výchozích schopností, které jsou kontejneru dány za běhu.

Krok 6: Pusťte Singl Schopnost Y v Kubernetes SecurityContext

V tomto kroku vynecháme jedinou schopnost kontejneru.

Pojďme nakonfigurovat soubor yaml pomocí následujícího příkazu:

> nano dropod.yaml

Poté přejděte ke konfiguraci souboru droppod.yaml pomocí následujícího příkazu:

> kubectl aplikovat -F droppod.yaml

Krok 7 : Nakonfigurujte přidání jediné schopnosti do souboru YAML

V tomto kroku otevřete soubor yaml (dropped.yaml), který byl vytvořen v kroku 6. Poté nastavte kontejner tak, aby již neměl přístup ke schopnosti CAP_MKNOD, což odebere možnost vytvářet nové uzly systému souborů.

Nakonfigurovaný soubor vypadá takto:

Krok 8 : Zkontrolujte schopnosti

Soubor yaml je nakonfigurován tak, aby zrušil schopnost CAP_MKNOD.

V tomto kroku spusťte a spusťte soubor dropcaps.yaml a zkontrolujte možnosti kontejneru pomocí následujícího příkazu:

> $ kubectl exec - -stdin - -tty kapky - - popel

Kapacity lze zkontrolovat spuštěním souboru dropcaps:

> # capsh - -print

Můžeme pozorovat, že tento modul ztratil schopnost CAP_MKNOD ve srovnání s prvním modulem.

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

Vzhledem k tomu, že Kubernetes může zrušit jednu funkci, může také zrušit všechny funkce prostřednictvím securityContext. V tomto kroku zrušte všechny schopnosti kontejneru implikováním daného příkazu:

> nano samplenocap.yaml

Poté nakonfigurujte soubor samplenocap.yaml pomocí následujícího příkazu:

> kubectl vytvořit -F samplenocap.yaml

Nyní přejděme k dalšímu kroku a vynecháme všechny kapacity v nastavení securityContext.

Krok 10: Nakonfigurujte všechny možnosti v souboru YAML

V tomto kroku otevřete soubor yaml, který byl vytvořen v kroku 9. Poté nakonfigurujte uvnitř kontejneru.securityContext a zrušte všechny možnosti kontejneru.

Nakonfigurovaný soubor vypadá takto:

Krok jedenáct : Zkontrolujte schopnosti

Spuštěním nocaps v caph zobrazíte informace o schopnostech. V tomto kroku použijte následující příkaz a zobrazte všechny možnosti kontejneru:

> kubectl exec - -stdin - -tty nocaps -- popel

Kapacity lze zkontrolovat na následujícím obrázku spuštěním souboru samplenocaps yaml ve formátu capsh:

> # capsh - -print

Předchozí výstup ukazuje, že aktuální=”” a ohraničující sada=”” jsou nyní prázdné. Schopnosti byly úspěšně odstraněny.

Krok 1 2 : Nainstalujte Bash

V tomto kroku nainstalujte Bash prostřednictvím apk, protože některé systémové funkce nebudou fungovat, pokud nebudeme mít vůbec žádné možnosti. I když náš kontejner funguje jako root, instalace balíčku Bash se nezdaří.

> # apk přidat bash

Krok 1 3 : Zkontrolujte informace o schopnostech

Existuje několik způsobů, jak zobrazit možnosti našeho kontejneru, například pomocí příkazů capsh a proc. V tomto kroku zobrazíme kapacity kontejneru pomocí příkazu proc a proc zobrazí kapacity jako bitmapu. Ačkoli to není tak čitelné jako výsledek z capsh, každý bit, který je zde definován, představuje určitou schopnost.

> # cd /proc/1/

Zde vidíme, že tento konkrétní kontejner nemá žádné povolené funkce; všechny tyto hodnoty jsou nulové.

Krok 1 4 : Přidání jedné funkce v Kubernetes SecurityContext

V předchozích krocích jsme zrušili jedinou schopnost, která je CAP_MKNOD, a zrušili všechny schopnosti. Ale v tomto kroku můžeme přidat schopnosti zpět.

Pro vytvoření souboru yAML spusťte následující příkaz:

> nano sampleadd.yaml

Poté nakonfigurujte soubor sampleadd.yaml.

> kubectl vytvořit -F sampleadd.yaml

Nyní vyzkoušíme soubor sampleadd.yaml a přidáme jednu kapacitu do našich nastavení securityContext.

Krok 1 5 : Nakonfigurujte Single Capability v souboru YAML

Nyní nakonfigurujme soubor přidáním schopnosti v spec.container.securityContext do options.add [“MKNOD”].

Schopnost je zobrazena v souboru YAML.

Krok 16 : Zkontrolujte schopnosti

V tomto kroku spusťte addcaps a zkontrolujte možnosti pomocí následujícího příkazu:

> kubectl exec - -stdin - -tty addcaps -- tak jako

Přidanou kapacitu lze vidět na následujícím daném výstupu:

proud = cap_mknod+ep

Ohraničující sada = cap_mknod

> # capsh - -print

Závěr

Nejprve jste se z implementovaného příkladu dozvěděli o výchozích schopnostech kontejneru, které jsou přiřazeny za běhu, který je zobrazen pomocí příkazu capsh. Dále jste se naučili vypustit jednu schopnost v kontejneru s názvem CAP_MKNOD. Poté jste se také naučili, jak zrušit všechny možnosti kontejneru pomocí konfigurace //drop: –all. Poté jsme použili dva způsoby, jak zobrazit schopnosti kontejnerů – pomocí příkazů capsh a proc.