Ringkasan isolasi node

Dokumen ini menjelaskan manfaat dan batasan isolasi node di cluster Kubernetes yang terisolasi dari internet Google Distributed Cloud (GDC). Isolasi node dengan kumpulan node khusus meningkatkan keamanan cluster dengan memberi Anda kontrol yang tepat atas tempat pod tertentu berjalan dalam cluster.

Isolasi workload memberikan beberapa manfaat, seperti:

  • Mengurangi risiko serangan eskalasi hak istimewa di cluster Kubernetes Anda.
  • Kontrol yang lebih besar atas pod yang memerlukan resource tambahan.

Untuk kasus ini, pertimbangkan untuk mengisolasi workload container Anda di node pool khusus untuk kontrol dan pengoptimalan yang lebih baik. Pastikan juga untuk mempertimbangkan batasan sehingga Anda dapat membuat keputusan yang tepat terkait biaya pemeliharaan tambahan yang diperlukan untuk isolasi node.

Dokumen ini ditujukan bagi audiens seperti administrator IT dalam grup administrator platform yang bertanggung jawab mengelola kumpulan node cluster Kubernetes, dan developer aplikasi dalam grup operator aplikasi yang bertanggung jawab mengelola workload container. Untuk mengetahui informasi selengkapnya, lihat dokumentasi Audiens untuk GDC yang terisolasi dari internet.

Mengapa saya harus memisahkan workload saya?

Meskipun tidak wajib, mendedikasikan kumpulan node untuk beban kerja container tertentu dapat mencegah potensi masalah. Namun, pendekatan ini memerlukan lebih banyak pengelolaan, dan sering kali tidak penting.

Cluster Kubernetes menggunakan workload khusus yang dikelola GDC untuk mengaktifkan kemampuan dan fitur cluster tertentu, seperti pengumpulan metrik. Workload ini diberi izin khusus agar dapat berjalan dengan benar di cluster.

Beban kerja yang Anda deploy ke node mungkin berpotensi disusupi oleh entity berbahaya. Menjalankan beban kerja ini bersama beban kerja istimewa yang dikelola GDC berarti penyerang yang keluar dari container yang disusupi dapat menggunakan kredensial beban kerja istimewa pada node untuk mengeskalasikan hak istimewa di cluster Anda.

Kumpulan node khusus juga berguna saat Anda harus menjadwalkan pod yang memerlukan lebih banyak resource daripada yang lain, seperti lebih banyak memori atau lebih banyak ruang disk lokal.

Anda dapat menggunakan mekanisme berikut untuk menjadwalkan workload di kumpulan node khusus:

  • Taint node: memberi tahu cluster Kubernetes Anda untuk menghindari penjadwalan beban kerja pada node tertentu tanpa toleransi yang sesuai.
  • Afinitas node: memberi tahu cluster Kubernetes Anda untuk menjadwalkan pod tertentu pada node khusus.

Isolasi node adalah mekanisme pertahanan mendalam lanjutan yang hanya boleh Anda gunakan bersama fitur isolasi lain, seperti container dan akun layanan dengan hak istimewa minimal. Isolasi node mungkin tidak mencakup semua jalur eskalasi, dan tidak boleh digunakan sebagai batasan keamanan utama.

Cara kerja isolasi node

Guna menerapkan isolasi node untuk workload, Anda harus melakukan hal berikut:

  1. Taint dan beri label kumpulan node untuk beban kerja Anda.

  2. Perbarui beban kerja Anda dengan aturan toleransi dan afinitas node yang sesuai.

Panduan ini mengasumsikan bahwa Anda memulai dengan satu kumpulan node di cluster. Penggunaan afinitas node selain taint node tidak wajib, tetapi sebaiknya Anda mendapatkan manfaat dari kontrol yang lebih ketat terhadap penjadwalan.

Rekomendasi dan praktik terbaik

Setelah menyiapkan isolasi node, sebaiknya lakukan hal berikut:

  • Saat membuat kumpulan node baru, cegah sebagian besar beban kerja yang dikelola GDC agar tidak berjalan pada node tersebut dengan menambahkan taint Anda sendiri ke kumpulan node tersebut.

  • Setiap kali Anda men-deploy beban kerja baru ke cluster, seperti saat menginstal alat pihak ketiga, audit izin yang diperlukan pod. Jika memungkinkan, hindari men-deploy beban kerja yang menggunakan izin dengan tingkat lebih tinggi ke node bersama.

Batasan

Batasan berikut berlaku untuk pod yang berjalan di node pool terisolasi:

  • Penyerang masih dapat memulai serangan Denial-of-Service (DoS) dari node yang disusupi.

  • Jika Anda men-deploy resource DaemonSet yang memiliki izin yang lebih tinggi dan dapat menoleransi taint apa pun, pod tersebut dapat menjadi jalur untuk eskalasi hak istimewa dari node yang disusupi.

  • Node yang disusupi masih dapat membaca banyak resource, termasuk semua pod dan namespace dalam cluster.

  • Node yang disusupi dapat mengakses rahasia dan kredensial yang digunakan oleh setiap pod yang berjalan di node tersebut.

  • Node yang disusupi masih dapat mengabaikan kebijakan jaringan egress.

  • Menggunakan kumpulan node terpisah untuk mengisolasi beban kerja dapat memengaruhi efisiensi biaya, penskalaan otomatis, dan penggunaan resource.

  • Beberapa beban kerja yang dikelola GDC harus berjalan di setiap node di cluster Anda, dan dikonfigurasi untuk menoleransi semua taint.

Langkah berikutnya