Halaman ini menjelaskan apa yang dimaksud dengan akun layanan dan menjelaskan pertimbangan penting untuk mengelola akun layanan Anda pada setiap tahap siklus prosesnya.
Apa yang dimaksud dengan akun layanan?
Akun layanan adalah jenis akun khusus yang biasanya digunakan oleh aplikasi atau workload komputasi, seperti instance Compute Engine, bukan oleh pengguna. Akun layanan diidentifikasi oleh alamat emailnya, yang bersifat unik untuk akun tersebut.
Aplikasi menggunakan akun layanan untuk melakukan panggilan API yang diotorisasi dengan mengautentikasi sebagai akun layanan itu sendiri, atau sebagai pengguna Google Workspace atau Cloud Identity melalui delegasi tingkat domain. Saat aplikasi melakukan autentikasi sebagai akun layanan, aplikasi memiliki akses ke semua resource yang boleh diakses oleh akun layanan.
Cara paling umum untuk mengizinkan aplikasi melakukan autentikasi sebagai akun layanan adalah dengan memasang akun layanan ke resource yang menjalankan aplikasi. Contohnya, Anda dapat memasang akun layanan ke instance Compute Engine sehingga aplikasi yang berjalan pada instance tersebut dapat melakukan autentikasi sebagai akun layanan. Kemudian, Anda dapat memberikan peran IAM akun layanan agar akun layanan—dan, terlebih lagi, aplikasi pada instance—mengakses resource Google Cloud.
Ada cara lain untuk mengizinkan aplikasi melakukan autentikasi sebagai akun layanan selain memasang akun layanan. Misalnya, Anda dapat menyiapkan Workload Identity Federation agar workload eksternal dapat diautentikasi sebagai akun layanan, atau membuat kunci akun layanan dan menggunakannya di lingkungan apa pun untuk mendapatkan token akses OAuth 2.0.
Untuk mempelajari autentikasi akun layanan untuk aplikasi lebih lanjut, lihat Ringkasan identitas untuk workload.
Akun utama, seperti pengguna dan akun layanan lainnya, juga dapat melakukan autentikasi sebagai akun layanan. Untuk informasi selengkapnya, lihat Peniruan identitas akun layanan pada halaman ini.
Jenis akun layanan
Di Google Cloud, ada beberapa jenis akun layanan yang berbeda:
Akun layanan yang dikelola pengguna: Akun layanan yang Anda buat dan kelola. Akun layanan ini sering digunakan sebagai identitas untuk workload.
Akun layanan default: Akun layanan yang dikelola pengguna yang dibuat secara otomatis saat Anda mengaktifkan layanan Google Cloud tertentu. Anda bertanggung jawab untuk mengelola akun layanan ini.
Agen layanan: Akun layanan yang dibuat dan dikelola oleh Google Cloud, dan yang mengizinkan layanan mengakses resource atas nama Anda.
Untuk mempelajari berbagai jenis akun layanan lebih lanjut, lihat Jenis akun layanan.
Kredensial akun layanan
Aplikasi dan akun utama melakukan autentikasi sebagai akun layanan dengan melakukan salah satu hal berikut:
- Memperoleh kredensial dengan masa berlaku singkat. Dalam banyak kasus, seperti akun layanan terpasang
dan perintah menggunakan flag
--impersonate-service-account
gcloud CLI, kredensial ini diperoleh secara otomatis—Anda tidak perlu membuat atau mengelolanya sendiri. - Menggunakan kunci akun layanan untuk memasukkan Token Web JSON (JWT) dan menukarnya dengan token akses. Anda harus memilih alternatif yang lebih aman untuk kunci akun layanan, karena kunci akun layanan merupakan risiko keamanan jika tidak dikelola dengan benar, jika memungkinkan.
Untuk mempelajari autentikasi akun layanan lebih lanjut, lihat Kredensial akun layanan.
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.
Untuk mempelajari peniruan identitas akun layanan lebih lanjut, lihat Peniruan identitas akun layanan.
Akun layanan dan domain Google Workspace
Tidak seperti akun pengguna, akun layanan tidak termasuk dalam domain Google Workspace Anda. Jika Anda membagikan aset Google Workspace, seperti dokumen atau acara, kepada seluruh domain Google Workspace Anda, aset tersebut tidak akan dibagikan dengan akun layanan. Demikian pula, aset Google Workspace yang dibuat oleh akun layanan tidak dibuat di domain Google Workspace Anda. Akibatnya, admin Google Workspace dan Cloud Identity Anda tidak dapat memiliki atau mengelola aset tersebut.
Izin akun layanan
Akun layanan adalah akun utama. Hal ini berarti Anda dapat memberi
akun layanan akses ke resource Google Cloud. Contohnya, Anda dapat
memberikan peran Admin Compute (roles/compute.admin
) kepada
akun layanan pada project. Selanjutnya, akun layanan tersebut akan dapat mengelola resource Compute Engine
dalam project tersebut.
Namun, akun layanan juga merupakan resource. Artinya, Anda
dapat memberi akun utama lain izin untuk mengakses akun layanan. Misalnya,
Anda dapat memberikan peran Pengguna Akun Layanan
(roles/iam.serviceAccountUser
) kepada pengguna di akun layanan untuk mengizinkan pengguna melampirkan akun layanan tersebut ke resource. Atau, Anda dapat memberikan peran Admin Akun Layanan (roles/iam.serviceAccountAdmin
) kepada pengguna untuk mengizinkan pengguna melakukan tindakan seperti melihat, mengedit, menonaktifkan, dan menghapus akun layanan.
Bagian berikut membahas cara mengelola akun layanan sebagai akun utama dan sebagai resource.
Akun layanan sebagai akun utama
Dikarenakan akun layanan adalah akun utama, Anda dapat mengizinkan akun layanan mengakses
resource dalam project Anda dengan memberinya peran, seperti yang Anda lakukan untuk
akun utama lainnya. Contohnya, jika Anda ingin mengizinkan akun layanan aplikasi Anda
mengakses objek di bucket Cloud Storage, Anda dapat memberi
akun layanan peran Storage Object Viewer (roles/storage.objectViewer
) pada
bucket.
Seperti semua jenis akun utama, Anda hanya boleh memberi akun layanan kumpulan izin minimum yang diperlukan untuk mencapai sasarannya.
Seperti akun utama lainnya, Anda dapat menambahkan akun layanan ke grup, lalu memberikan peran ke grup tersebut. Namun, menambahkan akun layanan ke grup bukan praktik terbaik. Akun layanan digunakan oleh aplikasi, dan setiap aplikasi kemungkinan memiliki persyaratan aksesnya sendiri.
Untuk mempelajari cara memberikan peran ke akun utama, termasuk akun layanan, lihat Mengelola akses ke project, folder, dan organisasi.
Akun layanan sebagai resource
Akun layanan juga merupakan resource yang dapat memiliki kebijakan izinnya sendiri. Dengan demikian,
Anda dapat mengizinkan akun utama lain mengakses akun layanan dengan memberinya
peran pada akun layanan, atau pada salah satu resource induk
akun layanan. Misalnya, untuk mengizinkan pengguna meniru identitas akun layanan, Anda dapat memberi pengguna peran Service Account Token Creator
(roles/iam.serviceAccountTokenCreator
) pada akun layanan tersebut.
Saat memberikan peran yang mengizinkan pengguna meniru identitas akun layanan, perlu diingat bahwa pengguna dapat mengakses semua resource yang dapat diakses oleh akun layanan. Hati-hati saat membiarkan pengguna meniru identitas akun layanan dengan hak istimewa tinggi, seperti layanan akun default Compute Engine dan App Engine.
Untuk mengetahui informasi selengkapnya tentang peran yang dapat Anda berikan kepada akun utama pada akun layanan, lihat Izin akun layanan.
Untuk mempelajari cara memberikan peran kepada akun utama, lihat Mengelola akses ke akun layanan.
Siklus proses akun layanan
Saat mengelola project, Anda mungkin akan membuat, mengelola, dan menghapus berbagai akun layanan. Bagian ini menjelaskan pertimbangan utama untuk mengelola akun layanan Anda di berbagai tahap siklus prosesnya.
Tempat membuat akun layanan
Setiap akun layanan berada dalam project. Setelah Anda membuat akun layanan, Anda tidak dapat memindahkannya ke project lain.
Ada beberapa cara untuk mengatur akun layanan Anda ke dalam project:
Membuat akun layanan dan resource dalam project yang sama.
Pendekatan ini memudahkan Anda untuk memulai akun layanan. Namun, mungkin sulit untuk melacak akun layanan Anda jika akun tersebut tersebar di banyak project.
Memusatkan akun layanan dalam project terpisah.
Pendekatan ini menempatkan semua akun layanan untuk organisasi Anda dalam sejumlah kecil project, yang dapat membuat akun layanan lebih mudah dikelola. Namun, hal ini memerlukan penyiapan tambahan jika Anda memasang akun layanan ke resource dalam project lain, yang mengizinkan resource tersebut menggunakan akun layanan sebagai identitasnya.
Jika akun layanan berada dalam satu project, dan akun layanan tersebut mengakses resource dalam project lain, biasanya Anda harus mengaktifkan API untuk resource tersebut di kedua project. Contohnya, jika Anda memiliki akun layanan di project
my-service-accounts
dan instance Cloud SQL dalam projectmy-application
, Anda harus mengaktifkan Cloud SQL API dimy-service-accounts
dan jugamy-application
.Secara default, Anda dapat membuat hingga 100 akun layanan dalam project. Jika Anda perlu membuat akun layanan tambahan, minta penambahan kuota.
Untuk mempelajari cara membuat akun layanan, lihat Membuat akun layanan.
Mencegah pembuatan akun layanan
Untuk mengontrol tempat akun layanan dibuat dengan lebih baik, Anda mungkin ingin mencegah pembuatan akun layanan di beberapa project dalam organisasi Anda.
Anda dapat mencegah pembuatan akun layanan dengan menerapkan
batasan kebijakan organisasi
constraints/iam.disableServiceAccountCreation
di organisasi,
project, atau folder.
Sebelum Anda menerapkan batasan ini, pertimbangkan batasan berikut:
Jika Anda menerapkan batasan ini pada project, atau di semua project dalam organisasi, maka beberapa layanan Google Cloud tidak dapat membuat akun layanan default. Akibatnya, jika project menjalankan workload yang perlu melakukan autentikasi sebagai akun layanan, project tersebut mungkin tidak berisi akun layanan yang dapat digunakan workload tersebut.
Untuk mengatasi masalah ini, Anda dapat mengaktifkan peniruan identitas akun layanan di seluruh project. Saat mengaktifkan fitur ini, Anda dapat membuat akun layanan dalam project terpusat, lalu memasang akun layanan ke resource dalam project lain. Workload yang dijalankan pada resource tersebut dapat menggunakan akun layanan yang terpasang untuk mengautentikasi, sehingga akun layanan default tidak diperlukan.
Beberapa fitur, seperti Workload Identity Federation, memerlukan Anda untuk membuat akun layanan.
Jika Anda tidak menggunakan Workload Identity Federation, pertimbangkan untuk menggunakan batasan kebijakan organisasi untuk memblokir penggabungan dari semua penyedia identitas.
Memantau akun layanan
Seiring waktu, saat Anda membuat semakin banyak akun layanan, Anda mungkin tidak dapat melacak akun layanan mana yang digunakan untuk tujuan apa.
Nama tampilan akun layanan adalah cara yang baik untuk mengambil informasi
tambahan tentang akun layanan, seperti tujuan akun
layanan atau narahubung untuk akun tersebut. Untuk akun layanan baru, Anda dapat
mengisi nama tampilan saat membuat akun layanan. Untuk akun
layanan yang ada, gunakan metode serviceAccounts.update()
untuk
mengubah nama tampilan.
Menggunakan akun layanan dengan Compute Engine
Instance Compute Engine perlu dijalankan sebagai akun layanan agar dapat mengakses resource Google Cloud lainnya. Untuk membantu mengamankan instance Compute Engine Anda, pertimbangkan hal berikut:
Anda dapat membuat instance dalam project yang sama dengan akun layanan yang berbeda. Untuk mengubah akun layanan instance setelah dibuat, gunakan metode
instances.setServiceAccount
.Untuk menyiapkan otorisasi untuk akun layanan terpasang, Anda perlu mengonfigurasi cakupan akses selain mengonfigurasi peran IAM.
Karena instance bergantung pada akun layanannya untuk memiliki akses ke resource Google Cloud, jangan menghapus akun layanan saat instance masih digunakan oleh instance yang sedang berjalan.
Untuk mempelajari lebih lanjut cara menggunakan akun layanan dengan Compute Engine, lihat Akun layanan dalam dokumentasi Compute Engine.
Mengidentifikasi akun layanan yang tidak digunakan
Setelah beberapa waktu, Anda mungkin memiliki akun layanan di project Anda yang tidak Anda gunakan lagi.
Akun layanan yang tidak digunakan akan menimbulkan risiko keamanan yang tidak perlu, jadi sebaiknya nonaktifkan akun layanan yang tidak digunakan, lalu hapus akun layanan jika Anda yakin tidak lagi membutuhkannya. Anda dapat menggunakan metode berikut untuk mengidentifikasi akun layanan yang tidak digunakan:
- Insight akun layanan memberi tahu Anda akun layanan mana di project Anda yang belum diautentikasi dalam 90 hari terakhir.
- Activity Analyzer memungkinkan Anda memeriksa kapan kunci atau akun layanan terakhir digunakan.
Anda juga dapat menggunakan metrik penggunaan akun layanan untuk melacak penggunaan akun layanan dan kunci secara umum.
Jika Anda adalah pelanggan Security Command Center Premium, Anda dapat menggunakan Event Threat Detection untuk mendapatkan notifikasi saat akun layanan yang tidak aktif memicu tindakan. Akun layanan yang tidak aktif adalah akun layanan yang tidak aktif selama lebih dari 180 hari. Setelah digunakan, akun layanan tidak lagi tidak aktif.
Menghapus beberapa akun layanan
Sebelum menghapus akun layanan, nonaktifkan akun layanan untuk memastikan bahwa tindakan tersebut tidak diperlukan. Akun layanan yang dinonaktifkan dapat diaktifkan kembali jika masih digunakan.
Setelah Anda mengonfirmasi bahwa akun layanan tidak diperlukan, Anda dapat menghapus akun layanan.
Membuat ulang akun layanan yang dihapus
Anda dapat menghapus akun layanan, lalu membuat akun layanan baru dengan nama yang sama.
Saat Anda menghapus akun layanan, binding perannya tidak segera
dihapus. Sebagai gantinya, binding peran mencantumkan akun layanan dengan awalan
deleted:
. Sebagai contoh, lihat
Kebijakan dengan akun utama yang dihapus.
Jika Anda membuat akun layanan baru dengan nama yang sama seperti akun layanan yang baru dihapus, binding lama mungkin masih ada; namun, aturan tersebut tidak akan berlaku untuk akun layanan baru meskipun kedua akun memiliki alamat email yang sama. Perilaku ini terjadi karena akun layanan diberi ID unik dalam Identity and Access Management (IAM) saat pembuatan. Secara internal, semua binding peran diberikan menggunakan ID ini, bukan alamat email akun layanan. Oleh karena itu, binding peran apa pun yang ada untuk akun layanan yang dihapus tidak berlaku untuk akun layanan baru yang menggunakan alamat email yang sama.
Demikian pula, jika Anda memasang akun layanan ke resource, lalu menghapus akun layanan dan membuat akun layanan baru dengan nama yang sama, akun layanan yang baru tidak akan dipasang ke resource.
Untuk mencegah perilaku yang tidak terduga ini, pertimbangkan untuk menggunakan nama baru yang unik untuk setiap akun layanan. Selain itu, jika Anda tidak sengaja menghapus akun layanan, Anda dapat mencoba membatalkan penghapusan akun layanan, bukan membuat akun layanan baru.
Jika Anda tidak dapat membatalkan penghapusan akun layanan asli dan perlu membuat akun layanan baru dengan nama dan peran yang sama, Anda harus memberikan peran tersebut ke akun layanan yang baru. Untuk mengetahui detailnya, lihat Kebijakan dengan akun utama yang dihapus.
Jika Anda juga ingin memasang akun layanan baru ke resource yang sama dengan akun layanan asli, lakukan salah satu langkah berikut:
- Untuk instance Compute Engine, Anda dapat mengubah akun layanan yang terpasang pada instance untuk mengganti akun layanan asli dengan akun layanan baru.
- Untuk semua resource lainnya, Anda harus menghapus resource yang ada, lalu membuat resource baru dengan jenis yang sama dan memasang akun layanan baru.
Langkah selanjutnya
- Cari tahu cara membuat akun layanan.
- Dapatkan praktik terbaik untuk menggunakan akun layanan.
- Lihat praktik terbaik untuk mengelola kunci akun layanan.
Coba sendiri
Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
Mulai secara gratis