Akun layanan Kubernetes (KSA) memberikan identitas untuk proses yang berjalan di Pod.
Akun layanan Kubernetes berbeda dengan Google Cloud akun layanan yang digunakan aplikasi untuk melakukan panggilan yang diotorisasi ke Google Cloud API.
Google Distributed Cloud menggunakan kunci kriptografi pribadi untuk menandatangani token KSA yang dikeluarkan ke Pod. Kunci kriptografi pribadi ini menggunakan kunci publik yang sesuai untuk memvalidasi token saat Pod mengirimkan permintaan ke server Kubernetes API. Saat Pod menggunakan Workload Identity untuk memanggil Google Cloud API, Google Cloud menggunakan kunci publik yang sama untuk mengautentikasi identitas Pod.
Selama pembuatan cluster pengguna, Google Distributed Cloud akan membuat kunci pribadi dan publik. Selain itu, selama pembuatan cluster, Google Distributed Cloud akan mendaftarkan cluster ke fleet dan memberikan kunci publik ke Google Cloud.
Nanti, Anda dapat merotasi pasangan kunci pribadi/publik. Rotasi akan otomatis mengeluarkan token baru yang ditandatangani oleh kunci pribadi baru. Di akhir rotasi, cluster akan memiliki kunci pribadi baru, kunci publik baru, dan token yang diperbarui. Selain itu, Google Cloud juga memiliki kunci publik baru.
Token terikat dan token lama
Pod dapat menggunakan token lama atau token terikat untuk autentikasi dan otorisasi saat memanggil server Kubernetes API. Token terikat memiliki masa berlaku terbatas dan didistribusikan ke Pod menggunakan volume yang diproyeksikan. Token lama tidak pernah habis masa berlakunya dan disimpan di Secret Kubernetes Secrets. Sebaiknya gunakan token terikat karena lebih aman.
Token terikat dan token lama diperbarui selama rotasi kunci.
Batasan
- Jika Anda membuat cluster dengan
enableAdvancedClusteryang ditetapkan ketrue(yang diperlukan untuk menyiapkan domain topologi), rotasi kunci tidak didukung.
Memulai rotasi kunci
Sebelum memulai rotasi kunci, pertimbangkan hal-hal berikut:
Selama rotasi kunci, Anda tidak dapat memulai rotasi kunci, rotasi otoritas sertifikat, atau update cluster lainnya.
Rotasi kunci tidak dapat dijeda atau di-roll back. Semua kunci lama akan dihapus.
Rotasi kunci akan menghapus node cluster yang ada dan membuat node baru.
Untuk memulai rotasi kunci:
gkectl update credentials ksa-signing-key rotate \
--config USER_CLUSTER_CONFIG \
--kubeconfig ADMIN_CLUSTER_KUBECONIFG \
[--skip-prompt]
Ganti kode berikut:
USER_CLUSTER_CONFIG: Jalur file konfigurasi cluster pengguna
ADMIN_KUBECONFIG_FILE: Jalur file kubeconfig cluster admin
Sertakan --skip-prompt jika Anda tidak ingin diminta.
Melihat status rotasi kunci
Untuk melihat status rotasi kunci:
gkectl update credentials ksa-signing-key status \
--config USER_CLUSTER_CONFIG \
--kubeconfig ADMIN_CLUSTER_KUBECONIFG
Jika rotasi kunci sudah selesai, Anda akan melihat pesan seperti ini:
State of KSASigningKeyRotation with KSASigningKeyVersion 2 is -
status: True,
reason: KSASigningKeyRotationCompleted,
message:{"tokenVersion":2,"privateKeyVersion":2,"publicKeyVersions":[2]}
Jika rotasi KSA Signing Key masih dalam proses, Anda akan melihat pesan seperti ini:
State of KSASigningKeyRotation with KSASigningKeyVersion 2 is -
status: False,
reason: KSASigningKeyRotationProcessedReason,
message:{"tokenVersion":2,"privateKeyVersion":2,"publicKeyVersions":[1,2]}