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 sebagai gantinya, mewajibkan 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 seharusnya sudah memahami konsep berikut:
Mode pembuatan node di GKE
Shielded GKE Node, yang diaktifkan di semua cluster GKE, menerapkan verifikasi kriptografi identitas node selama proses pendaftaran node. Verifikasi ini membantu memastikan bahwa hanya node yang sah yang dapat mendaftar ke 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,
menimbulkan risiko jika node disusupi. Misalnya, dalam
CVE-2025-5187, kerentanan
memungkinkan pengguna node menghapus objek Node yang sesuai dan mendaftarkan
node yang terkompromi.
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 bernama gcp-controller-manager untuk membuat objek Node, bukan mengizinkan kubelet untuk mendaftarkan sendiri node. Setelah kubelet menyiapkan koneksi TLS dengan server API menggunakan identitas node yang diverifikasi secara kriptografis, komponen gcp-controller-manager 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-nya.
Untuk mengubah perilaku pembuatan dan pendaftaran node default, Anda melakukan salah satu tindakan berikut saat 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 sedikit penundaan 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 disesuaikan pada waktu yang berbeda dengan pendaftaran kubelet. Pastikan beban kerja dan DaemonSet Anda menggunakan pemeriksaan keberadaan label dan anotasi sebelum bertindak.
- Hindari men-deploy DaemonSets dan beban kerja 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
- Untuk menggunakan Google Cloud CLI untuk tugas ini,
instal lalu
lakukan inisialisasi
gcloud CLI. Jika sebelumnya Anda telah 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 mengupdate cluster yang ada. Untuk cluster yang ada, update 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 clusters create
dan dalam perintah clusters create-auto.
Menonaktifkan pembuatan node bidang kontrol
Anda dapat kembali ke perilaku GKE default saat kubelet
membuat node kapan saja dengan menentukan nilai KUBELET di
flag --node-creation-mode Google Cloud CLI atau VIA_KUBELET di
metode NodeCreationConfig GKE API. Untuk cluster yang ada, perubahan ini hanya memengaruhi node baru di cluster tersebut.
Perintah berikut mengupdate 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 lebih lanjut Shielded GKE Nodes.
- Baca ringkasan keamanan GKE.
- Pelajari cara memperkuat keamanan cluster Anda.