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 di level project dan di level resource individual. Contoh:
Berikan akses berdasarkan 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 tersebut menggunakan konsol Google Cloud. Sebagai gantinya, Anda dapat menggunakan Google Cloud CLI.
Berikan akses dengan kemampuan terbatas, seperti hanya memublikasikan pesan ke topik, atau hanya menggunakan pesan dari langganan, tetapi tidak 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 artikel Memberikan, mengubah, dan mencabut akses ke resource.
Setiap metode Pub/Sub memerlukan izin yang diperlukan. Untuk mengetahui daftar izin dan peran yang didukung IAM Pub/Sub, lihat bagian Peran di bawah.
Izin dan peran
Bagian ini merangkum izin dan peran yang didukung IAM Pub/Sub.
Izin yang diperlukan
Tabel berikut mencantumkan izin yang diperlukan untuk memanggil setiap metode:
Metode REST | Izin yang diperlukan |
---|---|
projects.snapshots.create |
pubsub.snapshots.create pada project Cloud yang berisi dan izin pubsub.subscriptions.consume pada 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 di 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 pada project Cloud yang berisinya dan pubsub.topics.attachSubscription pada topik yang diminta.
Perhatikan bahwa untuk membuat langganan di Project A ke Topik T di Project
B, izin yang sesuai harus diberikan di Project A dan di 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 di 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 berisinya. |
projects.topics.delete |
pubsub.topics.delete tentang topik yang diminta. |
projects.topics.detachSubscription |
pubsub.topics.detachSubscription tentang topik yang diminta. |
projects.topics.get |
pubsub.topics.get tentang topik yang diminta. |
projects.topics.getIamPolicy |
pubsub.topics.getIamPolicy tentang topik yang diminta. |
projects.topics.list |
pubsub.topics.list di project Cloud yang diminta. |
projects.topics.patch |
pubsub.topics.update tentang topik yang diminta. |
projects.topics.publish |
pubsub.topics.publish tentang topik yang diminta. |
projects.topics.setIamPolicy |
pubsub.topics.setIamPolicy tentang topik yang diminta. |
projects.topics.subscriptions.list |
pubsub.topics.get tentang 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 ke topik dan project Anda.
Untuk menetapkan kontrol akses di tingkat 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 Select a role, pilih peran yang ingin Anda berikan.
Klik Simpan.
Pastikan akun utama tercantum dengan peran yang Anda berikan.
Untuk menetapkan kontrol akses untuk topik dan langganan, ikuti langkah-langkah berikut:
Di konsol Google Cloud, buka daftar Topik Pub/Sub.
Jika perlu, pilih project yang mengaktifkan Pub/Sub.
Lakukan salah satu langkah berikut:
Untuk menetapkan peran untuk satu atau beberapa topik, pilih topik tersebut.
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 Select a role, pilih peran yang ingin Anda berikan.
Klik Simpan.
Mengontrol akses melalui IAM API
Pub/Sub IAM API memungkinkan Anda menetapkan dan mendapatkan kebijakan pada topik dan langganan individual dalam project, serta menguji izin pengguna untuk resource tertentu. Seperti metode Pub/Sub reguler, Anda dapat memanggil metode IAM API melalui library klien, atau API Explorer, atau langsung melalui HTTP.
Perhatikan bahwa Anda tidak dapat menggunakan Pub/Sub IAM API untuk mengelola kebijakan di tingkat project Google Cloud.
Bagian berikut memberikan contoh cara menetapkan 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 adalah beberapa contoh kode untuk mendapatkan kebijakan untuk langganan:
C#
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C# di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui 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 mengetahui informasi selengkapnya, lihat dokumentasi referensi Java API Pub/Sub.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Pub/Sub.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Pub/Sub.
PHP
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan PHP di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API PHP Pub/Sub.
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 contoh kode untuk mendapatkan kebijakan untuk suatu topik:C#
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C# di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui 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 mengetahui informasi selengkapnya, lihat dokumentasi referensi Java API Pub/Sub.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Pub/Sub.
PHP
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan PHP di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API PHP Pub/Sub.
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()
menggunakan SetIamPolicyRequest
, yang
berisi kebijakan yang akan ditetapkan dan resource tempat kebijakan dilampirkan.
Fungsi ini menampilkan kebijakan yang dihasilkan.
Berikut adalah beberapa contoh kode untuk menetapkan kebijakan untuk langganan:
C#
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C# di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui 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 kepada akun utama yang sesuai.
Untuk mengetahui 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 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 mengetahui informasi selengkapnya, lihat dokumentasi referensi Java API Pub/Sub.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Pub/Sub.
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 adalah beberapa contoh kode untuk menetapkan kebijakan untuk suatu topik:
C#
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C# di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui 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 kepada akun utama yang sesuai.
Untuk mengetahui 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 mengetahui informasi selengkapnya, lihat dokumentasi referensi Java API Pub/Sub.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Pub/Sub.
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 mana dari izin yang diberikan yang dapat ditambahkan atau dihapus untuk resource tertentu. Fungsi ini mengambil
nama resource dan kumpulan izin sebagai parameter, serta menampilkan subset
izin.
Berikut adalah beberapa contoh kode untuk menguji izin untuk langganan:
C#
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C# di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui 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 mengetahui informasi selengkapnya, lihat dokumentasi referensi Java API Pub/Sub.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Pub/Sub.
PHP
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan PHP di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API PHP Pub/Sub.
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 contoh kode untuk menguji izin untuk topik:
C#
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C# di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui 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 mengetahui informasi selengkapnya, lihat dokumentasi referensi Java API Pub/Sub.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Pub/Sub.
PHP
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan PHP di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API PHP Pub/Sub.
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 menyesuaikan akses dalam komunikasi lintas project.
Misalkan akun layanan di Project Cloud A ingin memublikasikan pesan ke topik di Project Cloud B. Pertama, aktifkan Pub/Sub API di Project A.
Kedua, berikan izin Edit ke akun layanan di Project Cloud B. Namun, pendekatan ini sering kali terlalu kasar. Anda dapat menggunakan IAM API untuk mencapai tingkat akses yang lebih terperinci.
Misalnya, cuplikan ini menggunakan metode setIamPolicy()
di project-b dan file topic_policy.json
yang telah disiapkan untuk memberikan peran penayang pada akun layanan foobar@
project-a.iam.gserviceaccount.com
dari project-a pada topik projects/
project-b/topics/
topic-b:
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. Untuk menawarkan latensi respons yang rendah secara konsisten untuk operasi data (publikasi dan konsumsi pesan), sistem dapat kembali menggunakan kebijakan IAM yang di-cache. Untuk mengetahui informasi tentang kapan perubahan Anda akan berlaku, lihat dokumentasi IAM.