Untuk memanggil Service Control API untuk layanan terkelola, pemanggil harus memiliki izin Identity and Access Management (IAM) berikut pada layanan:
services.checkmemerlukan izinservicemanagement.services.check.services.reportmemerlukan izinservicemanagement.services.report.services.allocateQuotamemerlukan izinservicemanagement.services.quota.
Peran IAM roles/servicemanagement.serviceController, roles/owner, dan roles/editor mencakup izin ini dan masing-masing dapat digunakan untuk memberikan izin tersebut. 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 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 lebih layanan terkelola. Project produsen layanan adalah induk layanan dalam hierarki ini.
- Layanan terkelola: Layanan terkelola dapat memiliki nol atau lebih konsumen layanan.
- Konsumen layanan: Konsumen layanan merujuk ke Google Cloud project yang telah mengaktifkan layanan.
Kontrol akses IAM diterapkan pada 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, peran tersebut akan memengaruhi semua konsumen layanan dari layanan terkelola.
Sebaiknya Anda hanya membuat satu layanan terkelola per project produsen layanan karena 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 Anda memiliki layanan multi-tenant, Anda harus memberikan peran
roles/servicemanagement.serviceController di tingkat layanan terkelola. Jika Anda memiliki layanan tenant tunggal, dengan kata lain, layanan tempat setiap konsumen layanan mendapatkan instance layanan terkelola sendiri, Anda harus memberikan peran di tingkat konsumen layanan. Untuk pemrosesan data di latar belakang yang memengaruhi semua konsumen layanan, Anda harus memberikan peran di tingkat layanan terkelola.
Memberikan peran
Untuk memanggil Service Control API, Anda harus memberikan peran yang diperlukan kepada pemanggil. Anda dapat memberikan peran melalui salah satu dari tiga pendekatan berikut. Anda harus menjadi pemilik project produsen layanan agar dapat memberikan peran yang diperlukan.
Memberikan peran di tingkat project produsen layanan
Anda dapat memberikan peran yang diperlukan di project tempat layanan terkelola berada, dengan mengikuti petunjuk di Memberikan, mengubah, dan mencabut akses ke resource, atau menggunakan perintah add-iam-policy-binding Google Cloud CLI untuk memberikan peran.
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 di 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 Mulai:
gcurl -d "{
'policy': {
'bindings': [ {
role: 'roles/servicemanagement.serviceController',
members: 'serviceAccount:SERVICE_ACCOUNT'
} ]
}
}" https://servicemanagement.googleapis.com/v1/services/YOUR_SERVICE_NAME:setIamPolicy
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 berisi setidaknya satu
ID project konsumen layanan yang valid. Contoh berikut menggunakan alias gcurl
yang ditentukan di bagian
Menguji dengan curl
dalam panduan Mulai:
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
Untuk mengetahui informasi selengkapnya, lihat Panduan Autentikasi Cloud.