Secara default, node Google Kubernetes Engine (GKE) menggunakan proses kubelet di setiap node untuk mendaftarkan objek Node dengan server Kubernetes API. Dokumen ini menunjukkan cara mencegah pendaftaran mandiri untuk Node GKE yang Terlindungi, dan mengharuskan komponen bidang kontrol GKE tepercaya untuk melakukan operasi pendaftaran. Engineer keamanan dan administrator platform dapat menggunakan pembuatan node bidang kontrol untuk membatasi hak istimewa node.
Anda harus sudah memahami konsep berikut:
Mode pembuatan node di GKE
Node GKE yang Terlindungi, yang diaktifkan di semua cluster GKE, menerapkan verifikasi kriptografis identitas node selama proses pendaftaran node. Verifikasi ini membantu memastikan bahwa hanya node yang sah yang dapat mendaftar dengan server Kubernetes API dan menjalankan workload.
Alur kerja pendaftaran default untuk cluster GKE, yang mana kubelet di setiap node membuat dan mengubah objek Node di server API, akan menimbulkan risiko jika node disusupi. Misalnya, di
CVE-2025-5187, kerentanan
memungkinkan pengguna node menghapus objek yang sesuai Node dan mendaftarkan
node yang disusupi.
Pembuatan node bidang kontrol
Di GKE versi 1.35.3-gke.1189000 dan yang lebih baru, Anda dapat secara opsional mewajibkan komponen bidang kontrol GKE tepercaya yang bernama gcp-controller-manager untuk membuat objek Node, bukan mengizinkan kubelet untuk mendaftarkan node secara mandiri. Setelah kubelet menyiapkan koneksi TLS dengan server API menggunakan identitas node yang diverifikasi secara kriptografis, komponen gcp-controller-manager akan membuat objek Node. Pengontrol penerimaan menolak permintaan apa pun dari kubelet untuk membuat objek Node. Dengan menggunakan komponen bidang kontrol untuk membuat objek Node, Anda dapat mengurangi risiko node yang berpotensi disusupi membuat objek Node arbitrer atau memanipulasi spesifikasi Node.
Untuk mengubah perilaku pembuatan dan pendaftaran node default, lakukan salah satu hal berikut saat Anda membuat cluster Standard atau Autopilot:
- Google Cloud CLI: tentukan nilai
CONTROL_PLANEdi flag--node-creation-mode. - Kubernetes Engine API: tentukan nilai
VIA_CONTROL_PLANEdi kolomnode-creation-modedalam metodeNodeCreationConfig.
Batasan
Ada penundaan singkat antara saat gcp-controller-manager membuat objek Node di Kubernetes API dan saat kubelet memperbarui objek Node tersebut dengan kumpulan lengkap label dan anotasi node. Setiap workload atau pengontrol yang bergantung pada kumpulan lengkap label atau anotasi segera setelah pembuatan node, mungkin menunjukkan perilaku yang tidak terduga. Label dan anotasi tertentu mungkin direkonsiliasi pada waktu yang berbeda dengan pendaftaran kubelet. Pastikan workload dan DaemonSet Anda menggunakan pemeriksaan keberadaan label dan anotasi sebelum bertindak.
- Hindari men-deploy DaemonSet dan workload yang memiliki toleransi untuk semua taint node, yang dapat menyebabkan Pod berjalan di node yang belum siap.
- Gunakan
initContaineruntuk memeriksa label node sebelum mengizinkan container utama berjalan.
Sebelum memulai
Sebelum memulai, pastikan Anda telah melakukan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Aktifkan Google Kubernetes Engine API
- Jika ingin menggunakan Google Cloud CLI untuk tugas ini,
instal lalu
lakukan inisialisasi gcloud CLI. Jika sebelumnya Anda menginstal gcloud CLI, dapatkan versi terbaru
dengan menjalankan perintah
gcloud components update. Versi gcloud CLI yang lebih lama mungkin tidak mendukung menjalankan perintah dalam dokumen ini.
Mengaktifkan pembuatan node bidang kontrol
Anda dapat mengaktifkan pembuatan node menggunakan komponen gcp-controller-manager saat membuat cluster atau memperbarui cluster yang ada. Untuk cluster yang ada, pembaruan hanya memengaruhi node baru di cluster. Node yang ada tidak terpengaruh oleh perubahan ini.
Perintah berikut mengaktifkan mode pembuatan node bidang kontrol untuk cluster yang ada:
gcloud container clusters update CLUSTER_NAME \
--node-creation-mode=CONTROL_PLANE \
--location=CONTROL_PLANE_LOCATION \
Ganti kode berikut:
CLUSTER_NAME: nama cluster Anda.CONTROL_PLANE_LOCATION: region atau zona bidang kontrol cluster Anda.
Anda juga dapat menentukan flag --node-creation-mode dalam perintah pembuatan cluster
dan dalam perintah pembuatan otomatis cluster.
Menonaktifkan pembuatan node bidang kontrol
Anda dapat kembali ke perilaku GKE default yang mana kubelet
membuat node kapan saja dengan menentukan nilai KUBELET di
--node-creation-mode flag Google Cloud CLI atau VIA_KUBELET di
NodeCreationConfig metode GKE API. Untuk cluster yang ada, perubahan ini hanya memengaruhi node baru di cluster tersebut.
Perintah berikut memperbarui cluster untuk menonaktifkan pembuatan node bidang kontrol:
gcloud container clusters update CLUSTER_NAME \
--node-creation-mode=KUBELET \
--location=CONTROL_PLANE_LOCATION \
Ganti kode berikut:
CLUSTER_NAME: nama cluster Anda.CONTROL_PLANE_LOCATION: region atau zona bidang kontrol cluster Anda.
Langkah berikutnya
- Pelajari Node GKE yang Terlindungi lebih lanjut .
- Baca ringkasan keamanan GKE overview.
- Pelajari cara memperkuat keamanan cluster Anda.