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 ini untuk Node GKE yang Terlindungi, dan sebagai gantinya mewajibkan komponen bidang kontrol GKE tepercaya untuk melakukan operasi pendaftaran. Platform administrator dan engineer keamanan dapat menggunakan pembuatan node bidang kontrol untuk membatasi hak istimewa node.
Anda seharusnya 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 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 mendaftarkan sendiri node. Setelah kubelet menyiapkan koneksi TLS dengan server API menggunakan identitas node yang diverifikasi secara kriptografi, 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-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_PLANEdalam flag--node-creation-mode. - Kubernetes Engine API: tentukan nilai
VIA_CONTROL_PLANEdi kolomnode-creation-modedalam metodeNodeCreationConfig.
Batasan
Ada jeda 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 dapat disesuaikan pada waktu yang berbeda dengan pendaftaran kubelet. Verifikasi bahwa 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
- Jika ingin 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. gcloud CLI versi sebelumnya 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 akan 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 yang 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.