Dokumen ini menunjukkan cara membuat daftar yang diizinkan yang memungkinkan Anda men-deploy workload istimewa di node Autopilot Anda. Anda menyimpan daftar yang diizinkan ini di bucket Cloud Storage. Dokumen ini ditujukan bagi admin dan operator platform yang ingin mengecualikan workload tertentu milik pelanggan dari batasan keamanan Autopilot default untuk workload Kubernetes tertentu. Anda seharusnya sudah memahami kontrol penerimaan workload istimewa di Autopilot.
Tentang workload istimewa di Autopilot
Mode Autopilot menerapkan serangkaian batasan default pada workload untuk meningkatkan postur keamanan Anda. Anda dapat melewati batasan ini untuk menjalankan workload istimewa tertentu dengan menginstal daftar yang diizinkan yang sesuai dengan workload tersebut. Secara default, cluster Autopilot atau Standard memungkinkan Anda menginstal daftar yang diizinkan dari partner Autopilot dan project open source tertentu.
Pelanggan GKE yang memenuhi syarat dapat membuat dan mengelola daftar yang diizinkan untuk beban kerja istimewa mereka sendiri yang tidak kompatibel dengan batasan Autopilot default. Daftar yang diizinkan ini adalah resource kustom Kubernetes WorkloadAllowlist yang Anda tentukan dalam file YAML dan simpan di bucket Cloud Storage. Admin identitas dan akun menggunakan kebijakan organisasi untuk memungkinkan Anda mengonfigurasi cluster agar mengenali daftar yang diizinkan dan bucket yang dikelola pelanggan ini. Admin cluster dapat menginstal daftar yang diizinkan ini sehingga workload dengan hak istimewa dapat berjalan dalam mode Autopilot.
Untuk mengetahui informasi selengkapnya tentang proses dan orang-orang yang terlibat, lihat Cara kerja kontrol penerimaan workload Autopilot yang memiliki hak istimewa.
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.
-
Enable the Cloud Storage API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. - Pastikan Anda memiliki cluster GKE yang menjalankan versi 1.35 atau yang lebih baru. Anda juga dapat membuat cluster Autopilot untuk tugas ini.
- Pastikan Anda memiliki bucket Cloud Storage yang dapat digunakan untuk menyimpan file daftar yang diizinkan. Anda juga dapat membuat bucket untuk tugas ini.
- Buka manifes YAML yang menentukan workload istimewa yang ingin Anda jalankan di Autopilot.
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk menyimpan daftar yang diizinkan di Cloud Storage dan mengonfigurasi sinkronisasi, minta administrator Anda untuk memberi Anda peran IAM berikut di bucket Anda:
-
Simpan daftar yang diizinkan di bucket Anda:
Storage Object User (
roles/storage.objectUser) -
Memberikan akses ke agen layanan GKE:
Storage Admin (
roles/storage.admin)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Membuat dan mengupload WorkloadAllowlist
Daftar yang diizinkan adalah resource kustom WorkloadAllowlist yang Anda tentukan dalam file YAML. Kolom dalam spesifikasi WorkloadAllowlist mirip dengan kolom dalam spesifikasi Pod Kubernetes. Saat Anda menginstal daftar yang diizinkan di cluster dan men-deploy workload istimewa, GKE akan memvalidasi spesifikasi workload istimewa berdasarkan daftar yang diizinkan yang diinstal. Workload dapat berjalan hanya jika semua kolom dalam spesifikasi daftar yang diizinkan cocok dengan kolom yang sesuai dalam spesifikasi workload.
Untuk membuat WorkloadAllowlist baru dan menguploadnya ke bucket Cloud Storage, ikuti langkah-langkah berikut:
- Identifikasi workload dengan hak istimewa yang akan dimasukkan ke daftar yang diizinkan.
Tambahkan anotasi berikut ke kolom
metadata.annotationsdalam spesifikasi Pod Anda:cloud.google.com/generate-allowlist: "true"Untuk Pod yang dikelola oleh pengontrol, seperti DaemonSet atau Deployment, tambahkan anotasi ke kolom
spec.template.metadata.annotations.Coba buat workload dengan hak istimewa di cluster Anda:
kubectl apply -f WORKLOAD_FILE_PATHGanti WORKLOAD_FILE_PATH dengan jalur ke file manifes workload Anda. GKE menolak workload dengan pesan error yang mencakup manifes WorkloadAllowlist. Outputnya mirip dengan hal berikut ini:
This workload can be enabled using the following Custom Resource. To be used in-cluster, the WorkloadAllowlist must be uploaded to Google Cloud Storage and then installed using an AllowlistSynchronizer. Refer to https://cloud.google.com/kubernetes-engine/docs/how-to/autopilot-privileged-allowlists. Note that many common partner workloads are already allowlisted. These can be installed directly using an AllowlistSynchronizer. Refer to https://cloud.google.com/kubernetes-engine/docs/resources/autopilot-partners. --- apiVersion: auto.gke.io/v1 kind: WorkloadAllowlist metadata: name: test-pod-allowlist-2025-09-11t22-40-37 annotations: autopilot.gke.io/no-connect: "true" exemptions: - autogke-disallow-privilege matchingCriteria: containers: - name: pause-container2 image: k8s.gcr.io/pause2 securityContext: privileged: trueDi editor teks, buat file YAML yang berisi WorkloadAllowlist yang dihasilkan.
Tetapkan kolom
metadata.namedaftar yang diizinkan.Opsional: Generalisasi WorkloadAllowlist sehingga dapat mengecualikan workload serupa. Gunakan salah satu metode berikut:
Kolom tertentu mendukung ekspresi reguler, seperti
matchingCriteria.containers[*].imagedanmatchingCriteria.containers[*].args. Gunakan ekspresi reguler yang cocok dengan beberapa nilai di berbagai workload.Kolom tertentu, seperti
matchingCriteria.containersdanmatchingCriteria.securityContext.capabilities.add, mencocokkan workload apa pun dengan subset nilai dari WorkloadAllowlist. Di WorkloadAllowlist, tentukan nilai tambahan untuk mencocokkan workload lain.
Untuk mengetahui informasi selengkapnya tentang semua kolom dan nilai yang didukung yang dapat Anda gunakan, lihat WorkloadAllowlist CustomResourceDefinition.
Jika kebijakan organisasi Anda mengizinkan penginstalan daftar yang diizinkan dari bucket Anda di cluster, admin cluster dapat melakukan hal berikut:
- Tambahkan jalur daftar yang diizinkan ke cluster.
- Buat AllowlistSynchronizer untuk menginstal daftar yang diizinkan dari bucket Anda.
Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi cluster dan menginstal daftar yang diizinkan, lihat Mengontrol penerimaan workload istimewa dalam mode Autopilot.
Contoh konfigurasi daftar yang diizinkan
Kolom matchingCriteria dalam spesifikasi WorkloadAllowlist memiliki struktur yang serupa dengan spesifikasi Pod Kubernetes. WorkloadAllowlist CustomResourceDefinition
adalah sumber tepercaya untuk semua kolom, nilai, dan ekspresi yang dapat Anda
gunakan.
Bagian ini menunjukkan contoh daftar yang diizinkan yang cocok dengan beban kerja yang memiliki properti berikut:
- Container
container-1dalam beban kerja berjalan dalam mode istimewa. - Workload memasang direktori
/var/log/dari sistem file node dalam mode tulis.
Tinjau contoh workload:
apiVersion: apps/v1 kind: Deployment metadata: name: example-privileged-workload labels: env: dev spec: selector: matchLabels: env: dev template: metadata: labels: env: dev spec: containers: - name: container-1 image: example-image-1 resources: requests: cpu: "400m" memory: "4Gi" # Run the container in privileged mode securityContext: privileged: true - name: container-2 image: example-image-2 volumeMounts: - name: write-varlog mountPath: /logs readOnly: false # Mount a host directory volumes: - name: write-varlog hostPath: path: /var/log type: DirectorySecara default, Autopilot menolak workload ini.
Tinjau contoh WorkloadAllowlist:
apiVersion: auto.gke.io/v1 kind: WorkloadAllowlist minGKEVersion: 1.32.0-gke.1000000 metadata: name: example-privileged-workload annotations: autopilot.gke.io/no-connect: "true" # List of constraints that the allowlist modifies exemptions: - autogke-disallow-privilege - autogke-no-write-mode-hostpath matchingCriteria: containers: - name: container-1 image: example-image-1 securityContext: privileged: true - name: container-2 image: example-image-2 volumeMounts: - name: write-varlog mountPath: /logs readOnly: false volumes: - name: write-varlog hostPath: path: /var/logWorkloadAllowlist ini memiliki properti berikut:
- Nilai di kolom
exemptionsmenentukan batasan Autopilot yang dilewati daftar yang diizinkan. - Nilai di kolom
matchingCriteriamenentukan penampung yang digunakan oleh contoh workload dan kolom yang biasanya melanggar batasan Autopilot.
Daftar yang diizinkan hanya memiliki nilai untuk kolom yang melanggar batasan. Kolom lainnya dalam workload, seperti kolom
resources.requests, akan diabaikan.- Nilai di kolom
Saat Anda menginstal contoh WorkloadAllowlist ini di cluster, GKE akan mengizinkan workload istimewa berjalan di cluster tersebut. Misalnya, di cluster Standard yang memiliki node Autopilot, penginstalan WorkloadAllowlist ini memungkinkan workload dengan hak istimewa berjalan di node Autopilot.
Memberikan akses ke agen layanan GKE
Untuk menyinkronkan daftar yang diizinkan dari bucket Anda di cluster, agen layanan GKE di project cluster memerlukan peran IAM berikut:
- Storage Bucket Viewer (
roles/storage.bucketViewer) - Storage Object Viewer (
roles/storage.objectViewer)
Untuk memberikan peran ini kepada agen layanan, ikuti langkah-langkah berikut:
Temukan nomor project project cluster Anda:
gcloud projects describe CLUSTER_PROJECT_ID \ --format='value(projectNumber)'Berikan peran
roles/storage.bucketViewer:gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --project=BUCKET_PROJECT_ID \ --role=roles/storage.bucketViewerGanti kode berikut:
BUCKET_NAME: nama bucket Cloud Storage Anda.CLUSTER_PROJECT_NUMBER: nomor project dari project cluster, dari output langkah sebelumnya.BUCKET_PROJECT_ID: ID project yang berisi bucket Anda.
Berikan peran
roles/storage.objectViewer:gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --project=BUCKET_PROJECT_ID \ --role=roles/storage.objectViewer
Langkah berikutnya
- Menambahkan jalur daftar yang diizinkan ke kebijakan organisasi
- Mengonfigurasi cluster dan menginstal daftar yang diizinkan