Menerapkan kebijakan keamanan Autopilot di cluster Standard

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-pools di 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, seperti us-central1 atau us-central1-a.
  • AUTOPILOT_POLICIES: daftar kebijakan cluster Autopilot yang dipisahkan koma untuk mulai diterapkan di cluster, seperti no-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