Cluster Autopilot Google Kubernetes Engine (GKE) menerapkan berbagai kebijakan keamanan yang dirancang untuk mencegah banyak jalur serangan umum. Dokumen ini menunjukkan kepada administrator platform cara menerapkan beberapa atau semua kebijakan Autopilot ini di cluster Standard. Anda tidak dapat menonaktifkan penerapan kebijakan cluster di cluster Autopilot, karena cluster Autopilot dirancang untuk postur keamanan GKE dasar yang lebih tinggi.
Di cluster Standard, Anda dapat mengaktifkan dan menonaktifkan kebijakan tertentu kapan saja. Administrator organisasi dapat mengontrol apakah kebijakan Autopilot tertentu dapat dinonaktifkan dengan menerapkan batasan kustom di organisasi, folder, atau project. Anda dapat menggunakan kebijakan yang telah ditentukan sebelumnya ini untuk menerapkan praktik terbaik keamanan tanpa perlu menulis peran dan binding RBAC yang kompleks. Banyak kebijakan tingkat cluster dapat membantu Anda meningkatkan keamanan cluster meskipun Anda tidak tertarik menggunakan mode Autopilot untuk cluster atau workload. Untuk mengetahui informasi selengkapnya tentang kebijakan cluster Autopilot yang tersedia, lihat bagian Kebijakan yang didukung.
Pertimbangan untuk menerapkan kebijakan cluster Autopilot
Meskipun cluster Autopilot selalu menerapkan kebijakan ini, cluster Standard sering kali memiliki workload dan node pool yang ada yang mungkin melanggar kebijakan yang Anda terapkan. Sebelum Anda menerapkan atau menonaktifkan kebijakan di cluster, baca pertimbangan berikut:
- Perubahan hanya berlaku untuk workload baru: saat Anda mengaktifkan kebijakan yang berlaku untuk workload, perubahan hanya berlaku untuk Pod yang dibuat atau diubah setelah Anda mengaktifkan kebijakan tersebut. Pod yang ada yang melanggar kebijakan dapat terus berjalan. Sebelum mengaktifkan kebijakan, tinjau beban kerja yang ada di cluster untuk memverifikasi bahwa beban kerja tersebut mematuhi batasan kebijakan.
- Kebijakan node pool berlaku untuk semua node: saat Anda mengaktifkan kebijakan yang berlaku untuk node pool di cluster Standard, batasan berlaku untuk node pool baru dan yang sudah ada. Jika node pool yang ada melanggar
kebijakan, operasi update cluster akan gagal. Misalnya, jika Anda mencoba mengaktifkan kebijakan
no-standard-node-poolsdi cluster yang memiliki node pool yang dikelola pengguna, operasi Anda akan gagal. Sebelum mengaktifkan kebijakan node pool, tinjau node pool yang ada di cluster. - Mengaktifkan semua kebijakan akan mengaktifkan mode Autopilot: jika Anda mengaktifkan semua kebijakan Autopilot yang tersedia (termasuk kebijakan yang mencegah kumpulan node yang dikelola pengguna), semua workload di cluster Anda hanya dapat berjalan dalam mode Autopilot. Artinya, semua workload Anda harus mematuhi batasan keamanan Autopilot dan semua kebijakan cluster. Dengan pendekatan ini, Anda dapat menjalankan seluruh cluster Standard dalam mode Autopilot, dengan opsi untuk menonaktifkan kebijakan tertentu jika diperlukan.
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 kebijakan Autopilot tertentu di cluster Anda
Gunakan gcloud CLI atau GKE API untuk mengaktifkan kebijakan tertentu saat Anda membuat atau mengupdate cluster Standar. Untuk menambahkan kebijakan cluster Autopilot tertentu ke daftar kebijakan yang diterapkan GKE di cluster, gunakan flag --autopilot-cluster-policies dengan perintah gcloud container clusters create atau perintah gcloud container clusters update.
Contoh berikut menunjukkan cara mengaktifkan kebijakan di cluster yang sudah ada:
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--autopilot-cluster-policies=AUTOPILOT_POLICIES
Ganti kode berikut:
CLUSTER_NAME: nama cluster Standard Anda.CONTROL_PLANE_LOCATION: region atau zona bidang kontrol cluster, sepertius-central1atauus-central1-a.AUTOPILOT_POLICIES: daftar kebijakan cluster Autopilot yang dipisahkan koma untuk mulai diterapkan di cluster, sepertino-system-mutation,no-system-impersonation. Anda harus menentukan satu atau beberapa kebijakan yang didukung. Kebijakan yang Anda tentukan ditambahkan ke daftar kebijakan yang sudah diterapkan GKE di cluster. Untuk menonaktifkan penerapan kebijakan, lihat bagian Menonaktifkan kebijakan Autopilot tertentu di cluster Anda.
Jika perintah gagal dengan pesan error yang diawali dengan Bad value [invalid
policy]:, pastikan semua nama kebijakan yang Anda tentukan ada dalam
daftar kebijakan yang didukung.
Memverifikasi penerapan kebijakan
Setelah mengaktifkan kebijakan tertentu, Anda dapat memverifikasi bahwa penerapan berfungsi dengan
mencoba membuat resource yang melanggar kebijakan tersebut. Misalnya, jika Anda
mengaktifkan kebijakan no-system-mutation, Anda dapat mencoba membuat Pod di
namespace kube-system. GKE memblokir operasi pembuatan Pod
dan menampilkan pesan error yang mirip dengan berikut ini:
Error from server (Forbidden): pods is forbidden: User cannot create resource "pods" in API group "" in the namespace "kube-system": GKE Warden authz [denied by managed-namespaces-limitation]: the namespace "kube-system" is managed and the request's verb "create" is denied
Menonaktifkan kebijakan Autopilot tertentu di cluster Anda
Anda dapat menonaktifkan kebijakan cluster Autopilot kapan saja.
Menonaktifkan kebijakan berguna dalam situasi saat persyaratan keamanan Anda telah berubah, atau saat alur kerja yang ada terganggu saat Anda mengaktifkan kebijakan tersebut. Untuk menghapus kebijakan dari daftar kebijakan yang diterapkan GKE di cluster, gunakan flag --remove-autopilot-cluster-policies dengan perintah gcloud container clusters update:
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--remove-autopilot-cluster-policies=AUTOPILOT_POLICIES
Anda harus menentukan setidaknya satu nilai untuk
flag --remove-autopilot-cluster-policies. Jika Anda menentukan flag ini tanpa
nilai, operasi akan gagal.
Jika perintah gagal dengan pesan error yang diawali dengan Bad value [invalid
policy]:, pastikan semua nama kebijakan yang Anda tentukan ada dalam
daftar kebijakan yang didukung.
Menerapkan kebijakan cluster Autopilot di organisasi
Administrator organisasi dapat menerapkan penggunaan kebijakan cluster ini di seluruh
organisasi, project, atau folder menggunakan
batasan kebijakan organisasi kustom. Langkah tambahan ini dapat membantu Anda mencegah penghapusan kebijakan cluster yang diperlukan secara tidak sah atau tidak disengaja dari cluster. Gunakan kolom ClusterPolicyConfig dalam batasan kustom Anda,
seperti dalam contoh berikut:
name: organizations/ORGANIZATION_ID/customConstraints/custom.autopilotClusterPolicies
resourceTypes:
- container.googleapis.com/Cluster
methodTypes:
- CREATE
- UPDATE
condition: "resource.ClusterPolicyConfig.no_system_mutation == true && resource.ClusterPolicyConfig.no_system_impersonation == true"
actionType: ALLOW
displayName: Autopilot policies in Standard clusters.
description: For all new and existing Standard clusters, enable the no_system_mutation and no_system_impersonation Autopilot cluster policies. For more information, see https://docs.cloud.google.com/kubernetes-engine/security/autopilot-cluster-policies-standard.
Kebijakan yang didukung
Setiap kebijakan Autopilot yang tersedia di cluster Standard menerapkan satu atau beberapa praktik terbaik keamanan di tingkat cluster.
Kebijakan seperti no-system-mutation, no-system-impersonation, dan
no-unsafe-webhooks membantu meningkatkan keamanan cluster GKE
apa pun, meskipun Anda tidak tertarik menggunakan mode Autopilot.
Tabel berikut menjelaskan kebijakan Autopilot yang dapat Anda aktifkan di cluster Standar dan membantu Anda bersiap untuk penerapan kebijakan:
| Nama kebijakan | Deskripsi | Yang harus dilakukan sebelum pengaktifan |
|---|---|---|
no-system-mutation |
Mencegah pembuatan atau modifikasi resource di namespace sistem GKE (seperti kube-system). |
Pindahkan Pod Anda dari namespace sistem ke namespace Anda sendiri. |
no-system-impersonation |
Memblokir upaya peniruan identitas pengguna sistem dan mencegah pembuatan CertificateSigningRequests menggunakan prinsipal sistem. | Cari CertificateSigningRequests tidak sah yang dibuat untuk identitas sistem. Jika Anda menemukan CertificateSigningRequest yang disetujui dan tidak sah, rotasi kredensial cluster Anda untuk membatalkan validitas sertifikat. |
no-unsafe-webhooks |
Mencegah webhook dan kebijakan penerimaan mencegat resource sistem penting seperti objek Node, PersistentVolumes, atau CertificateSigningRequests. |
Gunakan layanan Pemberi Rekomendasi untuk mengidentifikasi webhook yang mencegat resource sistem. Jika Anda menemukan webhook, ubah konfigurasi webhook. Untuk mengetahui informasi selengkapnya, lihat Memastikan stabilitas bidang kontrol saat menggunakan webhook. |
no-standard-node-pools |
Mencegah keberadaan node pool yang dikelola pengguna, termasuk node pool yang dibuat secara manual dan otomatis, di cluster. Hanya node pool Autopilot yang dapat ada di cluster. | Hapus semua node pool non-Autopilot yang ada, termasuk node pool default yang dibuat dengan cluster. |
Langkah berikutnya
- Pelajari lebih lanjut cara memperkuat keamanan cluster Anda.
- Pelajari langkah-langkah keamanan Autopilot lainnya.