Agar dapat memanggil Service Control API untuk layanan terkelola, pemanggil harus memiliki izin Identity and Access Management (IAM) berikut pada layanan:
services.check
memerlukan izinservicemanagement.services.check
.services.report
memerlukan izinservicemanagement.services.report
.services.allocateQuota
memerlukan izinservicemanagement.services.quota
.
Peran IAM roles/servicemanagement.serviceController
, roles/owner
, dan roles/editor
menyertakan izin ini dan masing-masing dapat digunakan untuk memberikannya. Sebaiknya gunakan peran IAM
roles/servicemanagement.serviceController
untuk menjalankan layanan terkelola Anda. Meskipun
roles/owner
dan roles/editor
juga memberikan izin ini, peran yang lebih sempit
akan lebih baik untuk alasan keamanan.
Model resource
IAM menerapkan kebijakan IAM pada resource untuk mengontrol siapa yang dapat melakukan tindakan apa pada resource. Service Control API menggunakan resource berikut untuk menyediakan fungsinya:
- Project produsen layanan: Project produsen layanan dapat memiliki nol atau beberapa layanan terkelola. Project produsen layanan adalah induk layanan dalam hierarki ini.
- Layanan terkelola: Layanan terkelola mungkin memiliki nol atau beberapa konsumen layanan.
- Konsumen layanan: Konsumen layanan mengacu pada project Google Cloud yang telah mengaktifkan layanan.
Kontrol akses IAM diterapkan ke model resource. Jika peran diberikan di level project produsen layanan, peran tersebut akan memengaruhi semua layanan terkelola yang dimiliki oleh project produsen. Jika peran diberikan di tingkat layanan terkelola, hal tersebut akan memengaruhi semua konsumen layanan pada layanan terkelola.
Sebaiknya Anda hanya membuat satu layanan terkelola per project produsen layanan untuk alasan keamanan dan isolasi. Jika tidak, misalnya, jika project produsen layanan kehabisan kuota untuk mengirim permintaan ke Service Control API, beberapa layanan terkelola akan terpengaruh.
Jika memiliki layanan multi-tenant, Anda harus memberikan peran roles/servicemanagement.serviceController
pada tingkat layanan terkelola. Jika Anda memiliki layanan tenant tunggal, dengan kata lain, layanan tempat
setiap konsumen layanan mendapatkan instance layanan terkelolanya sendiri, Anda harus
memberikan peran tersebut di tingkat konsumen layanan. Untuk pemrosesan data latar belakang yang memengaruhi semua konsumen layanan, Anda harus memberikan peran tersebut di tingkat layanan terkelola.
Memberikan peran
Untuk memanggil Service Control API, Anda harus memberikan peran yang diperlukan kepada pemanggil. Anda dapat memberikan peran tersebut melalui salah satu dari tiga pendekatan berikut. Anda harus menjadi pemilik project produsen layanan agar dapat memberikan peran yang diperlukan.
Memberikan peran di level project produsen layanan
Anda dapat memberikan peran yang diperlukan pada project yang mencakup layanan terkelola, dengan mengikuti petunjuk dalam Memberikan, mengubah, dan mencabut akses ke resource, atau menggunakan perintah add-iam-policy-binding dari Google Cloud CLI untuk memberikan peran tersebut.
Misalnya, Anda dapat memberikan peran ke akun layanan, seperti foo@developer.gserviceaccount.com
:
gcloud projects add-iam-policy-binding PRODUCER_PROJECT_ID --member serviceAccount:SERVICE_ACCOUNT --role roles/servicemanagement.serviceController
Demikian pula, Anda dapat memberikan peran ke akun pengguna, seperti bar@gmail.com
:
gcloud projects add-iam-policy-binding PRODUCER_PROJECT_ID --member user:USER_ACCOUNT --role roles/servicemanagement.serviceController
Memberikan peran pada tingkat layanan
Anda dapat memberikan peran roles/servicemanagement.serviceController
di
tingkat layanan menggunakan curl
. Contoh berikut menggunakan alias gcurl
yang ditentukan di bagian
Menguji dengan curl
dalam panduan Memulai:
gcurl -d "{ 'policy': { 'bindings': [ { role: 'roles/servicemanagement.serviceController', members: 'serviceAccount:SERVICE_ACCOUNT' } ] } }" https://servicemanagement.googleapis.com/v1/services/YOUR_SERVICE_NAME:setIamPolicy
Perlu diketahui bahwa contoh di atas akan menggantikan semua kebijakan IAM tingkat layanan yang ada. Untuk memberikan peran baru secara bertahap, Anda harus menyertakan semua kebijakan IAM dalam isi permintaan.
Memberikan peran di tingkat konsumen layanan
Anda dapat memberikan peran roles/servicemanagement.serviceController
di
tingkat konsumen layanan. Izin tingkat konsumen layanan mengharuskan
permintaan ke Service Control API harus berisi setidaknya satu project ID
konsumen layanan yang valid. Contoh berikut menggunakan alias gcurl
yang ditentukan di bagian
Menguji dengan curl
dalam panduan Memulai:
gcurl -d "{ 'policy': { 'bindings': [ { role: 'roles/servicemanagement.serviceController', members: 'serviceAccount:SERVICE_ACCOUNT' } ] } }" https://servicemanagement.googleapis.com/v1/services/YOUR_SERVICE_NAME/consumers/CONSUMER_PROJECT_NUMBER:setIamPolicy
Perlu diketahui bahwa contoh di atas akan menggantikan semua kebijakan IAM level project konsumen yang ada. Untuk memberikan peran baru secara bertahap, Anda harus menyertakan semua kebijakan IAM dalam isi permintaan.
Untuk mengetahui informasi selengkapnya, lihat Panduan Cloud Auth.