- Konfigurasi GKE untuk hanya menjalankan workload dengan hak istimewa tertentu dalam mode Autopilot.
- Menginstal daftar yang diizinkan untuk workload dengan hak istimewa.
Dokumen ini ditujukan untuk jenis peran berikut:
- Insinyur keamanan yang ingin memastikan bahwa workload pihak ketiga memerlukan daftar yang diizinkan untuk dijalankan 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 dengan hak istimewa di Autopilot
Mode Autopilot menerapkan serangkaian batasan default pada workload untuk meningkatkan postur keamanan Anda. Anda dapat mengubah batasan ini untuk menjalankan workload dengan hak 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 dengan hak 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 dengan hak istimewa, lakukan hal berikut:
- Konfigurasikan 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 dengan hak istimewa dan daftar yang diizinkan
Pemilik workload dengan hak istimewa bertanggung jawab untuk membuat, mengembangkan, dan memelihara workload dan daftar yang diizinkan. Jika Anda menemukan bug atau memiliki permintaan fitur untuk workload dengan hak istimewa atau daftar yang diizinkan, hubungi pemilik yang sesuai.
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.
- 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 Organization Policy Service 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 dengan hak istimewa di organisasi.
- Daftar yang diizinkan yang ingin Anda instal berada di bucket Cloud Storage. Untuk mengetahui informasi selengkapnya, lihat Membuat daftar yang diizinkan untuk workload Autopilot dengan hak istimewa.
Persyaratan
- Resource kustom AllowlistSynchronizer memerlukan GKE versi 1.32.2-gke.1652000 atau yang lebih baru.
- Anda harus mengetahui workload dengan hak istimewa yang ingin dijalankan di cluster.
- 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 daftar yang diizinkan yang 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 daftar yang diizinkan yang disetujui untuk cluster, gunakan flag
--autopilot-privileged-admissionsaat Anda membuat atau mengupdate cluster Autopilot atau Standard, seperti dalam 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 daftar yang diizinkan. Contoh,gke://*,gs://my-agent/privileged-logging-agent.yaml. Anda juga dapat menonaktifkan penginstalan 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 mengupdate cluster.
Setelah operasi pembuatan atau update cluster selesai, Anda dapat menginstal daftar yang diizinkan dari jalur yang ditentukan dengan membuat AllowlistSynchronizer.
Membuat AllowlistSynchronizer baru
Untuk menjalankan workload dengan hak istimewa, tambahkan jalur ke file daftar yang diizinkan yang sesuai ke spesifikasi AllowlistSynchronizer dalam file YAML. Kemudian, Anda men-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 oleh daftar yang diizinkan.ALLOWLIST1_PATH, ALLOWLIST2_PATH, ...: daftar jalur ke file atau direktori daftar yang diizinkan yang ingin Anda instal, 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 daftar yang diizinkan untuk cluster. Selain itu, setiap AllowlistSynchronizer harus berisi daftar yang diizinkan yang disetujui GKE secara eksklusif, untuk daftar yang diizinkan 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 dengan hak istimewa ke dalam pipeline continuous integration dan continuous deployment (CI/CD). Konfigurasikan 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 workload yang diizinkan 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:
Cantumkan 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 telah diupdate, 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 mengupdate sinkronisasi yang ada, Anda dapat memantau status sinkronisasi. Status ini membantu Anda melacak penginstalan, penghapusan, atau modifikasi file daftar yang diizinkan serta error apa pun 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 deskripsi kolom ini, lihat
Status AllowlistSynchronizer.
Memastikan daftar yang diizinkan ada di cluster Anda
Untuk memverifikasi bahwa daftar yang diizinkan ada di cluster Anda, jalankan perintah berikut:
kubectl get workloadallowlist
Output-nya adalah daftar daftar yang diizinkan yang diinstal di cluster. Pastikan output menyertakan daftar yang diizinkan yang ingin Anda gunakan.
Men-deploy workload dengan hak istimewa
Setelah daftar yang diizinkan berhasil diinstal, 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 duplikat image pribadi
Anda dapat menduplikasi image container workload dengan hak istimewa di repositori pribadi yang Anda miliki. Untuk menjalankan image yang diduplikasi ini dalam workload, Anda harus memenuhi semua persyaratan berikut:
- Ringkasan SHA-256 dari image yang diduplikasi harus cocok dengan ringkasan image workload yang tersedia secara publik.
- Ringkasan image SHA-256 yang Anda tentukan harus ada dalam objek
WorkloadAllowlistyang disinkronkan ke cluster Anda.
Jika workload mendukung image yang diduplikasi, 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 image 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 workload yang mendukung fitur ini, output-nya 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 pemilik workload secara langsung 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 image 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 diduplikat jika ringkasannya cocok dengan ringkasan yang tersedia untuk 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 image, seperti contoh sebelumnya. Jika ringkasan tidak cocok, image yang diduplikasi tidak akan berjalan. Untuk mempertahankan ringkasan image saat Anda menduplikasi image partner, pertimbangkan untuk menggunakan alat seperti crane, ORAS, atau skopeo.
Menghapus workload dengan hak istimewa
Untuk berhenti mengizinkan workload dengan hak istimewa berjalan di cluster Anda, hapus jalur ke daftar yang diizinkan yang sesuai dari AllowlistSynchronizer Anda. Sinkronisasi akan meng-uninstal daftar yang diizinkan.
Jika Anda menghapus objek WorkloadAllowlist dari cluster, bukan
memperbarui sinkronisasi, sinkronisasi akan menginstal ulang daftar yang diizinkan. Pastikan
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 bagian Memperbarui 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 yang diizinkan workload dengan hak istimewa di cluster tertentu, tentukan string kosong ("") di flag --autopilot-privileged-admission saat Anda membuat atau mengupdate cluster.
Untuk menonaktifkan jalur daftar yang diizinkan tertentu untuk cluster, hapus jalur ke daftar yang diizinkan tersebut saat Anda membuat atau mengupdate 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 ke sumber daftar yang diizinkan. 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 dengan hak istimewa.
Langkah berikutnya
- Pelajari workload yang tersedia dari partner GKE Autopilot
- Menjalankan workload open source dengan hak istimewa di GKE Autopilot
- Pelajari kemampuan keamanan GKE Autopilot default
- Baca CustomResourceDefinition AllowlistSynchronizer