Tentang akun layanan di GKE


Halaman ini menjelaskan akun layanan di Google Kubernetes Engine (GKE), yang menyediakan identitas untuk aplikasi.

Akun layanan adalah identitas yang ditujukan untuk digunakan oleh aplikasi, bukan orang. Di GKE, Anda berinteraksi dengan akun layanan Kubernetes dan dengan akun layanan Identity and Access Management.

Akun layanan Kubernetes dan akun layanan IAM

Tabel berikut menjelaskan perbedaan utama antara akun layanan Kubernetes dan akun layanan IAM:

Jenis akun layanan di GKE
ServiceAccount Kubernetes
  • Objek ServiceAccount di server Kubernetes API
  • Cakupan ke namespace Kubernetes dalam cluster
  • Memberikan identitas untuk Pod untuk digunakan di dalam cluster
Akun Layanan IAM
  • Mengelola menggunakan IAM API
  • Cakupan project Google Cloud
  • Memberikan identitas untuk aplikasi dalam project

Akun Layanan Kubernetes

Akun layanan Kubernetes dikelola di level cluster dan ada di server Kubernetes API sebagai objek ServiceAccount. Dokumentasi Kubernetes dan dokumentasi GKE sering menggunakan istilah ServiceAccount untuk membedakan resource Kubernetes ini dari akun layanan di lingkungan lain seperti IAM.

Anda membuat ServiceAccount Kubernetes dalam namespace, lalu menetapkan ServiceAccount tersebut ke Pod menggunakan kolom serviceAccountName dalam manifes Pod. Proses kubelet pada node mendapatkan token pemilik jangka pendek untuk ServiceAccount yang ditetapkan dan memasang token sebagai volume yang diproyeksikan di Pod.

  • Untuk mempelajari dasar-dasar Kubernetes ServiceAccounts, dalam dokumentasi Kubernetes, lihat Akun Layanan.
  • Untuk mempelajari cara membuat ServiceAccounts baru, memberikan izin menggunakan kontrol akses berbasis peran (RBAC), dan menetapkan ServiceAccounts ke Pod, lihat Mengonfigurasi Akun Layanan untuk Pod.
  • Untuk praktik terbaik saat mengelola Akun Layanan Kubernetes, lihat Praktik terbaik untuk RBAC.

Merotasi kredensial ServiceAccount Kubernetes

Jika kredensial akun layanan Kubernetes disusupi, gunakan salah satu opsi berikut untuk mencabut kredensial:

  • Membuat ulang Pod: Token pemilik terikat dengan setiap UID Pod unik. Oleh karena itu, membuat ulang Pod akan membatalkan kredensial sebelumnya.
  • Membuat ulang akun layanan Kubernetes: Token pemilik terikat dengan UID objek ServiceAccount di Kubernetes API. Hapus ServiceAccount dan buat ServiceAccount baru dengan nama yang sama. Token sebelumnya menjadi tidak valid karena UID ServiceAccount baru berbeda.
  • Lakukan rotasi kredensial: Operasi ini mencabut semua kredensial akun layanan Kubernetes di cluster Anda. Rotasi tersebut juga akan mengubah sertifikat CA dan alamat IP cluster Anda. Untuk mengetahui detailnya, lihat rotasi kredensial.

Akun layanan IAM

Akun layanan IAM dikelola di level project menggunakan IAM API. Anda dapat menggunakan akun layanan ini untuk melakukan tindakan seperti memanggil Google Cloud API secara terprogram dan mengelola izin untuk aplikasi yang berjalan di produk Google Cloud.

Untuk mempelajari lebih lanjut, lihat ringkasan akun layanan IAM.

Agen layanan GKE

Agen layanan IAM adalah akun layanan IAM yang dikelola Google Cloud.

GKE menggunakan Agen Layanan Kubernetes Engine untuk mengelola siklus proses resource cluster atas nama Anda seperti node, disk, dan load balancer. Agen layanan ini memiliki domain container-engine-robot.iam.gserviceaccount.com dan diberi peran Agen Layanan Kubernetes Engine (roles/container.serviceAgent) pada project Anda saat GKE API diaktifkan.

ID agen layanan ini adalah sebagai berikut:

service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com

PROJECT_NUMBER adalah nomor project numerik Anda.

Jika menonaktifkan agen layanan GKE, Anda dapat memulihkannya dengan mengikuti petunjuk dalam Mengaktifkan akun layanan.

Jika menghapus izin agen layanan dalam project, Anda dapat memulihkannya dengan mengikuti petunjuk di Error 400/403: Izin edit tidak ada di akun.

Jika menghapus agen layanan GKE, Anda dapat membatalkan penghapusannya dengan mengikuti petunjuk di Membatalkan penghapusan akun layanan.

Akun layanan node GKE default

Secara default, node GKE menggunakan akun layanan default Compute Engine. Secara default, akun layanan ini diberi peran Editor (roles/editor) dan memiliki lebih banyak izin daripada yang diperlukan untuk node GKE. Pertimbangkan untuk menggunakan peran dengan izin minimum yang diperlukan untuk menjalankan node di cluster.

Jangan nonaktifkan akun layanan Compute Engine default kecuali Anda bermigrasi ke akun layanan yang dikelola pengguna.

Izin minimum

GKE memerlukan serangkaian izin IAM minimum untuk mengoperasikan cluster Anda. Untuk mengetahui petunjuk cara membuat akun layanan IAM dengan hak istimewa minimal, silakan melihat Menggunakan akun layanan Google dengan hak istimewa terendah.

Kapan harus menggunakan akun layanan tertentu

Jenis akun layanan yang Anda gunakan bergantung pada jenis identitas yang ingin diberikan untuk aplikasi Anda, seperti berikut:

  • Berikan identitas untuk Pod Anda yang akan digunakan di cluster: Gunakan ServiceAccount Kubernetes. Setiap namespace Kubernetes memiliki default ServiceAccount, tetapi sebaiknya Anda membuat ServiceAccounts dengan hak istimewa minimal minimal untuk setiap workload di setiap namespace.
  • Berikan identitas untuk Pod Anda agar dapat digunakan di luar cluster: Gunakan Workload Identity Federation for GKE. Dengan Workload Identity Federation for GKE, Anda dapat menentukan resource Kubernetes, seperti ServiceAccounts sebagai entity utama dalam kebijakan IAM. Misalnya, gunakan Workload Identity Federation for GKE saat memanggil Google Cloud API, seperti Secret Manager atau Spanner dari Pod Anda.
  • Memberikan identitas default untuk node Anda: Gunakan akun layanan IAM khusus dengan hak istimewa minimal saat Anda membuat cluster atau node GKE Anda. Jika Anda tidak menggunakan akun layanan IAM kustom, GKE akan menggunakan akun layanan default Compute Engine, yang memiliki izin luas dalam project Anda.

Langkah selanjutnya