Kontrol Akses Service Control API

Untuk memanggil Service Control API untuk layanan terkelola, pemanggil harus memiliki izin Identity and Access Management (IAM) berikut di 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 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.