Peniruan identitas akun layanan

Ketika akun utama terautentikasi, seperti pengguna atau akun layanan lain, melakukan autentikasi sebagai akun layanan untuk mendapatkan izin akun layanan, hal ini disebut meniru identitas akun layanan. Dengan meniru identitas akun layanan, akun utama yang diautentikasi dapat mengakses apa pun yang dapat diakses oleh akun layanan. Hanya akun utama terautentikasi dengan izin yang tepat yang dapat meniru identitas akun layanan.

Peniruan identitas berguna saat Anda ingin mengubah izin pengguna tanpa mengubah kebijakan Identity and Access Management (IAM) Anda. Contohnya, Anda dapat menggunakan peniruan identitas guna memberikan akses yang lebih tinggi kepada pengguna untuk sementara, atau menguji apakah sekumpulan izin tertentu cukup untuk suatu tugas. Anda juga dapat menggunakan peniruan identitas untuk mengembangkan aplikasi secara lokal yang hanya dapat dijalankan sebagai akun layanan, atau untuk mengautentikasi aplikasi yang berjalan di luar Google Cloud.

Peniruan identitas akun layanan Google Cloud mirip dengan metode API Layanan Token Keamanan Amazon Web Services (AWS), seperti AssumeRole.

Cara kerja peniruan identitas akun layanan

Peniruan identitas akun layanan selalu melibatkan dua identitas: akun utama yang diautentikasi dan akun layanan yang ditiru oleh akun utama. Untuk meniru identitas akun layanan, akun utama yang diautentikasi akan mendapatkan token untuk akun layanan tersebut, lalu menggunakan token tersebut untuk melakukan autentikasi sebagai akun layanan.

Ada beberapa cara untuk meniru identitas akun layanan:

  • Tetapkan flag --impersonate-service-account atau properti impersonate-service-account saat menjalankan perintah Google Cloud CLI. Saat Anda menjalankan perintah gcloud CLI dengan setelan ini, gcloud CLI akan membuat kredensial jangka pendek untuk akun layanan, lalu menjalankan perintah dengan kredensial tersebut.

    Anda juga dapat menggunakan flag --impersonate-service-account saat menyiapkan file Kredensial Default Aplikasi. Penyiapan ini memungkinkan library klien yang mendukung peniruan identitas agar otomatis meniru identitas akun layanan.

  • Buat kredensial jangka pendek menggunakan Service Account Credentials API, lalu gunakan kredensial tersebut untuk mengautentikasi permintaan API.

    Kredensial jangka pendek memiliki masa aktif terbatas dengan durasi beberapa jam atau kurang, serta tidak dapat otomatis diperbarui. Kredensial tersebut memiliki risiko minimal daripada kredensial jangka panjang, seperti kunci akun layanan.

  • Gunakan file konfigurasi kredensial untuk mengonfigurasi aplikasi eksternal agar meniru identitas akun layanan. Opsi ini hanya tersedia untuk aplikasi yang menggunakan workload identity federation.

    Saat menggunakan file konfigurasi kredensial untuk mengakses Google Cloud, aplikasi akan menggunakan kredensial khusus lingkungannya terlebih dahulu guna mendapatkan kredensial jangka pendek untuk akun layanan yang ditetapkan. Kemudian, aplikasi menggunakan kredensial jangka pendek untuk mengautentikasi ke Google Cloud.

Jika akun utama mengakses resource saat meniru identitas akun layanan, sebagian besar log audit akan menyertakan identitasnya dan identitas akun layanan yang ditirunya. Untuk informasi selengkapnya, lihat Menafsirkan log audit.

Saat menggunakan Google Cloud Console, Anda selalu melakukan autentikasi dengan kredensial pengguna; Anda tidak dapat meniru identitas akun layanan untuk mengakses resource di Konsol Google Cloud.

Autentikasi tanpa peniruan identitas

Ada beberapa cara bagi workload atau pengguna untuk melakukan autentikasi sebagai akun layanan tanpa meniru identitas akun layanan:

  • Workload menggunakan akun layanan yang ditambahkan untuk melakukan autentikasi ke Google API. Dalam hal ini, akun layanan yang ditambahkan bertindak sebagai identitas workload, dan merupakan satu-satunya identitas terautentikasi yang terlibat dalam permintaan.

    Untuk mempelajari cara mengautentikasi workload ke Google Cloud, lihat Identitas untuk workload.

  • Akun utama menggunakan kunci akun layanan untuk mengautentikasi sebagai akun layanan. Penggunaan kunci akun layanan untuk mengautentikasi sebagai akun layanan hanya melibatkan satu identitas terautentikasi: identitas akun layanan. Menggunakan kunci bukan merupakan peniruan identitas akun layanan karena hanya ada satu identitas yang terlibat.

Dalam kasus ini, log audit hanya mencatat identitas akun layanan. Log audit tidak mencatat identitas lain—misalnya, identitas pengguna yang mengeksekusi kode pada workload, atau identitas orang yang menggunakan kunci akun layanan untuk mengautentikasi. Akibatnya, menggunakan kunci akun layanan atau memberikan izin kepada developer untuk mengeksekusi kode pada resource dengan hak istimewa—misalnya, sesi SSH ke instance VM—dapat menimbulkan risiko eskalasi akses dan non-penyangkalan.

Izin yang diperlukan

Untuk meniru identitas akun layanan, Anda memerlukan izin iam.serviceAccounts.getAccessToken. Izin ini ada dalam peran seperti peran Service Account Token Creator (roles/iam.serviceAccountTokenCreator).

Untuk mengetahui informasi lebih lanjut tentang peran yang diperlukan untuk peniruan identitas, lihat Peran untuk autentikasi akun layanan.

Kasus penggunaan peniruan identitas akun layanan

Peniruan identitas akun layanan berguna saat Anda perlu melakukan tugas seperti berikut:

  • Memberikan akses sementara yang ditingkatkan kepada pengguna
  • Menguji apakah sekumpulan izin tertentu memadai untuk tugas
  • Mengembangkan aplikasi yang hanya dapat dijalankan sebagai akun layanan secara lokal
  • Mengautentikasi aplikasi eksternal

Berikan akses yang ditingkatkan sementara

Dalam beberapa kasus, Anda mungkin ingin mengizinkan pengguna mengakses resource tertentu untuk sementara. Misalnya, Anda mungkin ingin memberikan akses tambahan kepada seseorang agar dia dapat menyelesaikan insiden, atau mengizinkan seseorang mengakses data sensitif untuk waktu yang terbatas setelah dia memasukkan justifikasi ke dalam log.

Peniruan identitas akun layanan adalah salah satu cara agar Anda dapat memberi pengguna akses yang ditingkatkan sementara ini. Agar dapat menggunakan akun layanan untuk akses yang ditingkatkan sementara, pertama-tama Anda harus memberinya peran IAM yang ingin Anda berikan sementara kepada pengguna. Kemudian, Anda mengizinkan pengguna meniru identitas akun layanan tersebut, baik dengan memberi mereka izin untuk meniru identitas akun layanan maupun dengan menggunakan broker token untuk mengeluarkan kredensial jangka pendek untuk akun layanan tersebut.

Untuk mempelajari lebih lanjut metode untuk memberi pengguna akses yang ditingkatkan sementara, lihat Ringkasan akses yang ditingkatkan sementara.

Menguji izin

Dalam beberapa kasus, sebaiknya periksa apakah sekumpulan izin tertentu cukup untuk suatu tugas. Misalnya, Anda mungkin ingin mengonfirmasi bahwa akun layanan masih dapat menjalankan aplikasi jika Anda menghapus izin berlebih tertentu. Atau, Anda mungkin membantu pengguna memecahkan masalah dan ingin memastikan bahwa mereka dapat menjalankan perintah tertentu dengan peran IAM-nya saat ini.

Anda dapat menggunakan peniruan identitas akun layanan untuk menguji sekumpulan izin tertentu. Pertama, buat akun layanan dan berikan satu atau beberapa peran IAM dengan izin yang ingin Anda uji. Kemudian, tiru identitas akun layanan dan coba lakukan tugas tersebut. Dengan metode ini, Anda dapat menguji izin tanpa perlu membuat akun pengguna uji coba atau mengubah izin IAM Anda sendiri.

Untuk mempelajari cara meniru identitas akun layanan, lihat Menggunakan peniruan akun layanan.

Mengembangkan aplikasi secara lokal

Saat mengembangkan aplikasi secara lokal, Anda biasanya dapat melakukan autentikasi menggunakan kredensial pengguna. Namun, dalam beberapa situasi, hal tersebut mungkin tidak memungkinkan—misalnya, jika Anda ingin melakukan autentikasi ke layanan yang memerlukan token dengan audiens kustom, yang biasanya tidak dapat dikonfigurasi pengguna. Dalam hal ini, Anda perlu melakukan autentikasi sebagai akun layanan, bukan mengautentikasi dengan kredensial pengguna.

Untuk situasi ini, sebaiknya gunakan peniruan identitas akun layanan. Penggunaan peniruan identitas akun layanan memungkinkan Anda menghindari penggunaan kunci akun layanan, yang menimbulkan risiko keamanan tambahan.

Untuk mempelajari cara meniru identitas akun layanan guna mengembangkan aplikasi, lihat Peniruan akun layanan.

Mengautentikasi aplikasi eksternal

Untuk mengakses resource Google Cloud, aplikasi yang berjalan di luar Google Cloud perlu melakukan autentikasi ke Google Cloud. Salah satu cara untuk mengautentikasi aplikasi ini adalah dengan menggunakan peniruan identitas akun layanan.

Agar aplikasi Anda dapat meniru akun layanan, pertama-tama Anda harus menyiapkan workload identity federation, yang memberikan identitas terautentikasi untuk aplikasi Anda. Selanjutnya, Anda dapat menggunakan file konfigurasi kredensial untuk mengonfigurasi aplikasi agar meniru identitas akun layanan.

Meskipun Anda dapat menggunakan kunci akun layanan untuk mengautentikasi aplikasi eksternal, kami sangat menyarankan untuk tidak menggunakannya. Kunci akun layanan menimbulkan risiko keamanan tambahan, dan harus dihindari jika memungkinkan.

Langkah selanjutnya