Akun layanan


Halaman ini menjelaskan cara kerja akun layanan dengan Compute Engine.

Untuk mengetahui informasi langkah demi langkah terkait cara menambahkan akun layanan ke instance virtual machine (VM), pelajari salah satu dokumen berikut:

Untuk mempelajari praktik terbaik dalam membuat dan mengelola akun layanan, baca dokumentasi Praktik terbaik untuk menggunakan akun layanan.

Coba sendiri

Jika Anda baru pertama kali menggunakan Google Cloud, buat akun untuk mengevaluasi performa Compute Engine dalam skenario dunia nyata. Pelanggan baru mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.

Coba Compute Engine gratis

Apa yang dimaksud dengan akun layanan?

Akun layanan adalah jenis akun khusus yang digunakan oleh aplikasi atau workload komputasi, bukan pengguna. Akun layanan dikelola oleh Identity and Access Management (IAM).

Perhatikan hal-hal berikut saat menggunakan akun layanan dengan VM Anda:

  • Anda dapat menambahkan akun layanan yang sama ke beberapa VM, tetapi satu VM hanya dapat memiliki satu akun layanan yang ditambahkan kepadanya.
  • Jika Anda menambahkan akun layanan yang sama ke beberapa VM, setiap perubahan berikutnya yang Anda lakukan pada akun layanan akan memengaruhi semua VM yang menggunakan akun layanan tersebut. Hal ini mencakup perubahan apa pun yang Anda buat pada peran IAM yang diberikan ke akun layanan. Misalnya, jika Anda menghapus peran, semua VM yang menggunakan akun layanan akan kehilangan izin yang diberikan oleh peran tersebut.

Cara Compute Engine menggunakan akun layanan

Compute Engine menggunakan dua jenis akun layanan:

Akun layanan yang dikelola pengguna dapat dipasang ke instance Compute Engine untuk memberikan kredensial ke aplikasi yang berjalan pada instance tersebut. Kredensial ini digunakan oleh aplikasi untuk melakukan autentikasi ke Google Cloud API dan otorisasi untuk mengakses resource Google Cloud. Hanya akun layanan yang dikelola pengguna yang dapat dipasangkan ke instance, dan sebuah instance hanya dapat memiliki satu akun layanan yang ditambahkan. Anda dapat mengubah akun layanan yang ditambahkan ke instance pada waktu pembuatan atau nanti.

Agen layanan digunakan oleh instance untuk mengakses proses internal atas nama Anda.

Selain itu, Anda dapat membuat aturan firewall yang mengizinkan atau menolak traffic ke dan dari instance berdasarkan akun layanan yang Anda kaitkan dengan setiap instance.

Cara otorisasi ditentukan

Otorisasi yang diberikan ke aplikasi yang dihosting di instance Compute Engine dibatasi oleh dua konfigurasi terpisah: peran yang diberikan ke akun layanan yang ditambahkan dan cakupan akses yang Anda tetapkan pada instance. Kedua konfigurasi ini harus mengizinkan akses sebelum aplikasi yang berjalan pada instance dapat mengakses resource.

Misalkan Anda memiliki aplikasi yang membaca dan menulis file di Cloud Storage, aplikasi tersebut harus melakukan autentikasi ke Cloud Storage API terlebih dahulu. Anda dapat membuat instance dengan cakupan cloud-platform dan menambahkan akun layanan ke instance tersebut. Kemudian, Anda dapat memberikan peran Identity and Access Management (IAM) ke akun layanan untuk memberi aplikasi Anda akses ke resource yang sesuai. Aplikasi Anda menggunakan kredensial akun layanan untuk mengautentikasi ke Cloud Storage API tanpa menyematkan kunci rahasia atau kredensial pengguna apa pun di instance, image, atau kode aplikasi Anda. Aplikasi Anda juga menggunakan otorisasi yang diberikan oleh peran IAM pada akun layanan untuk mengakses resource. Untuk mengetahui informasi selengkapnya tentang otorisasi, lihat Otorisasi di halaman ini.

Akun layanan yang dikelola pengguna

Akun layanan yang dikelola pengguna mencakup akun layanan baru yang Anda buat secara eksplisit dan akun layanan default Compute Engine.

Akun layanan baru

Anda dapat membuat dan mengelola akun layanan Anda sendiri menggunakan IAM. Setelah membuat akun, Anda memberikan peran IAM akun dan menyiapkan instance untuk dijalankan sebagai akun layanan. Aplikasi yang berjalan pada instance dengan akun layanan yang ditambahkan dapat menggunakan kredensial akun untuk membuat permintaan ke Google API lainnya.

Untuk membuat dan menyiapkan akun layanan baru, lihat Membuat VM yang menggunakan akun layanan yang dikelola pengguna.

Akun layanan default Compute Engine

Project baru yang telah mengaktifkan Compute Engine API memiliki akun layanan default Compute Engine, yang memiliki email berikut:

PROJECT_NUMBER-compute@developer.gserviceaccount.com

Akun layanan default Compute Engine memiliki atribut berikut:

  • Dibuat secara otomatis, dengan nama dan alamat email yang dibuat secara otomatis, dan ditambahkan ke project saat Anda mengaktifkan Compute Engine API. Anda memiliki kontrol penuh atas akun tersebut.
  • Dipasang secara default ke semua VM yang Anda buat dengan menggunakan Google Cloud CLI atau Konsol Google Cloud. Anda dapat mengganti perilaku ini dengan menentukan akun layanan yang berbeda ketika membuat VM, atau dengan secara eksplisit menentukan bahwa tidak ada akun layanan yang ditambahkan ke VM.
  • Bergantung pada konfigurasi kebijakan organisasi Anda, akun layanan default mungkin secara otomatis diberi peran Editor di project Anda. Sebaiknya Anda menonaktifkan pemberian peran otomatis dengan menerapkan batasan kebijakan organisasi iam.automaticIamGrantsForDefaultServiceAccounts. Jika Anda membuat organisasi setelah 3 Mei 2024, batasan ini akan diterapkan secara default.

    Jika Anda menonaktifkan pemberian peran otomatis, Anda harus menentukan peran mana yang akan diberikan ke akun layanan default, lalu memberikan peran tersebut secara manual.

    Jika akun layanan default sudah memiliki peran Editor, sebaiknya ganti peran Editor dengan peran yang kurang permisif.Untuk mengubah peran akun layanan dengan aman, gunakan Policy Simulator untuk melihat dampak perubahan, lalu berikan dan cabut peran yang sesuai.

Anda dapat menonaktifkan atau menghapus akun layanan ini dari project Anda. Namun, tindakan ini dapat menyebabkan kegagalan aplikasi yang bergantung pada kredensial akun layanan. Jika tidak sengaja menghapus akun layanan default Compute Engine, Anda dapat mencoba memulihkan akun tersebut dalam waktu 30 hari. Untuk mengetahui informasi selengkapnya, lihat Menghapus dan membatalkan penghapusan akun layanan.

Jika akun layanan default Compute Engine dihapus lebih dari 30 hari yang lalu, Anda dapat mencoba memulihkan akun layanan tersebut dengan mengikuti proses di Memecahkan masalah akun layanan default.

Agen layanan

Agen layanan dibuat dan dikelola oleh Google Cloud dan ditetapkan ke project Anda secara otomatis. Akun ini mewakili berbagai layanan Google Cloud, dan setiap akun biasanya memiliki tingkat akses tertentu ke resource Google Cloud Anda.

Anda tidak dapat memasang agen layanan ke instance Compute Engine.

Agent Layanan Google API

Selain akun layanan default, semua project yang diaktifkan dengan Compute Engine dilengkapi dengan Agen Layanan Google API, yang dapat diidentifikasi menggunakan email:

PROJECT_NUMBER@cloudservices.gserviceaccount.com

Agen layanan ini dirancang khusus untuk menjalankan proses internal Google atas nama Anda. Agen layanan ini dimiliki oleh Google dan tidak tercantum di bagian Service Accounts pada Konsol Google Cloud. Secara default, agen layanan ini otomatis diberi peran editor project pada project dan tercantum di bagian IAM di Konsol Google Cloud. Agen layanan ini dihapus hanya jika project dihapus. Namun, Anda dapat mengubah peran yang diberikan ke akun ini, termasuk mencabut semua akses ke project Anda.

Resource tertentu bergantung pada izin editor default yang diberikan ke agen layanan ini. Misalnya, grup instance terkelola dan penskalaan otomatis menggunakan kredensial agen layanan ini untuk membuat, menghapus, dan mengelola instance. Jika Anda mencabut izin ke agen layanan ini, atau mengubah izin sedemikian rupa sehingga tidak memberikan izin untuk membuat instance, hal ini akan menyebabkan grup instance terkelola dan penskalaan otomatis berhenti berfungsi.

Karena alasan ini, Anda tidak boleh mengubah peran agen layanan ini kecuali jika rekomendasi peran secara eksplisit menyarankan Anda untuk mengubahnya.

Agen Layanan Compute Engine

Semua project yang telah mengaktifkan Compute Engine API memiliki Agen Layanan Compute Engine, yang memiliki email berikut:

service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com

Agen layanan ini dirancang khusus untuk Compute Engine guna menjalankan tugas layanannya pada project Anda. Akun ini bergantung pada Kebijakan IAM Agen Layanan yang diberikan pada Project Google Cloud Anda. Akun ini juga merupakan agen layanan yang digunakan Compute Engine untuk mengakses akun layanan yang dikelola pengguna pada instance VM. Google memiliki akun ini, tetapi akun ini khusus untuk project Anda. Agen layanan ini disembunyikan dari halaman IAM di konsol, kecuali jika Anda memilih Sertakan pemberian peran yang disediakan Google. Secara default, agen layanan ini otomatis diberi peran compute.serviceAgent di project Anda.

Agen layanan ini hanya akan dihapus jika Anda menghapus project Anda. Anda dapat mengubah peran yang diberikan ke agen layanan ini dan mencabut semua akses ke project Anda dari agen ini. Mencabut atau mengubah izin untuk agen layanan ini akan mencegah Compute Engine mengakses identitas akun layanan di VM Anda, dan dapat menyebabkan pemadaman software yang berjalan di dalam VM Anda.

Karena alasan ini, sebaiknya hindari modifikasi peran untuk agen layanan ini sebisa mungkin.

Menambahkan akun layanan ke instance

Agar tidak memberikan izin berlebih pada aplikasi, sebaiknya Anda membuat akun layanan yang dikelola pengguna, memberikannya hanya peran yang diperlukan aplikasi agar dapat berfungsi dengan benar, dan menambahkannya ke instance Compute Engine Anda. Selanjutnya, kode Anda dapat menggunakan Kredensial Default Aplikasi untuk melakukan autentikasi dengan kredensial yang diberikan oleh akun layanan.

Anda dapat memasang akun layanan ke instance Compute Engine saat membuat instance atau nanti. Hanya satu akun layanan yang dapat ditambahkan ke satu instance pada satu waktu; jika Anda menambahkan akun layanan ke instance yang sudah ditambahkan akun layanan, akun layanan sebelumnya tidak akan lagi digunakan oleh instance tersebut.

Saat menambahkan akun layanan ke instance Compute Engine, Anda juga harus memastikan bahwa cakupan yang ditetapkan pada instance sudah benar. Jika tidak, aplikasi Anda mungkin tidak dapat mengakses semua API yang diperlukan. Untuk informasi selengkapnya, lihat Cakupan akses di halaman ini.

Untuk mengetahui informasi langkah demi langkah tentang cara menambahkan akun layanan ke instance Compute Engine, pelajari salah satu dokumen berikut:

Otorisasi

Saat menyiapkan instance untuk dijalankan sebagai akun layanan, Anda menentukan tingkat akses yang dimiliki akun layanan dengan peran IAM yang Anda berikan ke akun layanan. Jika akun layanan tidak memiliki peran IAM, tidak ada resource yang dapat diakses menggunakan akun layanan pada instance tersebut.

Selain itu, cakupan akses instance menentukan cakupan OAuth default untuk permintaan yang dibuat melalui gcloud CLI dan library klien pada instance. Akibatnya, cakupan akses berpotensi membatasi akses lebih lanjut ke metode API saat mengautentikasi melalui OAuth. Namun, mereka tidak meluas ke protokol autentikasi lain seperti gRPC.

Sebaiknya tetapkan cakupan akses cloud-platform penuh pada instance, lalu mengontrol akses akun layanan menggunakan peran IAM.

Pada dasarnya:

  • IAM membatasi akses ke API berdasarkan peran IAM yang diberikan ke akun layanan.
  • Cakupan akses berpotensi membatasi akses lebih jauh ke metode API.

Cakupan akses dan peran IAM dijelaskan secara mendetail di bagian berikut.

Peran IAM

Anda harus memberikan peran IAM yang sesuai ke akun layanan untuk mengizinkan akun layanan tersebut mengakses metode API yang relevan.

Misalnya, Anda dapat memberikan peran IAM kepada akun layanan untuk mengelola objek Cloud Storage, atau mengelola bucket Cloud Storage, atau keduanya, yang membatasi akun pada izin yang diberikan oleh peran tersebut.

Saat Anda memberikan peran IAM ke akun layanan, aplikasi apa pun yang berjalan pada instance yang menambahkan akun layanan tersebut akan memiliki otorisasi yang diberikan oleh peran tersebut.

Beberapa hal yang perlu diingat:

  • Beberapa peran IAM masih dalam versi Beta.

    Jika tidak ada peran yang telah ditetapkan untuk tingkat akses yang diinginkan, Anda dapat membuat dan memberikan peran khusus.

  • Anda harus menetapkan cakupan akses pada instance untuk mengizinkan akses.

    Meskipun tingkat akses akun layanan ditentukan oleh peran yang diberikan ke akun layanan, cakupan akses instance menentukan cakupan OAuth default untuk permintaan yang dibuat melalui gcloud CLI dan library klien pada instance. Akibatnya, cakupan akses berpotensi membatasi akses lebih lanjut ke metode API saat mengautentikasi melalui OAuth.

Access scopes

Cakupan akses adalah metode lama dalam menentukan otorisasi untuk instance VM Anda. Library ini menentukan cakupan OAuth default yang digunakan dalam permintaan dari gcloud CLI atau library klien. Cakupan akses tidak berlaku untuk panggilan yang dilakukan menggunakan gRPC.

Cakupan akses berlaku per VM dan hanya dipertahankan selama masa pakai VM. Anda dapat menetapkan cakupan akses saat membuat VM atau memperbarui cakupan akses di VM yang ada.

Umumnya, dokumentasi untuk setiap metode API mencantumkan cakupan yang diperlukan untuk metode tersebut. Misalnya, metode instances.insert menyediakan daftar cakupan yang valid di bagian otorisasi.

Cakupan akses tidak akan berpengaruh jika Anda belum mengaktifkan API terkait pada project yang memiliki akun layanan tersebut. Misalnya, memberikan cakupan akses untuk Cloud Storage pada instance mesin virtual memungkinkan instance memanggil Cloud Storage API hanya jika Anda telah mengaktifkan Cloud Storage API pada project.

Cakupan default

Saat Anda membuat instance Compute Engine baru, instance tersebut akan otomatis dikonfigurasi dengan cakupan akses berikut:

  • Akses hanya baca ke Cloud Storage:
    https://www.googleapis.com/auth/devstorage.read_only
  • Akses tulis untuk menulis log Compute Engine:
    https://www.googleapis.com/auth/logging.write
  • Akses tulis untuk memublikasikan data metrik ke project Google Cloud Anda:
    https://www.googleapis.com/auth/monitoring.write
  • Akses hanya baca ke fitur Pengelolaan Layanan yang diperlukan untuk Google Cloud Endpoint(Alfa):
    https://www.googleapis.com/auth/service.management.readonly
  • Akses baca atau tulis ke fitur Kontrol Layanan yang diperlukan untuk Google Cloud Endpoint(Alfa):
    https://www.googleapis.com/auth/servicecontrol
  • Akses tulis ke Cloud Trace memungkinkan aplikasi yang berjalan di VM untuk menulis data rekaman aktivitas ke sebuah project.
    https://www.googleapis.com/auth/trace.append

Praktik terbaik cakupan

Ada banyak cakupan akses yang dapat dipilih, tetapi sebaiknya tetapkan cakupan akses cloud-platform, yang merupakan cakupan OAuth untuk layanan Google Cloud, lalu mengontrol akses akun layanan dengan memberikan peran IAM.

https://www.googleapis.com/auth/cloud-platform

Contoh cakupan

Dengan mengikuti praktik terbaik cakupan, jika Anda mengaktifkan cakupan akses cloud-platform pada instance, lalu memberikan peran IAM yang telah ditetapkan sebelumnya berikut:

  • roles/compute.instanceAdmin.v1
  • roles/storage.objectViewer
  • roles/compute.networkAdmin

Kemudian, akun layanan hanya memiliki izin yang disertakan dalam ketiga peran tersebut. Aplikasi yang meniru akun layanan tersebut tidak dapat melakukan tindakan di luar peran ini meskipun ada cakupan akses Google Cloud.

Di sisi lain, jika Anda memberikan cakupan yang lebih ketat pada instance, seperti cakupan hanya baca Cloud Storage (https://www.googleapis.com/auth/devstorage.read_only), dan menetapkan peran administrator roles/storage.objectAdmin di akun layanan, secara default, permintaan dari gcloud CLI dan library klien tidak akan dapat mengelola objek Cloud Storage dari instance tersebut, meskipun Anda telah memberikan peran roles/storage.ObjectAdmin ke akun layanan. Hal ini dikarenakan cakupan hanya baca Cloud Storage tidak mengizinkan instance untuk memanipulasi data Cloud Storage.

Contoh cakupan akses meliputi:

  • https://www.googleapis.com/auth/cloud-platform. Lihat dan kelola data Anda di seluruh layanan Google Cloud pada project Google Cloud yang ditentukan.
  • https://www.googleapis.com/auth/compute. Akses kontrol penuh ke metode Compute Engine.
  • https://www.googleapis.com/auth/compute.readonly. Akses hanya baca ke metode Compute Engine.
  • https://www.googleapis.com/auth/devstorage.read_only. Akses hanya baca ke Cloud Storage.
  • https://www.googleapis.com/auth/logging.write. Akses tulis ke log Compute Engine.

Langkah berikutnya