Dokumen ini menjelaskan cara mengonfigurasi virtual machine (VM) yang sudah ada agar dapat menggunakan akun layanan lain. Akun layanan adalah jenis akun khusus yang biasanya digunakan oleh aplikasi atau workload komputasi untuk melakukan panggilan API resmi.
Akun layanan diperlukan untuk skenario saat beban kerja, seperti aplikasi kustom, perlu mengakses resource Google Cloud atau melakukan tindakan tanpa interaksi pengguna akhir. Untuk informasi selengkapnya tentang kapan harus menggunakan akun layanan, lihat Praktik terbaik untuk menggunakan akun layanan.
Jika Anda memiliki aplikasi yang perlu melakukan panggilan ke Google Cloud API, Google merekomendasikan agar Anda menyertakan akun layanan yang dikelola pengguna ke VM tempat aplikasi atau workload berjalan. Kemudian, Anda harus memberikan peran IAM ke akun layanan, sehingga akun layanan dan aplikasi yang berjalan di VM dapat mengakses resource Google Cloud.
Sebelum memulai
-
Jika Anda belum melakukannya, siapkan autentikasi.
Autentikasi adalah
proses verifikasi identitas Anda untuk mengakses layanan dan API Google Cloud.
Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat mengautentikasi ke Compute Engine dengan memilih salah satu opsi berikut:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
compute.instances.setServiceAccount
-
compute.instances.stop
-
compute.instances.start
- Buat akun layanan baru yang dikelola pengguna, daripada menggunakan akun layanan default Compute Engine, dan berikan peran IAM ke akun layanan tersebut hanya untuk resource dan operasi yang dibutuhkan.
- Sertakan akun layanan ke VM Anda.
- Tetapkan cakupan platform cloud (
https://www.googleapis.com/auth/cloud-platform
) pada VM Anda. Hal ini memungkinkan akun layanan VM memanggil Google Cloud API yang dapat digunakannya.- Jika Anda menentukan akun layanan menggunakan konsol Google Cloud, cakupan akses VM otomatis ditetapkan ke cakupan
cloud-platform
secara default. - Jika menentukan akun layanan menggunakan Google Cloud CLI atau Compute Engine API, Anda dapat menggunakan parameter
scopes
untuk menetapkan cakupan akses.
- Jika Anda menentukan akun layanan menggunakan konsol Google Cloud, cakupan akses VM otomatis ditetapkan ke cakupan
Memberikan peran IAM ke akun layanan default akan memengaruhi semua VM yang berjalan sebagai akun layanan default. Misalnya, jika Anda memberikan peran
roles/storage.objectAdmin
kepada akun layanan default, semua VM yang berjalan sebagai akun layanan default dengan cakupan akses yang diperlukan akan memiliki izin yang diberikan oleh peranroles/storage.objectAdmin
. Demikian pula, jika Anda membatasi akses dengan menghapus peran tertentu, hal ini akan memengaruhi semua VM yang berjalan sebagai akun layanan default.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.
Buka halaman VM instances.
Klik nama instance VM yang akun layanannya ingin Anda ubah.
Jika VM tidak dihentikan, klik Hentikan. Tunggu hingga VM berhenti.
Klik Edit.
Scroll ke bawah ke bagian Akun Layanan.
Dari menu drop-down, pilih akun layanan yang akan ditetapkan ke VM.
- Jika Anda memilih akun layanan yang dikelola pengguna, cakupan akses VM akan ditetapkan secara default ke cakupan
cloud-platform
yang direkomendasikan. Jika Anda memerlukan cakupan yang berbeda untuk akun layanan yang dikelola pengguna, gunakan gcloud CLI atau Compute Engine API untuk melampirkan akun layanan. - Jika memilih akun layanan default Compute Engine, Anda dapat mengubah cakupan aksesnya di konsol Google Cloud.
- Untuk mengubah cakupan, di bagian Cakupan akses, pilih Tetapkan akses untuk setiap API, lalu tetapkan cakupan yang sesuai dengan kebutuhan Anda.
- Direkomendasikan Jika tidak yakin dengan cakupan akses yang tepat untuk ditetapkan, pilih Izinkan akses penuh ke semua Cloud API lalu pastikan untuk membatasi akses dengan menetapkan peran IAM pada akun layanan.
- Jika Anda memilih akun layanan yang dikelola pengguna, cakupan akses VM akan ditetapkan secara default ke cakupan
Klik Simpan untuk menyimpan perubahan.
Klik Mulai/Lanjutkan untuk mereset VM.
Hentikan VM menggunakan perintah
instances stop
. GantiVM_NAME
dengan nama instance VM Anda.gcloud compute instances stop VM_NAME
Sertakan akun layanan. Untuk menyertakan akun layanan, gunakan perintah
instances set-service-account
dan masukkan nama VM, email akun layanan, dan cakupan yang diinginkan. Untuk mengetahui informasi selengkapnya tentang cara menetapkan cakupan akses, lihat Praktik terbaik.gcloud compute instances set-service-account VM_NAME \ --service-account=SERVICE_ACCOUNT_EMAIL \ --scopes=SCOPES
Ganti kode berikut:
SERVICE_ACCOUNT_EMAIL
: alamat email untuk akun layanan yang Anda buat. Contoh:my-sa-123@my-project-123.iam.gserviceaccount.com
. Untuk melihat alamat email, lihat cara Mencantumkan akun layanan.Jika Anda ingin menghapus akun layanan dari VM, gunakan flag
--no-service-account
.VM_NAME
: nama instance VM.SCOPES
: daftar URI atau alias cakupan yang dipisahkan koma yang diberikan dalam deskripsi untuk tanda--scopes
.Jika Anda ingin menghapus semua cakupan untuk VM, gunakan flag
--no-scopes
.
Misalnya, perintah berikut menetapkan akun layanan
my-sa-123@my-project-123.iam.gserviceaccount.com
ke VM yang disebut example-instance dan menetapkan cakupan akses di VM tersebut untuk mengizinkan akses baca/tulis ke Compute Engine dan akses hanya baca ke Cloud Storage:gcloud compute instances set-service-account example-instance \ --service-account=my-sa-123@my-project-123.iam.gserviceaccount.com \ --scopes=compute-rw,storage-ro
Mulai VM dengan menggunakan perintah
instances start
. GantiVM_NAME
dengan nama instance VM Anda.gcloud compute instances start VM_NAME
Hentikan VM dengan membuat permintaan
POST
menggunakan metodeinstances.stop
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/stop
Ganti kode berikut:
PROJECT_ID
: project tempat VM Anda beradaZONE
: zona tempat VM Anda beradaVM_NAME
: nama VM yang ingin Anda hentikan
Sertakan akun layanan dengan membuat permintaan
POST
ke metodesetServiceAccount
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setServiceAccount { "email": "SERVICE_ACCOUNT_EMAIL", "scopes": [ "SCOPE_URI", "SCOPE_URI", ... ] }
Ganti kode berikut:
PROJECT_ID
: project ID untuk permintaan ini.ZONE
: zona tempat VM ini berada.VM_NAME
: nama VM.SERVICE_ACCOUNT_EMAIL
: alamat email untuk akun layanan yang Anda buat. Contoh:my-sa-123@my-project-123.iam.gserviceaccount.com
. Untuk melihat alamat email, lihat cara Mencantumkan akun layanan.SCOPE_URI
: URI cakupan yang diperlukan.
Misalnya, permintaan berikut menggunakan email akun layanan
my-sa-123@my-project-123.iam.gserviceaccount.com
serta menetapkan cakupan Cloud Storage dan BigQuery:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setServiceAccount { "email": "my-sa-123@my-project-123.iam.gserviceaccount.com", "scopes": [ "https://www.googleapis.com/auth/bigquery", "https://www.googleapis.com/auth/devstorage.read_only" ] }
Mulai VM dengan membuat permintaan
POST
menggunakan metodeinstances.start
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/start
Ganti kode berikut:
PROJECT_ID
: project tempat VM Anda beradaZONE
: zona tempat VM Anda beradaVM_NAME
: nama VM yang ingin Anda mulai
Buka halaman VM instances.
Klik nama instance VM yang akun layanannya ingin Anda ubah.
Buka bagian API dan pengelolaan identitas. Bagian ini menampilkan akun layanan dan cakupan akses yang digunakan oleh VM.
- Batasi hak istimewa akun layanan dan periksa izin akun layanan Anda secara rutin untuk memastikan bahwa izin tersebut merupakan yang terbaru.
- Hapus akun layanan dengan hati-hati. Sebelum menghapusnya, pastikan aplikasi penting Anda tidak lagi menggunakan akun layanan. Jika Anda tidak yakin apakah akun layanan sedang digunakan, sebaiknya nonaktifkan akun layanan, bukan menghapusnya. Akun layanan yang dinonaktifkan dapat diaktifkan kembali jika masih diperlukan.
- Mitigasi risiko keamanan untuk akun layanan Anda. Untuk informasi selengkapnya, lihat Praktik terbaik untuk menggunakan akun layanan.
REST
Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Untuk informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Google Cloud.
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk mengonfigurasi akun layanan di VM, minta administrator untuk memberi Anda peran IAM Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1
) di VM atau project Anda. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.Peran bawaan ini berisi izin yang diperlukan untuk mengonfigurasi akun layanan di VM Anda. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk mengonfigurasi akun layanan di VM Anda:
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Ringkasan
Sebaiknya konfigurasi akun layanan untuk VM Anda sebagai berikut:
Menyiapkan akun layanan
Anda dapat membuat akun layanan yang dikelola pengguna atau menggunakan akun layanan default Compute Engine. Sebaiknya gunakan akun layanan yang dikelola pengguna.
Untuk akun layanan yang dipilih, pastikan peran Identity and Access Management (IAM) yang diperlukan ditetapkan.
Dikelola pengguna
Jika belum memiliki akun layanan yang dikelola pengguna, buat akun layanan. Untuk mengetahui petunjuk detailnya, lihat Menyiapkan akun layanan.
Default
Jika Anda familier dengan akun layanan default Compute Engine dan ingin menggunakan kredensial yang disediakan oleh akun layanan default daripada membuat akun layanan baru, Anda dapat memberikan peran IAM ke akun layanan default.
Sebelum Anda menetapkan peran IAM ke akun layanan default, perhatikan bahwa:
Jika Anda tidak yakin dengan pemberian peran IAM ke akun layanan default, buat akun layanan baru yang dikelola pengguna.
Menyertakan akun layanan dan memperbarui cakupan akses
Untuk mengubah akun layanan dan cakupan akses VM, VM harus dihentikan untuk sementara.
Jika akun layanan berada di project yang berbeda dengan VM, Anda harus mengonfigurasi akun layanan untuk resource dalam project yang berbeda.
Gunakan salah satu metode berikut untuk mengubah akun layanan dan cakupan akses di VM Anda.
Konsol
gcloud
REST
Melihat akun layanan yang digunakan oleh VM
Untuk melihat semua akun layanan dalam project, lihat Mencantumkan akun layanan.
Jika Anda perlu mengidentifikasi akun layanan yang digunakan oleh VM, selesaikan salah satu prosedur berikut:
console
gcloud
Jalankan perintah
gcloud compute instances describe
:gcloud compute instances describe VM_NAME \ --format json
Outputnya mirip dengan hal berikut ini:
{ ... "serviceAccounts":[ { "email":"123845678986-compute@developer.gserviceaccount.com", "scopes":[ "https://www.googleapis.com/auth/devstorage.full_control" ] } ] ... }
Jika VM tidak menggunakan akun layanan, Anda akan menerima respons tanpa properti
serviceAccounts
.Server Metadata
Buat kueri server metadata dari dalam VM itu sendiri. Buat permintaan ke
http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/
:user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/" \ -H "Metadata-Flavor: Google"
Jika Anda mengaktifkan satu atau beberapa akun layanan saat membuat instance, perintah
curl
ini akan menampilkan output yang mirip dengan berikut ini:123845678986-compute@developer.gserviceaccount.com/ default/
Jika instance tidak menggunakan akun layanan, Anda akan menerima respons kosong.
Praktik terbaik
Apa langkah selanjutnya?
Kecuali dinyatakan lain, konten di halaman ini dilisensikan berdasarkan Lisensi Creative Commons Attribution 4.0, sedangkan contoh kode dilisensikan berdasarkan Lisensi Apache 2.0. Untuk mengetahui informasi selengkapnya, lihat Kebijakan Situs Google Developers. Java adalah merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2024-12-22 UTC.
-