Untuk memanggil Service Control API untuk layanan terkelola, pemanggil harus memiliki izin Identity and Access Management (IAM) berikut di 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
lebih baik karena 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 tidak memiliki atau memiliki 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, 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 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 terkelolanya sendiri, Anda harus memberikan peran di tingkat konsumen layanan. Untuk pemrosesan data 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 Memulai:
gcurl -d "{ 'policy': { 'bindings': [ { role: 'roles/servicemanagement.serviceController', members: 'serviceAccount:SERVICE_ACCOUNT' } ] } }" https://servicemanagement.googleapis.com/v1/services/YOUR_SERVICE_NAME:setIamPolicy
Perhatikan 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 mewajibkan permintaan ke Service Control API harus berisi setidaknya satu ID project 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
Perhatikan 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 Autentikasi Cloud.