Tambah atau Hapus Kemampuan Linux di Kubernetes SecurityContext

Tambah Atau Hapus Kemampuan Linux Di Kubernetes Securitycontext



Mungkin akan sulit untuk mengelola tingkat hak istimewa yang disediakan untuk setiap Pod dan container di dalam container Kubernetes. Kami dapat menggunakan kapabilitas Kubernetes SecurityContext untuk menambahkan atau menghapus kapabilitas Linux dari Pod dan Container untuk meningkatkan keamanan container. Artikel ini berfokus pada penggunaan securityContext untuk menerapkan contoh sederhana penambahan dan penghapusan kemampuan. Konfigurasi file yaml untuk menghapus semua kemampuan dan menambahkan hanya satu kemampuan ke wadah disediakan dalam contoh contoh. Pada artikel ini, perintah proc dan capsh digunakan untuk menampilkan kemampuan container.

Langkah 1: Mulai Server Minikube







Pertama, jalankan server minikube agar Anda dapat menjalankan aplikasi dan menggunakan instruksi kubectl. Anda dapat menerapkan node, pod, dan bahkan klaster menggunakan server minikube di lingkungan Kubernetes. Perintah berikut harus digunakan untuk mempertahankan minikube dalam mode aktif:



> mulai minikube



Dengan demikian, server minikube dihidupkan dan lingkungan Kubernetes siap digunakan.





Langkah 2: Buat File YAML Kubernetes



Pada langkah kedua, buat file YAML untuk menerapkan pod.

Ikuti langkah-langkah untuk membuat file yaml menggunakan nano:

  • Buka jalur direktori tempat Anda ingin membuat file atau memodifikasi file yang sudah ada.
  • Ketik perintah nano diikuti dengan nama file.

Jalankan perintah nano berikut. Itu membuat file konfigurasi YAML bernama 'nano podsample.yaml'.

> nano podsample.yaml

Mari beralih ke langkah berikutnya untuk membantu Anda mengetahui cara mengonfigurasi file podsample.yaml.

Langkah 3: Konfigurasi File YAML

Kami menambahkan alat capsh pada langkah sebelumnya sehingga kami dapat melihat kemampuan penampung kami.

Perhatikan bahwa tidak satu pun dari parameter tersebut yang dikonfigurasi untuk bagian securityContext untuk penampung ini. Dengan demikian, semuanya diatur ke default sistem. Pertimbangkan fakta bahwa penampung ini beroperasi sebagai pengguna default yang disediakan di Dockerfile tempat ia dibuat jika tidak ada pengguna yang ditentukan untuknya di Kubernetes. Untuk banyak kontainer, pengguna default ini adalah root.

Langkah 4: Buat Pod

Pada langkah ini, mari buat podsample.yaml dengan perintah terlampir berikut:

> kubectl berlaku -f podsample.yaml

Langkah 5: Periksa Kemampuan

Pada langkah sebelumnya, sebuah pod dibuat dan dijalankan.

Sekarang kita memiliki shell di dalamnya, kita dapat menggunakan capsh untuk memverifikasi kemampuannya menggunakan perintah berikut:

> $ kubectl eksekusi - -stdin - -tty topi - - Abu

Dengan menggunakan perintah capsh, dimungkinkan untuk melihat kapasitas default wadah yang tercantum sebagai berikut:

Kita dapat mengamati dari output yang diberikan bahwa container memiliki banyak kemampuan default yang diberikan ke container saat runtime.

Langkah 6: Jatuhkan Lajang Kemampuan Y di Kubernetes SecurityContext

Pada langkah ini, kami membuang kemampuan tunggal wadah.

Mari konfigurasikan file yaml menggunakan perintah berikut:

> nano dropod.yaml

Setelah itu, pindah ke konfigurasi file droppod.yaml menggunakan perintah yang diberikan berikut ini:

> kubectl berlaku -f droppod.yaml

Melangkah 7 : Konfigurasikan untuk Menambahkan Kemampuan Tunggal di File YAML

Pada langkah ini, buka file yaml (dropped.yaml) yang telah dibuat pada Langkah 6. Kemudian, setel penampung sedemikian rupa sehingga tidak lagi memiliki akses ke kemampuan CAP_MKNOD, yang menghilangkan kemampuan untuk membuat node sistem file baru.

File yang dikonfigurasi adalah seperti yang ditunjukkan:

Melangkah 8 : Periksa Kemampuan

File yaml dikonfigurasi untuk menghentikan kemampuan CAP_MKNOD.

Pada langkah ini, jalankan dan jalankan file dropcaps.yaml untuk memeriksa kemampuan container menggunakan perintah berikut:

> $ kubectl eksekusi - -stdin - -tty dropcap - - Abu

Kapasitas dapat diperiksa dengan menjalankan file dropcaps:

> # capsh - -cetak

Kita dapat mengamati bahwa pod ini menghilangkan kemampuan CAP_MKNOD dibandingkan dengan pod pertama.

Melangkah 9 : Jatuhkan Semua Kemampuan di Kubernetes SecurityContext

Karena Kubernetes dapat melepaskan satu kemampuan, ia juga dapat membuang semua kemampuan melalui securityContext. Pada langkah ini, jatuhkan semua kemampuan wadah dengan menyiratkan perintah yang diberikan:

> nano samplenocap.yaml

Setelah itu, konfigurasikan file samplenocap.yaml menggunakan perintah berikut:

> kubectl buat -f samplenocap.yaml

Sekarang, mari beralih ke langkah berikutnya untuk melepaskan semua kapasitas di setelan securityContext kita.

Langkah 10: Konfigurasikan Semua Kemampuan di File YAML

Pada langkah ini, buka file yaml yang telah dibuat pada Langkah 9. Kemudian, konfigurasikan di dalam container.securityContext  dan lepas semua kemampuan container.

File yang dikonfigurasi adalah seperti yang ditunjukkan:

Melangkah sebelas : Periksa Kemampuan

Jalankan nocaps di capsh untuk melihat informasi tentang kemampuan. Pada langkah ini, gunakan perintah berikut dan tampilkan semua kemampuan wadah:

> kubectl eksekusi - -stdin - -tty nokap - - Abu

Kapasitas dapat diperiksa dalam ilustrasi berikut dengan menjalankan file yaml samplenocaps di capsh:

> # capsh - -cetak

Output sebelumnya menunjukkan bahwa current='' dan bounding set='' sekarang kosong. Kemampuan dijatuhkan dengan sukses.

Langkah 1 2 : Instal Bash

Pada langkah ini, instal Bash melalui apk karena beberapa fungsi sistem tidak akan berfungsi jika kita tidak memiliki kemampuan sama sekali. Meskipun penampung kami beroperasi sebagai root, pemasangan paket Bash gagal.

> # apk menambahkan bash

Langkah 1 3 : Periksa Informasi Kemampuan

Ada beberapa cara untuk melihat kemampuan container kita seperti menggunakan perintah capsh dan proc. Pada langkah ini, kami menampilkan kapasitas wadah menggunakan perintah proc dan proc menampilkan kapasitas sebagai bitmap. Meskipun tidak dapat dibaca seperti hasil dari capsh, setiap bit yang didefinisikan di sini menunjukkan kemampuan tertentu.

> # cd /proc/1/

Di sini, kita dapat melihat bahwa penampung khusus ini tidak memiliki kemampuan yang diaktifkan; semua nilai ini adalah nol.

Langkah 1 4 : Menambahkan Kemampuan Tunggal di Kubernetes SecurityContext

Pada langkah sebelumnya, kita membuang satu kapabilitas yaitu CAP_MKNOD dan membuang semua kapabilitas. Namun, pada langkah ini, kita dapat menambahkan kembali kemampuan tersebut.

Jalankan perintah berikut untuk membuat file yAML:

> nano sampleadd.yaml

Setelah itu, konfigurasikan file sampleadd.yaml.

> kubectl buat -f sampleadd.yaml

Sekarang, mari kita coba file sampleadd.yaml dan tambahkan satu kapasitas di pengaturan securityContext kita.

Langkah 1 5 : Konfigurasi Kemampuan Tunggal di File YAML

Sekarang, mari konfigurasikan file dengan menambahkan kapabilitas di spec.container.securityContext ke kapabilitas.tambahkan [“MKNOD”].

Kemampuan ditampilkan dalam file YAML.

Melangkah 16 : Periksa Kemampuan

Pada langkah ini, jalankan addcaps untuk memeriksa kemampuan menggunakan perintah berikut:

> kubectl eksekusi - -stdin - -tty tambahan - - sebagai

Penambahan kapasitas dapat dilihat pada keluaran berikut ini:

arus = cap_mknod+ep

Set pembatas = cap_mknod

> # capsh - -cetak

Kesimpulan

Anda pertama kali belajar dari contoh yang diterapkan tentang kemampuan default wadah yang ditetapkan pada waktu proses yang ditampilkan dengan perintah capsh. Selanjutnya, Anda belajar melepaskan satu kapabilitas dalam wadah bernama CAP_MKNOD. Kemudian, Anda juga belajar cara melepaskan semua kemampuan wadah menggunakan konfigurasi //drop: –all. Kemudian, kami menggunakan dua cara untuk menampilkan kemampuan kontainer – menggunakan perintah capsh dan proc.