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.
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 ingin menggunakan contoh command line dalam panduan ini, lakukan tindakan berikut:
- Instal Google Cloud CLI atau update ke versi terbaru.
- Tetapkan region dan zona default.
- Jika Anda ingin menggunakan contoh API dalam panduan ini, siapkan akses API.
Peran yang diperlukan
Agar mendapatkan izin yang diperlukan untuk membuat VM yang menggunakan akun layanan, minta administrator untuk memberi Anda peran IAM berikut di project Anda:
-
Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1
) -
Create Service Accounts (
roles/iam.serviceAccountCreator
)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses.
Peran yang telah ditetapkan ini berisi izin yang diperlukan untuk membuat VM yang menggunakan akun layanan. Untuk melihat izin pasti yang diperlukan, luaskan 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
serviceAccountCreator
-
Untuk membuat VM:
compute.instances.create
pada projectcompute.instances.updateShieldedVmConfig
jika Anda berencana membuat instance Shielded VM dan ingin dapat mengubah setelan Shielded VMcompute.networks.use
pada project jika menggunakan jaringan lamacompute.subnetworks.use
baik pada seluruh project maupun subnet yang dipilih (jaringan VPC)compute.networks.useExternalIp
pada project jika Anda perlu menetapkan alamat IP eksternal (baik efemeral maupun statis) ke instance yang menggunakan jaringan lamacompute.subnetworks.useExternalIp
baik pada seluruh project maupun subnet yang dipilih jika Anda perlu menetapkan alamat IP eksternal (baik efemeral maupun statis) ke instance yang menggunakan jaringan VPCcompute.addresses.use
pada project jika Anda menentukan alamat statis dalam projectcompute.instances.setMetadata
jika menetapkan metadatacompute.instances.setTags
pada instance jika menetapkan tagcompute.instances.setLabels
pada instance jika menetapkan labelcompute.instances.setServiceAccount
pada instance jika menetapkan akun layanancompute.images.useReadOnly
pada image jika membuat persistent disk root barucompute.disks.create
pada project jika membuat persistent disk root baru dengan instance inicompute.disks.useReadOnly
pada disk jika memasang persistent disk yang ada dalam mode hanya bacacompute.disks.use
pada disk jika memasang disk yang ada dalam mode baca/tuliscompute.disks.setLabels
pada disk jika menetapkan labelcompute.snapshots.create
pada project untuk membuat snapshot baru jika membuat instance dari snapshotcompute.snapshots.useReadOnly
pada snapshot jika membuat instance dari snapshotcompute.instanceTemplates.useReadOnly
pada template instance jika membuat instance dari template instance
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran yang telah ditetapkan 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, 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
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.
Gunakan salah satu metode berikut untuk menyiapkan akun layanan.
Konsol
-
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 kotak Peran pengguna akun layanan, masukkan alamat email untuk Akun Google Anda.
-
Klik Selesai untuk menyelesaikan pembuatan akun layanan.
gcloud
-
Buat akun layanan:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Ganti
SERVICE_ACCOUNT_NAME
dengan 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.
-
Memberi Akun Google Anda peran yang memungkinkan Anda menggunakan peran akun layanan dan tambahkan akun layanan tersebut 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 Anda
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 VM instances.
- Pilih project Anda lalu klik Continue.
- Klik Create instance.
- Tentukan Name untuk VM Anda.
- Scroll ke bagian Identity and API access.
- Dalam daftar Service account, pilih akun layanan yang Anda buat. Saat Anda memasang akun layanan ke VM, cakupan akses
cloud-platform
Google Cloud akan otomatis ditetapkan di VM. - Buat penyesuaian VM tambahan, sesuai kebutuhan.
- Untuk membuat dan memulai VM, 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 mendapatkan email 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
.
API
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-10
sebagai kelompok image, tentukandebian-cloud
sebagai project image tersebut.IMAGE or IMAGE_FAMILY
: menentukan salah satu dari berikut ini:IMAGE
: versi spesifik dari image publik
Misalnya"sourceImage": "projects/debian-cloud/global/images/debian-10-buster-v20200309"
IMAGE_FAMILY
: kelompok image
Ini akan membuat VM dari OS image 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 akan digunakan untuk VM. Anda dapat menentukandefault
untuk 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
true
untukenableSecureBoot
, 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 dan gsutil
dapat otomatis menggunakan akun layanan untuk mengakses Google Cloud API dari VM. Untuk mengetahui informasi selengkapnya, lihat Mengautentikasi workload menggunakan akun layanan.
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 dan gsutil
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 salah satu alat berikut untuk mengelola resource Cloud Storage.
- Gunakan
gsutil
- Gunakan Google Cloud CLI
- Gunakan
Praktik terbaik
- 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.