Kubernetes SecurityContext'te Linux Yeteneklerini Ekleme veya Kaldırma

Kubernetes Securitycontext Te Linux Yeteneklerini Ekleme Veya Kaldirma



Bir Kubernetes kapsayıcısındaki her bir Kapsül ve kapsayıcıya sağlanan ayrıcalık derecesini yönetmek zor olabilir. Kapsayıcının güvenliğini artırmak için Kapsül ve Kapsayıcıdan Linux yetenekleri eklemek veya bunları silmek için Kubernetes SecurityContext yeteneklerini kullanabiliriz. Bu makale, yetenek ekleme ve silmenin basit bir örneğini uygulamak için securityContext'i kullanmaya odaklanmaktadır. Tüm yetenekleri silmek ve bir kapsayıcıya yalnızca bir yetenek eklemek için bir yaml dosyasının yapılandırması örnek örnekte verilmiştir. Bu yazıda, kapsayıcının yeteneklerini görüntülemek için proc ve capsh komutları kullanılmıştır.

Adım 1: Minikube Sunucusunu Başlatın







Öncelikle uygulamanızı çalıştırabilmeniz ve kubectl yönergelerini kullanabilmeniz için minikube sunucusunu başlatın. Kubernetes ortamındaki minikube sunucusunu kullanarak düğümlerinizi, bölmelerinizi ve hatta kümenizi konuşlandırabilirsiniz. Minikube'u aktif modda tutmak için aşağıdaki komut kullanılmalıdır:



> minikube'u başlat



Böylelikle minikube sunucusu açılmış ve Kubernetes ortamı kullanıma hazır hale gelmiş olur.





Adım 2: Bir Kubernetes YAML Dosyası Oluşturun



İkinci adımda, bir bölmeyi dağıtmak için bir YAML dosyası oluşturun.

nano kullanarak bir yaml dosyası oluşturmak için şu adımları izleyin:

  • Dosyayı oluşturmak veya mevcut bir dosyayı değiştirmek istediğiniz dizin yoluna gidin.
  • nano komutunu ve ardından dosya adını yazın.

Aşağıdaki nano komutunu çalıştırın. “nano podsample.yaml” adlı bir YAML yapılandırma dosyası oluşturur.

> nano podsample.yaml

Bir podsample.yaml dosyasını nasıl yapılandıracağınızı bilmenize yardımcı olacak bir sonraki adıma geçelim.

Aşama 3: YAML Dosyasını Yapılandırın

Kapsayıcımızın yeteneklerini görebilmemiz için bir önceki adımda capsh aracını ekliyoruz.

Bu parametrelerden hiçbirinin, bu kapsayıcı için bir securityContext bölümü için yapılandırılmadığını unutmayın. Böylece, hepsi sistem varsayılanlarına ayarlanmıştır. Kubernetes'te kendisi için herhangi bir kullanıcı tanımlanmamışsa, bu kapsayıcının oluşturulduğu Dockerfile'de sağlanan varsayılan kullanıcı olarak çalıştığını göz önünde bulundurun. Birçok kapsayıcı için bu varsayılan kullanıcı kök kullanıcıdır.

Adım 4: Bir Kapsül Oluştur

Bu adımda, aşağıdaki ekli komutla podsample.yaml dosyasını oluşturalım:

> kubectl uygula -f podsample.yaml

Adım 5: Yetenekleri Kontrol Edin

Önceki adımda, bir bölme oluşturulur ve çalışır.

Artık içinde bir kabuğumuz olduğuna göre, aşağıdaki komutu kullanarak yeteneklerini doğrulamak için capsh'i kullanabiliriz:

> $ kubectl yönetici - -stdin - -tty büyük harf - - kül

Capsh komutunu kullanarak, aşağıdaki gibi listelenen konteynerin varsayılan kapasitelerini görmek mümkündür:

Verilen çıktıdan, konteynerin çalışma zamanında konteynere verilen birçok varsayılan yeteneğe sahip olduğunu gözlemleyebiliriz.

Adım 6: bırak Bekar Yetenek Y Kubernetes SecurityContext'te

Bu adımda, konteynerin tek yeteneğini bırakıyoruz.

Aşağıdaki komutu kullanarak yaml dosyasını yapılandıralım:

> nano droppod.yaml

Bundan sonra, aşağıdaki verilen komutu kullanarak droppod.yaml dosyasını yapılandırmak için ilerleyin:

> kubectl uygula -f droppod.yaml

Adım 7 : YAML Dosyasında Tek Yeteneği Eklemek İçin Yapılandırın

Bu adımda, Adım 6'da oluşturulan yaml dosyasını (dropped.yaml) açın. Ardından, kabı, artık yeni dosya sistemi düğümleri oluşturma yeteneğini kaldıran CAP_MKNOD yeteneğine erişimi olmayacak şekilde ayarlayın.

Yapılandırılan dosya gösterildiği gibidir:

Adım 8 : Yetenekleri Kontrol Edin

Yaml dosyası, CAP_MKNOD yeteneğini bırakacak şekilde yapılandırılmıştır.

Bu adımda, aşağıdaki komutu kullanarak kapsayıcının yeteneklerini kontrol etmek için dropcaps.yaml dosyasını yürütün ve çalıştırın:

> $ kubectl yönetici - -stdin - -tty dropcaps - - kül

Kapasiteler, dropcaps dosyası çalıştırılarak kontrol edilebilir:

> # capsh - -yazdır

Bu bölmenin, ilk bölmeye kıyasla CAP_MKNOD yeteneğini düşürdüğünü gözlemleyebiliriz.

Adım 9 : Kubernetes SecurityContext'teki Tüm Yetenekleri Bırakın

Kubernet'ler tek bir yeteneği bırakabileceğinden, securityContext aracılığıyla tüm yetenekleri de bırakabilir. Bu adımda, verilen komutu ima ederek kabın tüm özelliklerini bırakın:

> nano örneknocap.yaml

Bundan sonra, aşağıdaki komutu kullanarak samplenocap.yaml dosyasını yapılandırın:

> kubectl oluştur -f örneknocap.yaml

Şimdi, securityContext ayarlarımızdaki tüm kapasiteleri düşürmek için bir sonraki adıma geçelim.

10. Adım: YAML Dosyasındaki Tüm Yetenekleri Yapılandırın

Bu adımda, 9. Adımda oluşturulan yaml dosyasını açın. Ardından, container.securityContext içinde yapılandırın ve kapsayıcının tüm özelliklerini bırakın.

Yapılandırılan dosya gösterildiği gibidir:

Adım onbir : Yetenekleri Kontrol Edin

Yetenekler hakkındaki bilgileri görmek için nocaps'i capsh'te çalıştırın. Bu adımda, aşağıdaki komutu kullanın ve kapsayıcının tüm özelliklerini görüntüleyin:

> kubectl yönetici - -stdin - -tty büyük harf yok - - kül

Kapasiteler, samplenocaps yaml dosyasını capsh'te çalıştırarak aşağıdaki çizimde kontrol edilebilir:

> # capsh - -yazdır

Önceki çıktı, current=”” ve sınırlayıcı set=”” öğelerinin artık boş olduğunu gösteriyor. Yetenekler başarıyla düşürüldü.

Aşama 1 2 : Bash'i yükleyin

Bu adımda, herhangi bir yeteneğimiz yoksa bazı sistem işlevleri çalışmayacağından Bash'i apk aracılığıyla yükleyin. Kapsayıcımız bir kök olarak çalışmasına rağmen, Bash paketinin kurulumu başarısız oluyor.

> # apk bash ekle

Aşama 1 3 : Yetenek Bilgilerini Kontrol Edin

Capsh ve proc komutlarını kullanmak gibi kapsayıcımızın yeteneklerini görmenin birkaç yolu vardır. Bu adımda, proc komutunu kullanarak container kapasitelerini ve proc, kapasiteleri bir bitmap olarak görüntüler. Capsh sonucu kadar okunabilir olmasa da burada tanımlanan her bit belirli bir yeteneği ifade eder.

> #cd /proc/1/

Burada, bu belirli kapsayıcının etkinleştirilen yeteneklere sahip olmadığını görebiliriz; tüm bu değerler sıfırdır.

Aşama 1 4 : Kubernetes SecurityContext'te Tek Bir Yetenek Ekleme

Önceki adımlarda, CAP_MKNOD olan tek bir yeteneği ve tüm yetenekleri kaldırdık. Ancak, bu adımda, yetenekleri geri ekleyebiliriz.

yAML dosyasını oluşturmak için aşağıdaki komutu yürütün:

> nano örnekadd.yaml

Bundan sonra sampleadd.yaml dosyasını yapılandırın.

> kubectl oluştur -f örnekadd.yaml

Şimdi sampleadd.yaml dosyasını deneyelim ve securityContext ayarlarımızda tek bir kapasite ekleyelim.

Aşama 1 5 : YAML Dosyasında Tek Yeteneği Yapılandırma

Şimdi, spec.container.securityContext'teki yeteneği yetenekler.add'e ['MKNOD'] ekleyerek dosyayı yapılandıralım.

Yetenek, YAML dosyasında görüntülenir.

Adım 16 : Yetenekleri Kontrol Edin

Bu adımda, aşağıdaki komutu kullanarak yetenekleri kontrol etmek için addcaps'i çalıştırın:

> kubectl yönetici - -stdin - -tty büyük harfler - - gibi

Eklenen kapasite aşağıdaki verilen çıktıda görülebilir:

akım = cap_mknod+ep

Sınırlayıcı küme = cap_mknod

> # capsh - -yazdır

Çözüm

Kapsayıcının capsh komutuyla görüntülenen çalışma zamanında atanan varsayılan yeteneklerini ilk olarak uygulanan örnekten öğrendiniz. Ardından, CAP_MKNOD adlı bir kapsayıcıya tek bir yetenek bırakmayı öğrendiniz. Ardından, //drop: –all yapılandırmasını kullanarak kabın tüm yeteneklerini nasıl bırakacağınızı da öğrendiniz. Daha sonra, kapların yeteneklerini görüntülemek için capsh ve proc komutlarını kullanarak iki yol kullandık.