Dokumen ini menjelaskan opsi kontrol akses yang tersedia untuk Anda di Pub/Sub.
Ringkasan
Pub/Sub menggunakan Identity and Access Management (IAM) untuk kontrol akses.
Di Pub/Sub, kontrol akses dapat dikonfigurasi pada level project dan level resource individual. Contoh:
Berikan akses per topik atau per langganan, bukan untuk seluruh project Cloud.
Jika memiliki akses hanya lihat ke satu topik atau langganan, Anda tidak dapat melihat topik atau langganan menggunakan Konsol Google Cloud. Sebagai gantinya, Anda dapat menggunakan Google Cloud CLI.
Memberikan akses dengan kemampuan terbatas, seperti untuk hanya memublikasikan pesan ke topik, atau hanya menggunakan pesan dari langganan, tetapi tidak untuk menghapus topik atau langganan.
Berikan akses ke semua resource Pub/Sub dalam project kepada grup developer.
Untuk mengetahui deskripsi mendetail tentang IAM dan fitur-fiturnya, lihat dokumentasi IAM. Secara khusus, lihat Memberikan, mengubah, dan mencabut akses ke resource.
Setiap metode Pub/Sub memerlukan izin yang diperlukan. Untuk daftar izin dan peran yang didukung Pub/Sub IAM, lihat bagian Peran di bawah.
Izin dan peran
Bagian ini merangkum izin dan peran yang didukung Pub/Sub IAM.
Izin yang diperlukan
Tabel berikut mencantumkan izin yang diperlukan untuk memanggil setiap metode:
Metode REST | Izin yang diperlukan |
---|---|
projects.snapshots.create |
pubsub.snapshots.create di project Cloud yang memuatnya dan izin pubsub.subscriptions.consume di langganan sumber. |
projects.snapshots.delete |
pubsub.snapshots.delete pada snapshot yang diminta. |
projects.snapshots.getIamPolicy |
pubsub.snapshots.getIamPolicy pada snapshot yang diminta. |
projects.snapshots.list |
pubsub.snapshots.list pada project Cloud yang diminta. |
projects.snapshots.patch |
pubsub.snapshots.update pada snapshot yang diminta. |
projects.snapshots.setIamPolicy |
pubsub.snapshots.setIamPolicy pada snapshot yang diminta. |
projects.snapshots.testIamPermissions |
Tidak ada. |
projects.subscriptions.acknowledge |
pubsub.subscriptions.consume pada langganan yang diminta. |
projects.subscriptions.create |
pubsub.subscriptions.create di project Cloud yang memuatnya dan pubsub.topics.attachSubscription pada topik yang diminta.
Perlu diperhatikan bahwa untuk membuat langganan di Project A ke Topik T di Project B, izin yang sesuai harus diberikan pada Project A dan juga Topik T. Dalam hal ini, info identitas pengguna dapat dicatat dalam log audit Project B. |
projects.subscriptions.delete |
pubsub.subscriptions.delete pada langganan yang diminta. |
projects.subscriptions.get |
pubsub.subscriptions.get pada langganan yang diminta. |
projects.subscriptions.getIamPolicy |
pubsub.subscriptions.getIamPolicy pada langganan yang diminta. |
projects.subscriptions.list |
pubsub.subscriptions.list pada project Cloud yang diminta. |
projects.subscriptions.modifyAckDeadline |
pubsub.subscriptions.consume pada langganan yang diminta. |
projects.subscriptions.modifyPushConfig |
pubsub.subscriptions.update pada langganan yang diminta. |
projects.subscriptions.patch |
pubsub.subscriptions.update pada langganan yang diminta. |
projects.subscriptions.pull |
pubsub.subscriptions.consume pada langganan yang diminta. |
projects.subscriptions.seek |
pubsub.subscriptions.consume pada langganan yang diminta dan pubsub.snapshots.seek pada snapshot yang diminta, jika ada. |
projects.subscriptions.setIamPolicy |
pubsub.subscriptions.setIamPolicy pada langganan yang diminta. |
projects.subscriptions.testIamPermissions |
Tidak ada. |
projects.topics.create |
pubsub.topics.create di project Cloud yang menampungnya. |
projects.topics.delete |
pubsub.topics.delete pada topik yang diminta. |
projects.topics.detachSubscription |
pubsub.topics.detachSubscription pada topik yang diminta. |
projects.topics.get |
pubsub.topics.get pada topik yang diminta. |
projects.topics.getIamPolicy |
pubsub.topics.getIamPolicy pada topik yang diminta. |
projects.topics.list |
pubsub.topics.list pada project Cloud yang diminta. |
projects.topics.patch |
pubsub.topics.update pada topik yang diminta. |
projects.topics.publish |
pubsub.topics.publish pada topik yang diminta. |
projects.topics.setIamPolicy |
pubsub.topics.setIamPolicy pada topik yang diminta. |
projects.topics.subscriptions.list |
pubsub.topics.get pada topik yang diminta. |
projects.topics.testIamPermissions |
Tidak ada. |
Peran
Tabel berikut mencantumkan semua peran Pub/Sub dan izin yang terkait dengan setiap peran:
Role | Permissions |
---|---|
Pub/Sub Admin( Provides full access to topics and subscriptions. Lowest-level resources where you can grant this role:
|
|
Pub/Sub Editor( Provides access to modify topics and subscriptions, and access to publish and consume messages. Lowest-level resources where you can grant this role:
|
|
Pub/Sub Publisher( Provides access to publish messages to a topic. Lowest-level resources where you can grant this role:
|
|
Pub/Sub Subscriber( Provides access to consume messages from a subscription and to attach subscriptions to a topic. Lowest-level resources where you can grant this role:
|
|
Pub/Sub Viewer( Provides access to view topics and subscriptions. Lowest-level resources where you can grant this role:
|
|
Mengontrol akses melalui konsol Google Cloud
Anda dapat menggunakan konsol Google Cloud untuk mengelola kontrol akses atas topik dan project Anda.
Untuk menetapkan kontrol akses di level project, ikuti langkah-langkah berikut:
Di Konsol Google Cloud, buka halaman IAM.
Pilih project Anda.
Klik
Add.Ketik satu atau beberapa nama utama.
Di daftar Pilih peran, pilih peran yang ingin diberikan.
Klik Save.
Pastikan akun utama tercantum dengan peran yang Anda berikan.
Guna menyetel kontrol akses untuk topik dan langganan, ikuti langkah-langkah berikut:
Di konsol Google Cloud, buka daftar Topics Pub/Sub.
Jika perlu, pilih project Anda yang mendukung Pub/Sub.
Lakukan salah satu langkah berikut:
Untuk menetapkan peran bagi satu atau beberapa topik, pilih topik.
Untuk menetapkan peran bagi langganan yang dilampirkan ke topik, klik ID topik. Di halaman Detail topik, klik ID langganan. Halaman Detail langganan akan muncul.
Jika panel info disembunyikan, klik Tampilkan panel info.
Di tab Permissions, klik
Add principal.Ketik satu atau beberapa nama utama.
Di daftar Pilih peran, pilih peran yang ingin diberikan.
Klik Save.
Mengontrol akses melalui IAM API
Dengan Pub/Sub IAM API, Anda dapat menetapkan dan mendapatkan kebijakan tentang setiap topik dan langganan dalam sebuah project, serta menguji izin pengguna untuk resource tertentu. Seperti metode Pub/Sub biasa, Anda dapat memanggil metode IAM API melalui library klien, API Explorer, atau langsung melalui HTTP.
Perlu diperhatikan bahwa Anda tidak dapat menggunakan Pub/Sub IAM API untuk mengelola kebijakan di level project Google Cloud.
Bagian berikut memberikan contoh cara menyetel dan mendapatkan kebijakan, serta cara menguji izin yang dimiliki pemanggil untuk resource tertentu.
Mendapatkan kebijakan
Metode getIamPolicy()
memungkinkan Anda mendapatkan kebijakan yang ada.
Metode ini menampilkan objek JSON yang berisi kebijakan yang terkait dengan
resource.
Berikut ini beberapa kode contoh untuk mendapatkan kebijakan langganan:
C#
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C# di Panduan Memulai: Menggunakan Library Klien. Untuk informasi selengkapnya, lihat dokumentasi referensi Pub/Sub C# API.
gcloud
Dapatkan kebijakan langganan:
gcloud pubsub subscriptions get-iam-policy \ projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \ --format json
Output:
{ "etag": "BwUjMhCsNvY=", "bindings": [ { "role": "roles/pubsub.admin", "members": [ "user:user-1@gmail.com" ] }, { "role": "roles/pubsub.editor", "members": [ "serviceAccount:service-account-2@appspot.gserviceaccount.com", "user:user-3@gmail.com" } ] }
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Go API.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan Memulai: Menggunakan Library Klien. Untuk informasi selengkapnya, lihat dokumentasi referensi API Pub/Sub Java.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan Memulai: Menggunakan Library Klien. Untuk informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Node.js API.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan Memulai: Menggunakan Library Klien. Untuk informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Node.js API.
PHP
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan PHP di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub PHP API.
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Python API.
Ruby
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Ruby di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Ruby API.
Berikut ini beberapa kode contoh untuk mendapatkan kebijakan untuk suatu topik:C#
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C# di Panduan Memulai: Menggunakan Library Klien. Untuk informasi selengkapnya, lihat dokumentasi referensi Pub/Sub C# API.
gcloud
Mendapatkan kebijakan topik
gcloud pubsub topics get-iam-policy \ projects/${PROJECT}/topics/${TOPIC} \ --format json
Output:
{ "etag": "BwUjMhCsNvY=", "bindings": [ { "role":" roles/pubsub.viewer", "members": [ "user:user-1@gmail.com" ] } ] }
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Go API.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan Memulai: Menggunakan Library Klien. Untuk informasi selengkapnya, lihat dokumentasi referensi API Pub/Sub Java.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan Memulai: Menggunakan Library Klien. Untuk informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Node.js API.
PHP
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan PHP di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub PHP API.
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Python API.
Ruby
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Ruby di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Ruby API.
Menetapkan kebijakan
Metode setIamPolicy()
memungkinkan Anda melampirkan kebijakan
ke resource. Metode setIamPolicy()
mengambil SetIamPolicyRequest
, yang
berisi kebijakan yang akan ditetapkan dan resource tempat kebijakan dilampirkan.
Metode ini menampilkan kebijakan yang dihasilkan.
Berikut ini beberapa kode contoh untuk menetapkan kebijakan untuk langganan:
C#
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C# di Panduan Memulai: Menggunakan Library Klien. Untuk informasi selengkapnya, lihat dokumentasi referensi Pub/Sub C# API.
gcloud
1. Simpan kebijakan untuk langganan.
gcloud pubsub subscriptions get-iam-policy \ projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \ --format json > subscription_policy.json
2. Buka subscription_policy.json
dan perbarui binding dengan memberikan peran yang sesuai ke akun utama yang sesuai.
Untuk informasi selengkapnya tentang cara menggunakan file subscription_policy.json
, lihat
Kebijakan dalam dokumentasi IAM.
{ "etag": "BwUjMhCsNvY=", "bindings": [ { "role": "roles/pubsub.admin", "members": [ "user:user-1@gmail.com" ] }, { "role": "roles/pubsub.editor", "members": [ "serviceAccount:service-account-2@appspot.gserviceaccount.com" } ] }
3. Terapkan kebijakan langganan yang baru.
gcloud pubsub subscriptions set-iam-policy \ projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \ subscription_policy.json
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Go API.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan Memulai: Menggunakan Library Klien. Untuk informasi selengkapnya, lihat dokumentasi referensi API Pub/Sub Java.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan Memulai: Menggunakan Library Klien. Untuk informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Node.js API.
PHP
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Python API.
Ruby
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Ruby di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Ruby API.
Berikut ini beberapa kode contoh untuk menetapkan kebijakan untuk topik:
C#
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C# di Panduan Memulai: Menggunakan Library Klien. Untuk informasi selengkapnya, lihat dokumentasi referensi Pub/Sub C# API.
gcloud
1. Simpan kebijakan untuk topik tersebut.
gcloud pubsub topics get-iam-policy \ projects/${PROJECT}/topics/${TOPIC} \ --format json > topic_policy.json
2. Buka topic_policy.json
dan perbarui binding dengan memberikan peran yang sesuai ke akun utama yang sesuai.
Untuk informasi selengkapnya tentang cara menggunakan file subscription_policy.json
, lihat
Kebijakan dalam dokumentasi IAM.
{ "etag": "BwUjMhCsNvY=", "bindings": [ { "role": "roles/pubsub.editor", "members": [ "user:user-1@gmail.com", "user:user-2@gmail.com" ] } ] }
3. Terapkan kebijakan topik baru.
gcloud pubsub topics set-iam-policy \ projects/${PROJECT}/topics/${TOPIC} \ topic_policy.json
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Go API.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan Memulai: Menggunakan Library Klien. Untuk informasi selengkapnya, lihat dokumentasi referensi API Pub/Sub Java.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan Memulai: Menggunakan Library Klien. Untuk informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Node.js API.
PHP
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Python API.
Ruby
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Ruby di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Ruby API.
Menguji izin
Anda dapat menggunakan metode testIamPermissions()
untuk memeriksa izin
yang dapat ditambahkan atau dihapus untuk resource yang diberikan. Fungsi ini mengambil
nama resource dan satu set izin sebagai parameter, serta menampilkan subset
izin.
Berikut ini beberapa kode contoh untuk menguji izin langganan:
C#
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C# di Panduan Memulai: Menggunakan Library Klien. Untuk informasi selengkapnya, lihat dokumentasi referensi Pub/Sub C# API.
gcloud
gcloud iam list-testable-permissions \ https://pubsub.googleapis.com/v1/projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \ --format json
Output:
[ { "name": "pubsub.subscriptions.consume", "stage": "GA" }, { "name": "pubsub.subscriptions.delete", "stage": "GA" }, { "name": "pubsub.subscriptions.get", "stage": "GA" }, { "name": "pubsub.subscriptions.getIamPolicy", "stage": "GA" }, { "name": "pubsub.subscriptions.setIamPolicy", "stage": "GA" }, { "name": "pubsub.subscriptions.update", "stage": "GA" } ]
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Go API.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan Memulai: Menggunakan Library Klien. Untuk informasi selengkapnya, lihat dokumentasi referensi API Pub/Sub Java.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan Memulai: Menggunakan Library Klien. Untuk informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Node.js API.
PHP
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan PHP di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub PHP API.
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Python API.
Ruby
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Ruby di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Ruby API.
Berikut adalah beberapa kode contoh untuk menguji izin untuk suatu topik:
C#
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C# di Panduan Memulai: Menggunakan Library Klien. Untuk informasi selengkapnya, lihat dokumentasi referensi Pub/Sub C# API.
gcloud
gcloud iam list-testable-permissions \ https://pubsub.googleapis.com/v1/projects/${PROJECT}/topics/${TOPIC} \ --format json
Output
[ { "name": "pubsub.topics.attachSubscription", "stage": "GA" }, { "name": "pubsub.topics.delete", "stage": "GA" }, { "name": "pubsub.topics.detachSubscription", "stage": "GA" }, { "name": "pubsub.topics.get", "stage": "GA" }, { "name": "pubsub.topics.getIamPolicy", "stage": "GA" }, { "name": "pubsub.topics.publish", "stage": "GA" }, { "name": "pubsub.topics.setIamPolicy", "stage": "GA" }, { "name": "pubsub.topics.update", "stage": "GA" } ]
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Go API.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan Memulai: Menggunakan Library Klien. Untuk informasi selengkapnya, lihat dokumentasi referensi API Pub/Sub Java.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan Memulai: Menggunakan Library Klien. Untuk informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Node.js API.
PHP
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan PHP di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub PHP API.
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Python API.
Ruby
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Ruby di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Ruby API.
Contoh kasus penggunaan: komunikasi lintas project
IAM Pub/Sub berguna untuk meningkatkan akses dalam komunikasi lintas project.
Misalkan akun layanan di Project Cloud A ingin memublikasikan pesan ke suatu topik di Project Cloud B. Pertama, aktifkan Pub/Sub API di Project A.
Kedua, berikan izin Edit ke akun layanan di Cloud Project B. Namun, pendekatan ini sering kali terlalu kasar. Anda dapat menggunakan IAM API untuk mencapai tingkat akses yang lebih mendetail.
Misalnya, cuplikan ini menggunakan metode setIamPolicy()
di project-b dan file
topic_policy.json
yang sudah disiapkan untuk memberikan peran penayang
projects/
project-b/topics/
topic-b ke akun layanan
foobar@
project-a.iam.gserviceaccount.com
dari project-a:
gcloud pubsub topics set-iam-policy \ projects/project-b/topics/topic-b \ topic_policy.json
Updated IAM policy for topic topic-b. bindings: - members: - serviceAccount:foobar@project-a.iam.gserviceaccount.com role: roles/pubsub.publisher etag: BwWGrQYX6R4=
Perilaku ketersediaan sebagian
Pemeriksaan otorisasi bergantung pada subsistem IAM. Agar dapat secara konsisten menawarkan latensi respons yang rendah untuk operasi data (publikasi dan pemakaian pesan), sistem mungkin kembali menggunakan kebijakan IAM yang di-cache. Untuk mengetahui informasi tentang kapan perubahan akan diterapkan, lihat dokumentasi IAM.