Kontrol Akses Service Control API

Agar dapat memanggil Service Control API untuk layanan terkelola, pemanggil harus memiliki izin Identity and Access Management (IAM) berikut pada layanan:

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.