- Konfigurasi GKE agar hanya menjalankan workload dengan hak istimewa tertentu dalam mode Autopilot.
- Instal daftar yang diizinkan untuk workload istimewa.
Dokumen ini ditujukan untuk jenis peran berikut:
- Engineer keamanan yang ingin memastikan bahwa workload pihak ketiga memerlukan daftar yang diizinkan untuk berjalan di cluster Anda dan berasal dari sumber yang disetujui GKE.
- Engineer platform yang ingin mengaktifkan workload pihak ketiga di cluster untuk membantu tim aplikasi.
Anda seharusnya sudah memahami konsep berikut:
- Tentang penerimaan workload dengan hak istimewa dalam mode Autopilot
- Resource kustom Kubernetes
- Batasan keamanan GKE Autopilot
- Partner GKE Autopilot
Tentang workload istimewa di Autopilot
Mode Autopilot menerapkan serangkaian batasan default pada workload untuk meningkatkan postur keamanan Anda. Anda dapat mengubah batasan ini untuk menjalankan workload istimewa tertentu dengan menginstal daftar yang diizinkan yang sesuai dengan workload tersebut. Secara default, Autopilot memungkinkan Anda menginstal daftar yang diizinkan dari partner Autopilot dan project open source tertentu. Pelanggan GKE yang memenuhi syarat juga dapat membuat daftar yang diizinkan untuk workload istimewa milik pelanggan yang mereka upload ke bucket Cloud Storage.
Setiap daftar yang diizinkan adalah file yang cocok dengan workload istimewa tertentu. Untuk menjalankan workload istimewa, Anda dapat melakukan hal berikut:
- Konfigurasi cluster untuk mengizinkan penginstalan daftar yang diizinkan dari jalur tertentu. Secara default, semua daftar yang diizinkan dari partner Autopilot dan project open source yang disetujui didukung.
- Buat AllowlistSynchronizer di cluster yang menginstal daftar yang diizinkan dan terus memperbarui daftar yang diizinkan.
Bug dan permintaan fitur untuk workload dan daftar yang diizinkan yang memiliki hak istimewa
Pemilik workload istimewa bertanggung jawab untuk membuat, mengembangkan, dan memelihara workload serta daftar yang diizinkannya. Jika Anda menemukan bug atau memiliki permintaan fitur untuk workload atau daftar yang diizinkan yang memiliki hak istimewa, hubungi pemilik yang sesuai.
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.
- Pastikan Anda dapat mengonfigurasi cluster untuk menginstal daftar yang diizinkan dari sumber yang Anda pilih. Administrator organisasi dapat menggunakan kebijakan organisasi untuk mengontrol jalur yang dapat Anda tambahkan ke cluster. Untuk mengetahui informasi selengkapnya, lihat Batasan terkelola Layanan Kebijakan Organisasi untuk daftar yang diizinkan.
Untuk workload istimewa milik pelanggan yang tersedia bagi pelanggan GKE yang memenuhi syarat, verifikasi kedua kondisi berikut:
- Administrator organisasi Anda menambahkan jalur bucket daftar yang diizinkan ke kebijakan organisasi. Untuk mengetahui informasi selengkapnya, lihat Membatasi workload GKE yang memiliki hak istimewa di organisasi.
- Daftar yang diizinkan yang ingin Anda instal ada di bucket Cloud Storage. Untuk mengetahui informasi selengkapnya, lihat Membuat daftar yang diizinkan untuk workload Autopilot yang memiliki hak istimewa.
Persyaratan
- Resource kustom AllowlistSynchronizer memerlukan GKE versi 1.32.2-gke.1652000 atau yang lebih baru.
- Anda harus mengetahui workload istimewa mana yang ingin dijalankan di cluster Anda.
- Untuk mengubah konfigurasi jalur daftar yang diizinkan untuk cluster, cluster Anda harus menjalankan GKE versi 1.35 atau yang lebih baru.
Mengonfigurasi jalur daftar yang diizinkan untuk cluster
Bagian ini menunjukkan cara mengonfigurasi cluster untuk mendukung penginstalan daftar yang diizinkan dari serangkaian jalur yang disetujui. Secara default, Autopilot mendukung penginstalan daftar yang diizinkan dari partner GKE dan project open source yang disetujui. Anda dapat mengubah konfigurasi default ini untuk setiap cluster. Anda juga dapat menentukan sumber yang diizinkan dan disetujui untuk seluruh organisasi, folder, atau project dengan menggunakan kebijakan organisasi.
Identifikasi jalur ke file daftar yang diizinkan untuk ditambahkan ke cluster. Anda dapat menentukan beberapa jalur saat membuat atau mengupdate cluster. Anda juga dapat menonaktifkan penginstalan daftar yang diizinkan dari sumber mana pun dengan menentukan string kosong, bukan jalur. Untuk mengetahui informasi selengkapnya tentang jalur yang dapat Anda tentukan, lihat Jalur daftar yang diizinkan.
Untuk mengontrol sumber yang diizinkan yang disetujui untuk cluster, gunakan flag
--autopilot-privileged-admissionsaat Anda membuat atau mengupdate cluster Autopilot atau Standard, seperti pada perintah berikut:gcloud container clusters create-auto CLUSTER_NAME \ --location=LOCATION \ --autopilot-privileged-admission=ALLOWLIST1_PATH,ALLOWLIST2_PATH,...Ganti kode berikut:
CLUSTER_NAME: nama untuk cluster baru Anda.LOCATION: lokasi bidang kontrol cluster, sepertius-central1.ALLOWLIST1_PATH,ALLOWLIST2_PATH,...: daftar jalur yang dipisahkan koma ke file atau direktori yang diizinkan. Contoh,gke://*,gs://my-agent/privileged-logging-agent.yaml. Anda juga dapat menonaktifkan penginstalan dari daftar yang diizinkan dari sumber mana pun dengan menentukan string kosong ("").
Jika Anda mengupdate cluster yang ada tanpa menentukan
flag --autopilot-privileged-admission, konfigurasi jalur yang ada untuk
cluster tersebut tidak akan berubah. Anda tidak perlu menentukan flag ini setiap kali Anda mengupdate cluster.
Setelah operasi pembuatan atau update cluster selesai, Anda dapat menginstal daftar yang diizinkan dari jalur yang ditentukan dengan membuat AllowlistSynchronizer.
Buat AllowlistSynchronizer baru
Untuk menjalankan workload istimewa, Anda menambahkan jalur ke file daftar yang diizinkan yang sesuai ke spesifikasi AllowlistSynchronizer dalam file YAML. Kemudian, deploy AllowlistSynchronizer ke cluster Anda.
- Di editor teks, buat file YAML baru.
Tambahkan konten berikut ke file YAML:
apiVersion: auto.gke.io/v1 kind: AllowlistSynchronizer metadata: name: ALLOWLIST_SYNCHRONIZER_NAME spec: allowlistPaths: - ALLOWLIST1_PATH - ALLOWLIST2_PATHGanti kode berikut:
ALLOWLIST_SYNCHRONIZER_NAME: nama sinkronisasi baru. Pilih nama deskriptif yang mengidentifikasi workload atau tim yang didukung daftar yang diizinkan.ALLOWLIST1_PATH, ALLOWLIST2_PATH, ...: daftar jalur ke file atau direktori yang ingin Anda masukkan ke daftar yang diizinkan untuk diinstal, seperti dalam contoh berikut untuk daftar yang diizinkan yang disetujui GKE:allowlistPaths: - Gke-Org/accelerators/* - Wiz/wiz-sensor/v1/wiz-sensor-v1.yamlAtau dalam contoh berikut untuk daftar yang diizinkan milik pelanggan:
allowlistPaths: - my-agent/log-collector/* - my-agent/privileged-logging-agent.yamlKonfigurasi cluster harus mendukung jalur yang Anda tentukan, seperti yang dijelaskan di bagian Mengonfigurasi jalur yang diizinkan untuk cluster. Selain itu, setiap AllowlistSynchronizer harus berisi daftar yang disetujui GKE secara eksklusif, untuk daftar yang dimiliki pelanggan secara eksklusif.
Jika Anda menginstal daftar yang diizinkan dari bucket Cloud Storage milik pelanggan, tambahkan kolom
spec.projectNumberdanspec.bucketNameke AllowlistSynchronizer Anda. Untuk mengetahui detail selengkapnya, lihat AllowlistSynchronizer CustomResourceDefinition.Deploy file YAML ke cluster Anda:
kubectl apply -f PATH_TO_YAML_FILEGanti
PATH_TO_YAML_FILEdengan jalur ke file YAML yang Anda buat di langkah sebelumnya.Pengontrol AllowlistSynchronizer menginstal file daftar yang diizinkan dari jalur yang ditentukan di cluster Anda.
Tunggu hingga sinkronisasi melaporkan status
Ready:kubectl wait --for=condition=Ready allowlistsynchronizer/ALLOWLIST_SYNCHRONIZER_NAME \ --timeout=60s
Anda juga dapat mengintegrasikan penginstalan daftar yang diizinkan dan deployment workload istimewa ke dalam pipeline continuous integration dan continuous deployment (CI/CD). Konfigurasi alur kerja Anda untuk menunggu hingga daftar yang diizinkan berhasil diinstal sebelum men-deploy workload yang sesuai.
Memperbarui AllowlistSynchronizer yang ada
Anda dapat memperbarui AllowlistSynchronizer yang ada untuk menambahkan atau menghapus file daftar yang diizinkan. Anda dapat memperbarui sinkronisasi yang ada dalam situasi seperti berikut:
- Pemilik workload menambahkan file daftar yang diizinkan baru yang memiliki nama berbeda.
- Anda ingin menambahkan daftar yang diizinkan untuk beban kerja baru ke sinkronisasi yang ada yang mengelompokkan daftar yang diizinkan terkait.
- Anda ingin menghapus daftar yang diizinkan dari sinkronisasi karena Anda tidak ingin lagi menggunakan workload yang sesuai.
Untuk memperbarui objek AllowlistSynchronizer yang ada, lakukan hal berikut:
Mencantumkan sinkronisasi yang ada di cluster Anda:
kubectl get allowlistsynchronizerBuka spesifikasi sinkronisasi yang ingin Anda perbarui di editor teks.
Perbarui kolom
spec.allowlistPathsuntuk menambahkan, mengubah, atau menghapus jalur file daftar yang diizinkan.Simpan dan tutup editor teks.
Terapkan konfigurasi yang telah diupdate ke cluster:
kubectl apply -f PATH_TO_YAML_FILEGanti
PATH_TO_YAML_FILEdengan jalur ke file YAML yang Anda perbarui di langkah sebelumnya.
Saat Anda men-deploy konfigurasi sinkronisasi yang diperbarui, kolom
managedAllowlistStatus.generation dalam status objek
AllowlistSynchronizer akan bertambah satu. Pengontrol AllowlistSynchronizer
kemudian akan menerapkan perubahan Anda.
Memantau status sinkronisasi daftar yang diizinkan
Setelah menginstal AllowlistSynchronizer atau memperbarui sinkronisasi yang ada, Anda dapat memantau status sinkronisasi. Status ini membantu Anda melacak penginstalan, penghapusan, atau modifikasi file daftar yang diizinkan serta error yang mungkin terjadi.
Untuk memantau status umum sinkronisasi, jalankan perintah berikut:
kubectl get allowlistsynchronizer ALLOWLIST_SYNCHRONIZER_NAME -o yaml
Outputnya mirip dengan hal berikut ini:
...
status:
conditions:
- type: Ready
status: "False"
reason: "SyncError"
message: "some allowlists failed to sync: example-allowlist-1.yaml"
lastTransitionTime: "2024-10-12T10:00:00Z"
observedGeneration: 2
managedAllowlistStatus:
- filePath: "gs://path/to/example-allowlist-2.yaml"
generation: 1
phase: Installed
lastSuccessfulSync: "2024-10-10T10:00:00Z"
- filePath: "gs://path/to/example-allowlist-1.yaml"
phase: Failed
lastError: "Initial install failed: invalid contents"
lastSuccessfulSync: "2024-10-08T10:00:00Z"
Dalam contoh output ini, daftar yang diizinkan example-allowlist-1.yaml gagal disinkronkan, dan daftar yang diizinkan example-allowlist-2.yaml berhasil diinstal. Untuk mengetahui deskripsi kolom ini, lihat
Status AllowlistSynchronizer.
Memastikan bahwa daftar yang diizinkan ada di cluster Anda
Untuk memverifikasi bahwa daftar yang diizinkan ada di cluster Anda, jalankan perintah berikut:
kubectl get workloadallowlist
Outputnya adalah daftar daftar yang diizinkan yang diinstal di cluster. Pastikan output menyertakan daftar yang diizinkan yang ingin Anda gunakan.
Men-deploy workload istimewa
Setelah penginstalan daftar yang diizinkan berhasil, Anda dapat men-deploy workload yang sesuai di cluster Anda. Pemilik workload juga harus memberi Anda petunjuk penginstalan untuk workload. Untuk mengetahui daftar partner Autopilot dan link ke dokumentasi mereka, lihat Partner Autopilot.
Menggunakan repositori mirror image pribadi
Anda dapat mencerminkan image container beban kerja istimewa di repositori pribadi yang Anda miliki. Untuk menjalankan gambar yang dicerminkan ini dalam workload, Anda harus memenuhi semua persyaratan berikut:
- Ringkasan SHA-256 dari image yang di-mirror harus cocok dengan ringkasan image dari workload yang tersedia secara publik.
- Ringkasan image SHA-256 yang Anda tentukan harus ada di objek
WorkloadAllowlistyang disinkronkan ke cluster Anda.
Jika workload mendukung image yang dicerminkan, spesifikasi daftar yang diizinkan untuk workload tersebut berisi daftar ringkasan image ke kolom containers.imageDigests dalam spesifikasi daftar yang diizinkan untuk workload tersebut. Biasanya, kolom ini memiliki
ringkasan terpisah untuk setiap versi image container yang tersedia. Untuk melihat daftar ringkasan gambar ini, lakukan langkah berikut:
- Pastikan daftar yang diizinkan ada di cluster Anda.
Dapatkan spesifikasi daftar yang diizinkan yang diinstal:
kubectl get workloadallowlist ALLOWLIST_NAME -o yamlGanti
ALLOWLIST_NAMEdengan nama daftar yang diizinkan yang diinstal. Contoh,company-name-solution-v1.0.0.Untuk beban kerja yang mendukung fitur ini, outputnya mirip dengan berikut ini. Kolom
imageDigestsmemiliki daftar ringkasan yang diizinkan.# lines omitted for clarity - containerName: pause-container1 imageDigests: - cb5c1bddd1b5665e1867a7fa1b5fa843a47ee433bbb75d4293888b71def53229 - 932ea160d395f3d7f76c0c17a52a63c4cfe1836a900f1058b6bc20b16fd10d23Jika output tidak menyertakan kolom
imageDigests, atau jika ringkasan untuk rilis yang ingin Anda gunakan tidak ada dalam daftar, hubungi langsung pemilik beban kerja dan minta mereka untuk memperbarui daftar yang diizinkan. Setelah pemilik workload menambahkan ringkasan image ke daftar yang diizinkan, sinkronisasi daftar yang diizinkan di cluster Anda akan otomatis menginstal daftar yang diizinkan yang telah diupdate.Tambahkan salah satu ringkasan gambar yang didukung ke manifes workload Anda.
Misalnya, perhatikan gambar berikut dalam spesifikasi Pod yang tersedia secara publik dari partner:
...
containers:
- name: pause-container1
image: partner-repo/pause1@sha256:cb5c1bddd1b5665e1867a7fa1b5fa843a47ee433bbb75d4293888b71def53229
securityContext:
privileged: true
Anda dapat menggunakan image yang dicerminkan jika ringkasannya cocok dengan ringkasan yang tersedia secara publik, seperti dalam contoh berikut:
...
containers:
- name: pause-container1
image: my-private-repo/pause1@sha256:cb5c1bddd1b5665e1867a7fa1b5fa843a47ee433bbb75d4293888b71def53229
securityContext:
privileged: true
Anda harus menyertakan ringkasan SHA-256 di kolom gambar, mirip dengan contoh sebelumnya. Jika ringkasan tidak cocok, gambar yang dicerminkan tidak akan berjalan. Untuk mempertahankan ringkasan gambar saat Anda mencerminkan gambar partner, pertimbangkan untuk menggunakan alat seperti crane, ORAS, atau skopeo.
Menghapus workload istimewa
Untuk berhenti mengizinkan workload istimewa berjalan di cluster Anda, hapus jalur ke daftar yang diizinkan yang sesuai dari AllowlistSynchronizer Anda. Penyinkronisasi meng-uninstal daftar yang diizinkan.
Jika Anda menghapus objek WorkloadAllowlist dari cluster, bukan
memperbarui sinkronisasi, sinkronisasi akan menginstal ulang daftar yang diizinkan. Pastikan
bahwa Anda menghapus jalur dari AllowlistSynchronizer.
Untuk meng-uninstal daftar yang diizinkan, lakukan hal berikut:
- Dalam manifes YAML untuk AllowlistSynchronizer yang mengelola daftar yang diizinkan, hapus jalur ke daftar yang diizinkan yang ingin Anda uninstal. Untuk mengetahui petunjuknya, lihat Memperbarui bagian AllowlistSynchronizer yang ada.
Untuk memverifikasi bahwa daftar yang diizinkan telah di-uninstal, dapatkan daftar objek
WorkloadAllowlistdi cluster Anda:kubectl get workloadallowlistDalam output, pastikan daftar yang diizinkan yang ingin Anda hapus tidak muncul.
Hapus workload dari cluster Anda. Untuk mengetahui petunjuknya, lihat dokumentasi penyedia workload.
Mencegah penginstalan daftar yang diizinkan di cluster Anda
Untuk mencegah penginstalan daftar izin workload istimewa di cluster tertentu, tentukan string kosong ("") di tanda --autopilot-privileged-admission saat Anda membuat atau memperbarui cluster.
Untuk menonaktifkan jalur daftar yang diizinkan tertentu untuk cluster, hapus jalur ke daftar yang diizinkan tersebut saat Anda membuat atau memperbarui cluster:
gcloud container clusters update CLUSTER_NAME \ --location=LOCATION \ --autopilot-privileged-admission=ALLOWLIST1_PATH,ALLOWLIST2_PATH,...Ganti
ALLOWLIST1_PATH,ALLOWLIST2_PATH,...dengan daftar jalur yang dipisahkan koma untuk mengizinkan sumber. Hilangkan jalur yang ingin Anda nonaktifkan.Untuk menonaktifkan semua daftar yang diizinkan di cluster yang ada, tentukan string kosong sebagai jalur yang disetujui:
gcloud container clusters update CLUSTER_NAME \ --location=LOCATION \ --autopilot-allowlist-paths=""
Memecahkan masalah
Jika sinkronisasi atau deployment workload gagal, lihat Memecahkan masalah deployment workload Autopilot yang memiliki hak istimewa.
Langkah berikutnya
- Pelajari workload yang tersedia dari partner Autopilot GKE
- Menjalankan workload open source yang memiliki hak istimewa di GKE Autopilot
- Pelajari kemampuan keamanan GKE Autopilot default
- Baca CustomResourceDefinition AllowlistSynchronizer