Dokumen ini menjelaskan cara membuat instance virtual machine (VM) yang dikonfigurasi untuk menggunakan akun layanan yang dikelola pengguna. 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 atau melakukan tindakan tanpa interaksi pengguna akhir. Google Cloud Untuk mengetahui informasi selengkapnya tentang kapan harus menggunakan akun layanan, lihat Praktik terbaik untuk menggunakan akun layanan.
Jika Anda memiliki aplikasi yang perlu melakukan panggilan ke API Google Cloud , 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 resourceGoogle Cloud .
Sebelum memulai
-
Siapkan autentikasi jika Anda belum melakukannya.
Autentikasi memverifikasi identitas Anda untuk mengakses layanan Google Cloud dan API. Untuk menjalankan
kode atau sampel dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke
Compute Engine dengan memilih salah satu opsi berikut:
Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:
Konsol
Saat menggunakan konsol Google Cloud untuk mengakses layanan Google Cloud dan API, Anda tidak perlu menyiapkan autentikasi.
gcloud
-
Instal Google Cloud CLI. Setelah penginstalan, inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:
gcloud initJika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
- Tetapkan region dan zona default.
-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Jika Anda menggunakan shell lokal, buat kredensial autentikasi lokal untuk akun pengguna Anda:
gcloud auth application-default login
Anda tidak perlu melakukan langkah ini jika menggunakan Cloud Shell.
Jika error autentikasi ditampilkan, dan Anda menggunakan penyedia identitas (IdP) eksternal, konfirmasi bahwa Anda telah login ke gcloud CLI dengan identitas gabungan Anda.
Terraform
Untuk menggunakan contoh Terraform di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.
Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
REST
Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.
Instal Google Cloud CLI.
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
Untuk mengetahui informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Google Cloud .
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk membuat VM yang menggunakan akun layanan, minta administrator untuk memberi Anda peran IAM berikut pada project:
-
Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1) -
Create Service Accounts (
roles/iam.serviceAccountCreator) -
Project IAM Admin (
roles/resourcemanager.projectIamAdmin)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Peran bawaan ini berisi izin yang diperlukan untuk membuat VM yang menggunakan akun layanan. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk membuat VM yang menggunakan akun layanan:
-
Untuk membuat akun layanan: Semua izin dalam peran
iam.serviceAccountCreator -
Untuk memberikan izin ke akun layanan:
Semua izin dalam peran
resourcemanager.projectIamAdmin -
Untuk membuat VM:
compute.instances.createpada project- Untuk menggunakan image kustom guna membuat VM:
compute.images.useReadOnlypada image - Untuk menggunakan snapshot guna membuat VM:
compute.snapshots.useReadOnlypada snapshot - Untuk menggunakan template instance guna membuat VM:
compute.instanceTemplates.useReadOnlydi template instance - Untuk menetapkan jaringan lama ke VM:
compute.networks.usepada project - Untuk menentukan alamat IP statis untuk VM:
compute.addresses.usedi project - Untuk menetapkan alamat IP eksternal ke VM saat menggunakan jaringan lama:
compute.networks.useExternalIpdi project - Untuk menentukan subnet bagi VM:
compute.subnetworks.usepada project atau pada subnet yang dipilih - Untuk menetapkan alamat IP eksternal ke VM saat menggunakan jaringan VPC:
compute.subnetworks.useExternalIpdi project atau di subnet yang dipilih - Untuk menetapkan metadata instance VM untuk VM:
compute.instances.setMetadatadi project - Untuk menyetel tag untuk VM:
compute.instances.setTagsdi VM - Untuk menyetel label VM:
compute.instances.setLabelsdi VM - Untuk menyetel akun layanan yang akan digunakan VM:
compute.instances.setServiceAccountdi VM - Untuk membuat disk baru untuk VM:
compute.disks.createdi project - Untuk memasang disk yang ada dalam mode hanya baca atau baca-tulis:
compute.disks.usepada disk - Untuk memasang disk yang ada dalam mode hanya baca:
compute.disks.useReadOnlypada disk
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Ringkasan
Sebaiknya konfigurasi akun layanan untuk VM Anda sebagai berikut:
- 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 , tetapkan cakupan akses akun layanan ke Izinkan akses penuh ke semua Cloud API.
- Jika menentukan akun layanan menggunakan Google Cloud CLI atau Compute Engine API, Anda dapat menggunakan parameter
scopesuntuk menetapkan cakupan akses.
Menyiapkan akun layanan
Buat akun layanan dan tetapkan peran IAM yang diperlukan. Tetapkan peran IAM sebanyak atau sesedikit mungkin sesuai kebutuhan. Anda dapat mengubah peran IAM di akun layanan sesuai kebutuhan.
Google merekomendasikan agar Anda membatasi hak istimewa akun layanan dan memeriksa izin akun layanan Anda secara rutin untuk memastikan bahwa izin tersebut merupakan yang terbaru.
Gunakan salah satu metode berikut untuk menyiapkan akun layanan.
Konsol
-
Pastikan Anda memiliki peran IAM Create Service Accounts
(
-
Di konsol Google Cloud , buka halaman Buat akun layanan.
Buka Create service account - Pilih project Anda.
-
Di kolom Nama akun layanan, masukkan nama. Konsol Google Cloud akan mengisi kolom ID akun layanan berdasarkan nama ini.
Di kolom Deskripsi akun layanan, masukkan sebuah deskripsi. Sebagai contoh,
Service account for quickstart. - Klik Buat dan lanjutkan.
-
Berikan peran yang diperlukan ke akun layanan.
Untuk memberikan peran, temukan daftar Pilih peran, lalu pilih peran.
Untuk memberikan peran tambahan, klik Tambahkan peran lain, lalu tambahkan setiap peran tambahan.
- Klik Lanjutkan.
-
Di kolom Peran pengguna akun layanan, masukkan ID untuk akun utama yang akan melampirkan akun layanan ke resource lain, seperti instance Compute Engine.
Biasanya, ini adalah alamat email untuk Akun Google.
-
Klik Selesai untuk menyelesaikan pembuatan akun layanan.
roles/iam.serviceAccountCreator) dan peran Project IAM Admin
(roles/resourcemanager.projectIamAdmin). Pelajari cara memberikan
peran.
gcloud
-
Pastikan Anda memiliki peran IAM Create Service Accounts
(
roles/iam.serviceAccountCreator) dan peran IAM Project IAM Admin (roles/resourcemanager.projectIamAdmin). Pelajari cara memberikan peran. -
Buat akun layanan:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Ganti
SERVICE_ACCOUNT_NAMEdengan nama untuk akun layanan. -
Untuk memberikan akses ke project dan resource Anda, berikan peran ke akun layanan:
gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE
Ganti kode berikut:
SERVICE_ACCOUNT_NAME: nama dari akun layanan.PROJECT_ID: project ID dimana Anda membuat akun layananROLE: peran yang akan diberikan
- Untuk memberikan peran lain ke akun layanan, jalankan perintah seperti yang Anda lakukan di langkah sebelumnya.
-
Berikan peran yang diperlukan ke akun utama yang akan melampirkan akun layanan ke resource lain.
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser
Ganti kode berikut:
SERVICE_ACCOUNT_NAME: nama dari akun layanan.PROJECT_ID: project ID dimana Anda membuat akun layananUSER_EMAIL: alamat email untuk Akun Google
Menyiapkan autentikasi:
Terraform
Untuk membuat akun layanan, Anda dapat menggunakan resource google_service_account.
Jangan lupa mengganti nilai placeholder untuk atribut account_id dan display_name.
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Membuat VM dan memasang akun layanan
Setelah membuat akun layanan, buat VM dan pasang akun layanan yang Anda buat di bagian sebelumnya. Tetapkan juga cakupan akses VM ke
cloud-platform.
Jika Anda sudah memiliki VM dan ingin mengonfigurasi VM tersebut untuk menggunakan akun layanan lain, lihat Mengubah akun layanan yang terpasang.
Gunakan salah satu metode berikut untuk membuat VM dan memasang akun layanan.
Konsol
Di konsol Google Cloud , buka halaman Create an instance.
Untuk melampirkan akun layanan, lakukan hal berikut:
- Di menu navigasi, klik Security.
- Dalam daftar Service account, pilih akun layanan yang Anda buat.
- Di bagian Access scopes, pilih Allow full access to all Cloud APIs.
Opsional: Tentukan opsi konfigurasi lainnya. Untuk mengetahui informasi selengkapnya, lihat Opsi konfigurasi selama pembuatan instance.
Untuk membuat dan memulai instance, klik Create.
gcloud
Untuk membuat instance VM baru dan mengonfigurasinya agar menggunakan akun layanan khusus melalui Google Cloud CLI, gunakan perintah gcloud compute instances create dan masukkan email akun layanan serta cakupan akses cloud-platform ke instance VM.
gcloud compute instances create VM_NAME \
--service-account=SERVICE_ACCOUNT_EMAIL \
--scopes=https://www.googleapis.com/auth/cloud-platform
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 Mencantumkan akun layanan.VM_NAME: nama instance VM.
Contoh:
gcloud compute instances create example-vm \
--service-account 123-my-sa@my-project-123.iam.gserviceaccount.com \
--scopes=https://www.googleapis.com/auth/cloud-platform
Anda juga dapat menentukan cakupan menggunakan alias: --scopes=cloud-platform.
Alias ini hanya dikenali oleh gcloud CLI. API dan library lainnya tidak mengenali alias ini, jadi Anda harus menentukan URI cakupan lengkap.
Terraform
Untuk menyiapkan VM baru agar dapat menggunakan akun layanan, Anda dapat menggunakan resource google_compute_instance.
REST
Gunakan metode instances.insert untuk membuat VM dan tentukan email akun layanan serta cakupan akses untuk instance VM.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "machineType":"zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE", "name":"VM_NAME", "disks":[ { "initializeParams":{ "sourceImage":"projects/IMAGE_PROJECT/global/images/IMAGE" }, "boot":true } ], "networkInterfaces":[ { "network":"global/networks/NETWORK_NAME" } ], "serviceAccounts": [ { "email": "SERVICE_ACCOUNT_EMAIL", "scopes": ["https://www.googleapis.com/auth/cloud-platform"] } ], "shieldedInstanceConfig":{ "enableSecureBoot":"ENABLE_SECURE_BOOT" } }
Ganti kode berikut:
PROJECT_ID: ID project tempat VM akan dibuatZONE: zone tempat VM akan dibuatMACHINE_TYPE_ZONE: zona yang berisi jenis mesin yang akan digunakan untuk VM baruMACHINE_TYPE: jenis mesin, telah ditetapkan atau kustom, untuk VM baruVM_NAME: nama VM baruIMAGE_PROJECT: project yang berisi image
Misalnya, jika Anda menentukandebian-10sebagai kelompok image, tentukandebian-cloudsebagai project image tersebut.IMAGE: tentukan salah satu dari berikut ini:IMAGE: versi tertentu dari image publikMisalnya,
"sourceImage": "projects/debian-cloud/global/images/debian-10-buster-v20200309"IMAGE_FAMILY: kelompok imageTindakan ini akan membuat VM dari image OS terbaru yang masih digunakan. Misalnya, jika Anda menentukan
"sourceImage": "projects/debian-cloud/global/images/family/debian-10", Compute Engine akan membuat VM dari versi terbaru OS image dalam kelompok imageDebian 10.
NETWORK_NAME: jaringan VPC yang ingin Anda gunakan untuk VM. Anda dapat menentukandefaultuntuk menggunakan jaringan default.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 mendapatkan email akun layanan.ENABLE_SECURE_BOOT: Opsional: Jika Anda memilih image yang mendukung fitur Shielded VM, Compute Engine secara default akan mengaktifkan virtual Trusted Platform Module (vTPM) dan pemantauan integritas. Compute Engine tidak mengaktifkan Booting Aman secara default.Jika Anda menentukan
trueuntukenableSecureBoot, Compute Engine akan membuat VM dengan ketiga fitur Shielded VM diaktifkan. Setelah Compute Engine memulai VM Anda, untuk mengubah opsi Shielded VM, Anda harus menghentikan VM tersebut.
Mengakses dan menggunakan layanan Google Cloud lainnya
Setelah VM dikonfigurasi untuk menggunakan akun layanan, selanjutnya aplikasi dapat menggunakan akun layanan ini untuk melakukan autentikasi. Metode yang paling umum adalah melakukan autentikasi menggunakan Kredensial Default Aplikasi dan library klien. Beberapa alat Google Cloud seperti gcloud CLI dapat otomatis menggunakan akun layanan untuk mengakses API Google Cloud dari VM. Untuk mengetahui informasi selengkapnya, lihat Mengautentikasi workload menggunakan akun layanan.
Jika akun layanan dihapus, aplikasi tidak akan lagi memiliki akses ke Google Cloud resource melalui akun layanan tersebut. Jika Anda menghapus akun layanan App Engine dan Compute Engine default, VM Anda tidak akan lagi memiliki akses ke resource dalam project. Jika Anda tidak yakin apakah akun layanan sedang digunakan, sebaiknya nonaktifkan akun layanan sebelum menghapusnya. Akun layanan yang dinonaktifkan dapat diaktifkan kembali jika masih diperlukan.
Contoh: Mengakses resource Cloud Storage dari VM
Setelah mengonfigurasi VM untuk menggunakan akun layanan yang memiliki peran storage.admin, Anda dapat menggunakan alat seperti gcloud CLI untuk mengelola file yang telah Anda simpan di Cloud Storage. Untuk mengakses resource Cloud Storage, lakukan langkah berikut:
Pastikan akun layanan yang terpasang ke VM Anda memiliki peran
roles/storage.admin.Jika VM Anda menggunakan OS image kustom, instal gcloud CLI. Secara default, gcloud CLI diinstal pada sebagian besar OS image publik yang disediakan oleh Google Cloud.
Hubungkan ke VM.
Dari VM, gunakan Google Cloud CLI untuk mengelola resource Cloud Storage Anda.
Apa langkah selanjutnya?
- Pelajari cara mengautentikasi workload menggunakan akun layanan.
- Pelajari cara mengubah akun layanan yang ditambahkan ke VM.
- Pelajari cara mencantumkan dan mengedit akun layanan.
- Tinjau praktik terbaik untuk menggunakan akun layanan dan mitigasi risiko keamanan.