Masalah Keamanan Kubernetes yang Paling Umum dan Cara Mengatasinya

Diterbitkan: 2021-03-30

Kubernetes dan container menjanjikan tiga hal:

  • Pengembangan dan rilis aplikasi lebih cepat.
  • Perbaikan bug lebih cepat.
  • Peningkatan kecepatan fitur.

Namun, sering kali datang dengan mengorbankan keamanan yang dikompromikan dan itu adalah sesuatu yang tidak dapat diterima dalam teknologi pengembangan web mana pun.

Untuk mewujudkan status keamanan Kubernetes, berikut dua faktor dari survei yang dilakukan oleh StackRox pada akhir tahun 2020:

  • 90% peserta survei melaporkan telah menghadapi insiden keamanan terkait kontainer dan Kubernetes dalam 12 bulan terakhir.
  • 44% peserta harus menunda rilis aplikasi mereka karena masalah keamanan terkait Kubernetes.

Apa alasan paling umum di balik masalah keamanan ini?

Masalah Keamanan Paling Umum Terkait Kubernetes
1. Salah konfigurasi

Survei telah mengungkapkan bahwa eksposur yang disebabkan oleh kesalahan konfigurasi adalah risiko paling umum dalam keamanan lingkungan container dan Kubernetes.

Saat menggunakan Kubernetes untuk membuat aplikasi dalam container, manajemen konfigurasi adalah risiko terbesar bagi praktisi keamanan.

Ini terutama karena pasar penuh dengan alat pemindaian kerentanan tetapi manajemen konfigurasi sebagian besar masih bergantung pada pertimbangan manusia.

Berikut beberapa saran untuk mengonfigurasi beberapa komponen umum dari aplikasi dalam container untuk memastikan keamanan tidak terganggu.

Gambar-gambar:

Hindari menggunakan perangkat lunak apa pun yang tidak mutlak diperlukan. Ini termasuk manajer paket, alat jaringan, dan klien seperti curl, atau shell Unix.

Ingat, menggunakan perangkat lunak apa pun menambah risiko keamanan. Juga, hanya gunakan gambar dari sumber yang dapat dipercaya.

Rahasia:

Hindari memanggang rahasia ke dalam gambar atau mengeksposnya secara tidak perlu.

Sebagai praktik yang aman, gunakan alat manajemen rahasia yang tepercaya untuk memastikan bahwa penerapan hanya memasang rahasia jika dan saat dibutuhkan.

Ruang nama:

Gunakan ruang nama dengan murah hati. Mereka bertindak sebagai batas untuk Kubernetes dan kebijakan jaringan. Penggunaan namespace dapat membatasi efek serangan dan dapat berisi kesalahan dan serangan sehingga tidak dapat menyebar dan menyebabkan lebih banyak kerusakan.

Hak Istimewa Waktu Proses:

Hanya ada satu aturan hak istimewa: izinkan paling sedikit untuk membuat perangkat lunak menjadi paling aman.

Kebijakan Jaringan

Menurut pengaturan default, pod dapat berbicara satu sama lain secara independen di Kubernetes. Namun, adalah praktik yang baik untuk menerapkan kebijakan jaringan untuk membatasi interaksi pod. Ini dapat mencegah ancaman apa pun menyebar ke seluruh penampung dan seluruh aplikasi.

Penyimpanan Persisten

Anda harus memiliki visibilitas yang tepat ke dalam konfigurasi dan penggunaan penyimpanan persisten. Ini karena ini adalah satu-satunya vektor persisten dalam penyiapan container sementara.

Kontrol-Pesawat

Jika Anda mengelola kluster Kubernetes sendiri, sangat penting untuk mengonfigurasi bidang kontrol. Ini karena beberapa klaster dapat membuat keputusan global dan jika klaster terinfeksi dapat membahayakan seluruh ekosistem.

Pendekatan terbaik untuk mengurangi ini dan berbagai masalah keamanan terkait konfigurasi lainnya adalah menggunakan kombinasi upaya manual dan otomatis untuk memastikan bahwa konfigurasi dilakukan sedemikian rupa untuk memastikan keamanan Kubernetes dan akibatnya perangkat lunak mereka menjadi bagiannya. dari.

2. Kerentanan

Sejumlah kerentanan yang berbeda telah ditemukan dan dieksploitasi di Kubernetes dan kontainer lainnya selama beberapa tahun terakhir.

Eksploitasi kerentanan yang paling umum meliputi:

  • Penambangan kripto.
  • Instalasi perangkat lunak jahat.
  • Peningkatan hak istimewa.
  • Akses tuan rumah.

Pendekatan efektif untuk mengelola kerentanan adalah sesuatu yang perlu dilakukan untuk siklus hidup container dan harus mencakup hal-hal berikut:

  • Mengidentifikasi dan mengatasi kerentanan dalam gambar, termasuk yang ada di sistem operasi yang diinstal.
  • Mendeteksi dan mengurangi setiap dan semua kerentanan di perpustakaan runtime dari bahasa pemrograman yang Anda gunakan.
  • Mengambil langkah-langkah untuk mencegah gambar yang memiliki kerentanan berisiko masuk ke registri kontainer yang dapat diakses produksi.
  • Mengambil tindakan untuk menahan ancaman yang memiliki risiko keamanan pada tingkat tertentu.
  • Menggunakan pengontrol penerimaan pihak ketiga di cluster Kubernetes untuk mencegah komponen container yang rentan dijadwalkan.
3. Ancaman runtime

Setelah Anda mengurangi semua masalah dalam keamanan Kubernetes, fase runtime memiliki serangkaian ancaman keamanan yang unik.

Bahkan jika Anda telah menekankan keamanan dan meminimalkan risiko dengan segala cara yang memungkinkan, mungkin ada berbagai ancaman dari musuh saat runtime.

Berikut adalah beberapa hal yang dapat Anda lakukan untuk mengurangi ancaman tersebut:

Pemantauan Aktivitas Waktu Proses:

Mulai proses pemantauan dengan aktivitas kontainer yang paling relevan dengan keamanan. Ini termasuk aktivitas proses, komunikasi jaringan di dalam dan di seluruh layanan kemas, dan komunikasi ke dan dari server dan klien eksternal.

Manfaatkan Data Deklaratif

Manfaatkan informasi waktu build dan deploy untuk mengevaluasi perbedaan antara aktivitas yang diamati dan yang diharapkan untuk mengetahui apakah ada aktivitas yang mencurigakan.

Jauhkan Komunikasi Jaringan Terbatas

Runtime adalah waktu ketika Anda dapat melihat perbedaan antara jenis lalu lintas jaringan yang diizinkan dan yang diperlukan untuk menjalankan sistem. Ini adalah kesempatan yang dapat digunakan untuk menghapus komunikasi yang tidak perlu yang dapat mengancam keamanan Kubernetes.

Amati Prosesnya dengan Teliti

Amati aplikasi untuk jangka waktu tertentu untuk mengetahui semua proses yang dijalankan agar aplikasi berfungsi dengan baik. Buat daftar semua proses penting dan periksa aplikasi secara acak untuk melihat apakah ada proses yang dijalankan yang tidak seperti biasanya.

4. Audit kepatuhan yang gagal

Salah satu hal utama yang memastikan keamanan Kubernetes dan container adalah kepatuhan. Jika keamanan tidak ditekankan dengan semestinya dalam Siklus Hidup Pengembangan Perangkat Lunak, ini dapat menyebabkan audit kepatuhan yang gagal.

Ada banyak standar kepatuhan yang dapat digunakan untuk Kubernetes dan keamanan container.

PCI-DSS, HIPAA, dan SOC 2 adalah standar kepatuhan khusus industri.

Salah satu kesalahan utama yang dibuat dalam hal ini adalah tidak menjadikan audit kepatuhan sebagai bagian dari SDLC sejak awal atau hanya mempertimbangkannya saat runtime. Untuk memastikan semua yang ada di perangkat lunak sesuai:

  • Jadikan kepatuhan sebagai bagian dari SDLC sejak awal.
  • Gunakan standar industri untuk membuat komponen perangkat lunak sesuai.