本文說明 Pub/Sub 提供的存取控管選項。
總覽
Pub/Sub 使用 Identity and Access Management (IAM) 控管存取權。
IAM 可讓您將特定角色授予使用者、群組和服務帳戶,讓他們取得執行工作所需的權限。您可以使用Google Cloud 控制台或 IAM API 授予這些 IAM 角色。
在 Pub/Sub 中,您可以在專案層級和個別資源層級設定存取控管。以下是使用 Pub/Sub 存取控管機制的範例:
以資源為單位授予存取權,而非整個 Cloud 專案。
授予有限功能的存取權,例如只能將訊息發布至主題,或只能使用訂閱項目中的訊息,但無法刪除主題或訂閱項目。
將專案中所有 Pub/Sub 資源的存取權授予一組開發人員。
如果您只有單一資源 (例如主題或訂閱項目) 的僅供檢視存取權,則無法使用 Google Cloud 控制台查看該資源。不過,您可以使用 Google Cloud CLI 查看資源。
如需 IAM 及其功能的詳細說明,請參閱「IAM 說明文件」。特別是「授予、變更及撤銷資源的存取權」一文。
Pub/Sub 中的角色類型
與其他 Google Cloud 產品類似,Pub/Sub 支援三種角色:
基本角色:基本角色是 IAM 推出前就存在的角色,權限相當廣泛。如要進一步瞭解基本角色,請參閱「基本角色」。
預先定義的角色:預先定義的角色可授予特定Google Cloud 資源的精細存取權。如要進一步瞭解預先定義的角色,請參閱「預先定義的角色」。Pub/Sub 預先定義的角色會在本節稍後部分介紹。
自訂角色:自訂角色可協助您強制執行最小權限原則。如要進一步瞭解自訂角色,請參閱「自訂角色」。
必要的 Pub/Sub 權限
以下各節列出存取不同 Pub/Sub 資源所需的 Pub/Sub 權限。
主題的必要權限
下表列出與主題相關的各項 Pub/Sub API 方法所需權限。其中會顯示呼叫各個方法所需的 IAM 權限,以及方法的作用說明。
| 方法 | 說明 | 必要權限 |
|---|---|---|
projects.topics.create
|
使用指定名稱建立指定主題。 | 所屬雲端專案的 pubsub.topics.create |
projects.topics.delete
|
刪除指定名稱的主題。 | pubsub.topics.delete
(根據要求的主題) |
projects.topics.get
|
取得主題設定。 | pubsub.topics.get
(根據要求的主題) |
projects.topics.getIamPolicy
|
取得主題的 IAM 存取控管政策。 | pubsub.topics.getIamPolicy
(根據要求的主題) |
projects.topics.list
|
列出所有主題。 | 要求 Cloud 專案的 pubsub.topics.list |
projects.topics.patch
|
更新現有主題。 | pubsub.topics.update
(根據要求的主題) |
projects.topics.publish
|
在主題中新增一或多則訊息。 | pubsub.topics.publish
(根據要求的主題) |
projects.topics.setIamPolicy
|
設定主題的 IAM 存取控管政策。 | pubsub.topics.setIamPolicy
(根據要求的主題) |
projects.topics.testIamPermissions
|
傳回呼叫者對指定資源擁有的權限。 | 無 |
訂閱項目必要權限
下表列出與訂閱項目相關的各項 Pub/Sub API 方法所需權限。其中會說明呼叫各個方法所需的 IAM 權限,以及方法的作用。
| 方法 | 說明 | 必要權限 |
|---|---|---|
projects.subscriptions.acknowledge
|
確認 AcknowledgeRequest 中與 ack_ids 相關聯的訊息。 | pubsub.subscriptions.consume
(針對要求的訂閱項目) |
projects.subscriptions.create
|
建立指定主題的訂閱項目。 | 包含 Cloud 專案的 pubsub.subscriptions.create,以及所要求主題的 pubsub.topics.attachSubscription。如要在專案 A 建立訂閱項目 S,並附加至專案 B 的主題 T,必須在專案 A 和主題 T 授予適當權限。在這種情況下,使用者身分資訊會記錄在專案 B 的稽核記錄中。 |
projects.subscriptions.delete
|
刪除現有訂閱項目。 | pubsub.subscriptions.delete
(針對要求的訂閱項目) |
projects.subscriptions.detach
|
從主題卸離訂閱項目。 | 訂閱項目附加主題的 pubsub.topics.detachSubscription。 |
projects.subscriptions.get
|
取得訂閱項目的設定詳細資料。 | pubsub.subscriptions.get
(針對要求的訂閱項目) |
projects.subscriptions.getIamPolicy
|
取得訂閱項目的 IAM 存取控管政策。 | pubsub.subscriptions.getIamPolicy
(針對要求的訂閱項目) |
projects.subscriptions.list
|
列出相符的訂閱項目。 | 要求 Cloud 專案的 pubsub.subscriptions.list |
projects.subscriptions.modifyAckDeadline
|
修改特定訊息的確認期限。 | pubsub.subscriptions.consume
(針對要求的訂閱項目) |
projects.subscriptions.modifyPushConfig
|
修改指定訂閱項目的 pushConfig。 | pubsub.subscriptions.update
(針對要求的訂閱項目) |
projects.subscriptions.patch
|
更新現有訂閱項目。 | pubsub.subscriptions.update
(針對要求的訂閱項目) |
projects.subscriptions.pull
|
從伺服器提取訊息。 | pubsub.subscriptions.consume
(針對要求的訂閱項目) |
projects.subscriptions.seek
|
將現有訂閱項目跳轉至特定時間點或快照。 | pubsub.subscriptions.consume
(針對要求的訂閱項目) 和 pubsub.snapshots.seek
(針對要求的快照,如果有的話)。 |
projects.subscriptions.setIamPolicy
|
設定訂閱項目的 IAM 存取控管政策。 | pubsub.subscriptions.setIamPolicy
(針對要求的訂閱項目) |
projects.subscriptions.testIamPermissions
|
傳回呼叫者對指定資源擁有的權限。 | 無 |
結構定義的必要權限
下表列出與結構定義相關的各項 Pub/Sub API 方法所需權限。其中會說明呼叫各個方法所需的 IAM 權限,以及方法的作用。
| 方法 | 說明 | 必要權限 |
|---|---|---|
projects.schemas.commit
|
提交新的結構定義修訂版本。 | pubsub.schemas.commit
在要求的結構定義上 |
projects.schemas.create
|
建立結構定義。 | 所屬雲端專案的 pubsub.schemas.create |
projects.schemas.delete
|
刪除結構定義。 | pubsub.schemas.delete
在要求的結構定義上 |
projects.schemas.deleteRevision
|
刪除特定結構定義修訂版本。 | pubsub.schemas.delete
要求結構定義 |
projects.schemas.get
|
取得結構定義。 | pubsub.schemas.get
在要求的結構定義上 |
projects.schemas.getIamPolicy
|
取得結構定義的 IAM 存取控管政策。 | 要求結構定義中的 pubsub.schemas.getIamPolicy |
projects.schemas.list
|
列出專案中的結構定義。 | 要求 Cloud 專案的 pubsub.schemas.list |
projects.schemas.listRevisions
|
列出指定結構定義的所有修訂版本。 | pubsub.schemas.listRevisions
在要求的結構定義上 |
projects.schemas.rollback
|
從先前的修訂版本建立新的結構定義修訂版本。 | pubsub.schemas.rollback
在要求的結構定義上 |
projects.schemas.validate
|
驗證結構定義。 | 所屬雲端專案的 pubsub.schemas.validate |
projects.schemas.validateMessage
|
根據結構定義驗證訊息。 | 所屬雲端專案的 pubsub.schemas.validate |
快照所需權限
下表列出與快照相關的各項 Pub/Sub API 方法所需權限。其中會顯示呼叫各個方法所需的 IAM 權限,以及方法的作用說明。
| REST 方法 | 說明 | 必要權限 |
|---|---|---|
projects.snapshots.create
|
根據要求的訂閱項目建立快照。 | pubsub.snapshots.create
(位於所屬雲端專案) 和 pubsub.subscriptions.consume
權限 (位於來源訂閱項目)。 |
projects.snapshots.delete
|
移除現有快照。 | pubsub.snapshots.delete
在要求的快照上 |
projects.snapshots.getIamPolicy
|
取得快照的 IAM 存取控管政策。 | 所要求快照的 pubsub.snapshots.getIamPolicy |
projects.snapshots.list
|
列出現有快照。 | 要求 Cloud 專案的 pubsub.snapshots.list |
projects.snapshots.patch
|
更新現有快照。 | 所要求快照的 pubsub.snapshots.update |
projects.snapshots.setIamPolicy
|
設定快照的 IAM 存取控管政策。 | 所要求快照的 pubsub.snapshots.setIamPolicy |
projects.snapshots.testIamPermissions
|
傳回呼叫者對指定資源擁有的權限。 | 無 |
可用的 Pub/Sub 角色
下表列出所有 Pub/Sub 角色,以及與各角色相關聯的權限:
| 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:
|
|
Service agent roles
Service agent roles should only be granted to service agents.
| Role | Permissions |
|---|---|
Cloud Pub/Sub Service Agent( Grants Cloud Pub/Sub Service Account access to manage resources. |
|
透過 Google Cloud 控制台控管存取權
您可以使用 Google Cloud 控制台管理主題和專案的存取控管。
如要在專案層級設定存取控管選項,請按照下列步驟操作:
前往 Google Cloud 控制台的「IAM」頁面。
選取專案。
按一下「 新增」。
輸入一或多個主體名稱。
在「Select a role」(選取角色) 清單中,選取要授予的角色。
按一下 [儲存]。
確認列出的主體具備您所授予的角色。
如要設定主題和訂閱項目的存取控管機制,請按照下列步驟操作:
前往 Google Cloud 控制台的 Pub/Sub「Topics」(主題) 清單。
視需要選取已啟用 Pub/Sub 的專案。
執行下列其中一個步驟:
如要為一或多個主題設定角色,請選取主題。
如要為附加至主題的訂閱項目設定角色,請按一下主題 ID。在「Topic details」(主題詳細資料) 頁面中,按一下訂閱項目 ID。「Subscription details」(訂閱項目詳細資料) 頁面隨即顯示。
如果資訊面板處於隱藏狀態,請按一下「顯示資訊面板」。
在「Permissions」(權限) 分頁中,按一下 「Add principal」(新增主體)。
輸入一或多個主體名稱。
在「Select a role」(選取角色) 清單中,選取要授予的角色。
按一下 [儲存]。
透過 IAM API 控管存取權
Pub/Sub IAM API 可讓您設定及取得專案中個別主題和訂閱項目的政策,並測試使用者對特定資源的權限。與一般 Pub/Sub 方法一樣,您可以透過用戶端程式庫、API Explorer 或直接透過 HTTP 叫用 IAM API 方法。
請注意,您無法使用 Pub/Sub IAM API 管理 Google Cloud 專案層級的政策。
以下各節提供範例,說明如何設定及取得政策,以及如何測試呼叫端對特定資源具備哪些權限。
取得保險
getIamPolicy() 方法可讓您取得現有政策。這個方法會傳回 JSON 物件,其中包含與資源相關聯的政策。
以下是取得訂閱項目政策的程式碼範例:
C#
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 C# 設定操作說明進行操作。詳情請參閱 Pub/Sub C# API 參考文件。
gcloud
取得訂閱政策:
gcloud pubsub subscriptions get-iam-policy \ projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \ --format json
輸出內容:
{ "etag": "BwUjMhCsNvY=", "bindings": [ { "role": "roles/pubsub.admin", "members": [ "user:user-1@gmail.com" ] }, { "role": "roles/pubsub.editor", "members": [ "serviceAccount:service-account-2@", "user:user-3@gmail.com" ] } ] }
Go
下列範例使用 Go Pub/Sub 用戶端程式庫的主要版本 (v2)。如果您仍在使用第 1 版程式庫,請參閱第 2 版遷移指南。如要查看第 1 版程式碼範例清單,請參閱 已淘汰的程式碼範例。
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Go 設定操作說明進行操作。詳情請參閱 Pub/Sub Go API 參考文件。
Java
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Java 設定操作說明進行操作。詳情請參閱 Pub/Sub Java API 參考文件。
Node.js
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Node.js 設定操作說明進行操作。詳情請參閱 Pub/Sub Node.js API 參考文件。
Node.js
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Node.js 設定操作說明進行操作。詳情請參閱 Pub/Sub Node.js API 參考文件。
PHP
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 PHP 設定操作說明進行操作。詳情請參閱 Pub/Sub PHP API 參考文件。
Python
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Python 設定操作說明進行操作。詳情請參閱 Pub/Sub Python API 參考文件。
小茹
下列範例使用 Ruby Pub/Sub 用戶端程式庫第 3 版。如果您仍在使用第 2 版程式庫,請參閱 第 3 版遷移指南。如要查看 Ruby 第 2 版程式碼範例清單,請參閱 已淘汰的程式碼範例。
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Ruby 設定操作說明進行操作。詳情請參閱 Pub/Sub Ruby API 參考文件。
以下是取得主題政策的程式碼範例:C#
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 C# 設定操作說明進行操作。詳情請參閱 Pub/Sub C# API 參考文件。
gcloud
取得主題政策:
gcloud pubsub topics get-iam-policy \ projects/${PROJECT}/topics/${TOPIC} \ --format json
輸出:
{ "etag": "BwUjMhCsNvY=", "bindings": [ { "role":" roles/pubsub.viewer", "members": [ "user:user-1@gmail.com" ] } ] }
Go
下列範例使用 Go Pub/Sub 用戶端程式庫的主要版本 (v2)。如果您仍在使用第 1 版程式庫,請參閱第 2 版遷移指南。如要查看第 1 版程式碼範例清單,請參閱 已淘汰的程式碼範例。
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Go 設定操作說明進行操作。詳情請參閱 Pub/Sub Go API 參考文件。
Java
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Java 設定操作說明進行操作。詳情請參閱 Pub/Sub Java API 參考文件。
Node.js
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Node.js 設定操作說明進行操作。詳情請參閱 Pub/Sub Node.js API 參考文件。
PHP
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 PHP 設定操作說明進行操作。詳情請參閱 Pub/Sub PHP API 參考文件。
Python
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Python 設定操作說明進行操作。詳情請參閱 Pub/Sub Python API 參考文件。
小茹
下列範例使用 Ruby Pub/Sub 用戶端程式庫第 3 版。如果您仍在使用第 2 版程式庫,請參閱 第 3 版遷移指南。如要查看 Ruby 第 2 版程式碼範例清單,請參閱 已淘汰的程式碼範例。
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Ruby 設定操作說明進行操作。詳情請參閱 Pub/Sub Ruby API 參考文件。
設定政策
setIamPolicy() 方法可讓您將政策附加至資源。setIamPolicy() 方法會採用 SetIamPolicyRequest,其中包含要設定的政策,以及政策附加的資源。它會傳回產生的政策。
以下是為訂閱項目設定政策的程式碼範例:
C#
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 C# 設定操作說明進行操作。詳情請參閱 Pub/Sub C# API 參考文件。
gcloud
1. 儲存訂閱項目的政策。
gcloud pubsub subscriptions get-iam-policy \ projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \ --format json > subscription_policy.json
2. 開啟 subscription_policy.json,並將適當的角色授予適當的主體,藉此更新繫結。如要進一步瞭解如何使用 subscription_policy.json 檔案,請參閱 IAM 說明文件中的「
政策」。
{ "etag": "BwUjMhCsNvY=", "bindings": [ { "role": "roles/pubsub.admin", "members": [ "user:user-1@gmail.com" ] }, { "role": "roles/pubsub.editor", "members": [ "serviceAccount:service-account-2@" ] } ] }
3. 套用新的訂閱政策。
gcloud pubsub subscriptions set-iam-policy \ projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \ subscription_policy.json
Go
下列範例使用 Go Pub/Sub 用戶端程式庫的主要版本 (v2)。如果您仍在使用第 1 版程式庫,請參閱第 2 版遷移指南。如要查看第 1 版程式碼範例清單,請參閱 已淘汰的程式碼範例。
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Go 設定操作說明進行操作。詳情請參閱 Pub/Sub Go API 參考文件。
Java
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Java 設定操作說明進行操作。詳情請參閱 Pub/Sub Java API 參考文件。
Node.js
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Node.js 設定操作說明進行操作。詳情請參閱 Pub/Sub Node.js API 參考文件。
PHP
Python
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Python 設定操作說明進行操作。詳情請參閱 Pub/Sub Python API 參考文件。
小茹
下列範例使用 Ruby Pub/Sub 用戶端程式庫第 3 版。如果您仍在使用第 2 版程式庫,請參閱 第 3 版遷移指南。如要查看 Ruby 第 2 版程式碼範例清單,請參閱 已淘汰的程式碼範例。
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Ruby 設定操作說明進行操作。詳情請參閱 Pub/Sub Ruby API 參考文件。
以下是設定主題政策的程式碼範例:
C#
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 C# 設定操作說明進行操作。詳情請參閱 Pub/Sub C# API 參考文件。
gcloud
1. 儲存主題的政策。
gcloud pubsub topics get-iam-policy \ projects/${PROJECT}/topics/${TOPIC} \ --format json > topic_policy.json
2. 開啟 topic_policy.json,並將適當的角色授予適當的主體,藉此更新繫結。如要進一步瞭解如何使用 subscription_policy.json 檔案,請參閱 IAM 說明文件中的「
政策」。
{ "etag": "BwUjMhCsNvY=", "bindings": [ { "role": "roles/pubsub.editor", "members": [ "user:user-1@gmail.com", "user:user-2@gmail.com" ] } ] }
3. 套用新的主題政策。
gcloud pubsub topics set-iam-policy \ projects/${PROJECT}/topics/${TOPIC} \ topic_policy.json
Go
下列範例使用 Go Pub/Sub 用戶端程式庫的主要版本 (v2)。如果您仍在使用第 1 版程式庫,請參閱第 2 版遷移指南。如要查看第 1 版程式碼範例清單,請參閱 已淘汰的程式碼範例。
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Go 設定操作說明進行操作。詳情請參閱 Pub/Sub Go API 參考文件。
Java
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Java 設定操作說明進行操作。詳情請參閱 Pub/Sub Java API 參考文件。
Node.js
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Node.js 設定操作說明進行操作。詳情請參閱 Pub/Sub Node.js API 參考文件。
PHP
Python
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Python 設定操作說明進行操作。詳情請參閱 Pub/Sub Python API 參考文件。
小茹
下列範例使用 Ruby Pub/Sub 用戶端程式庫第 3 版。如果您仍在使用第 2 版程式庫,請參閱 第 3 版遷移指南。如要查看 Ruby 第 2 版程式碼範例清單,請參閱 已淘汰的程式碼範例。
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Ruby 設定操作說明進行操作。詳情請參閱 Pub/Sub Ruby API 參考文件。
測試權限
您可以使用 testIamPermissions() 方法,檢查可為指定資源新增或移除哪些指定權限。這項方法會將資源名稱和一組權限做為參數,並傳回權限子集。
以下是測試訂閱項目權限的程式碼範例:
C#
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 C# 設定操作說明進行操作。詳情請參閱 Pub/Sub C# API 參考文件。
gcloud
gcloud iam list-testable-permissions \
https://pubsub.googleapis.com/v1/projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \
--format json輸出內容:
[
{
"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
下列範例使用 Go Pub/Sub 用戶端程式庫的主要版本 (v2)。如果您仍在使用第 1 版程式庫,請參閱第 2 版遷移指南。如要查看第 1 版程式碼範例清單,請參閱 已淘汰的程式碼範例。
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Go 設定操作說明進行操作。詳情請參閱 Pub/Sub Go API 參考文件。
Java
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Java 設定操作說明進行操作。詳情請參閱 Pub/Sub Java API 參考文件。
Node.js
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Node.js 設定操作說明進行操作。詳情請參閱 Pub/Sub Node.js API 參考文件。
PHP
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 PHP 設定操作說明進行操作。詳情請參閱 Pub/Sub PHP API 參考文件。
Python
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Python 設定操作說明進行操作。詳情請參閱 Pub/Sub Python API 參考文件。
小茹
下列範例使用 Ruby Pub/Sub 用戶端程式庫第 3 版。如果您仍在使用第 2 版程式庫,請參閱 第 3 版遷移指南。如要查看 Ruby 第 2 版程式碼範例清單,請參閱 已淘汰的程式碼範例。
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Ruby 設定操作說明進行操作。詳情請參閱 Pub/Sub Ruby API 參考文件。
以下是測試主題權限的程式碼範例:
C#
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 C# 設定操作說明進行操作。詳情請參閱 Pub/Sub C# API 參考文件。
gcloud
gcloud iam list-testable-permissions \
https://pubsub.googleapis.com/v1/projects/${PROJECT}/topics/${TOPIC} \
--format json輸出內容
[
{
"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
下列範例使用 Go Pub/Sub 用戶端程式庫的主要版本 (v2)。如果您仍在使用第 1 版程式庫,請參閱第 2 版遷移指南。如要查看第 1 版程式碼範例清單,請參閱 已淘汰的程式碼範例。
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Go 設定操作說明進行操作。詳情請參閱 Pub/Sub Go API 參考文件。
Java
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Java 設定操作說明進行操作。詳情請參閱 Pub/Sub Java API 參考文件。
Node.js
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Node.js 設定操作說明進行操作。詳情請參閱 Pub/Sub Node.js API 參考文件。
PHP
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 PHP 設定操作說明進行操作。詳情請參閱 Pub/Sub PHP API 參考文件。
Python
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Python 設定操作說明進行操作。詳情請參閱 Pub/Sub Python API 參考文件。
小茹
下列範例使用 Ruby Pub/Sub 用戶端程式庫第 3 版。如果您仍在使用第 2 版程式庫,請參閱 第 3 版遷移指南。如要查看 Ruby 第 2 版程式碼範例清單,請參閱 已淘汰的程式碼範例。
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Ruby 設定操作說明進行操作。詳情請參閱 Pub/Sub Ruby API 參考文件。
跨專案通訊
Pub/Sub IAM 適合用於微調跨專案通訊的存取權。
發布至其他專案中的主題
假設您希望專案 A 中的服務帳戶將訊息發布至專案 B 中的主題。如要啟用這個情境,請按照下列步驟操作:
在專案 A 啟用 Pub/Sub API。
在專案 B 或主題上,將
pubsub.topics.publish權限授予服務帳戶。Pub/Sub 發布者 (roles/pubsub.publisher) 角色包含這項權限。
在其他專案中建立訂閱項目
假設您希望專案 A 中的服務帳戶,在專案 A 中為專案 B 中的主題建立訂閱項目。如要啟用這個情境,請按照下列步驟操作:
在兩項專案中啟用 Pub/Sub API。
將下列權限授予服務帳戶:
- 專案 A 的
pubsub.subscriptions.create。 - 專案 B 中主題的
pubsub.topics.attachSubscription。
Pub/Sub 編輯者 (
roles/pubsub.editor) 角色包含這些權限。- 專案 A 的
在專案 A 中建立訂閱項目,並附加至專案 B 中的主題。
接收其他專案中主題的訊息
假設您希望專案 A 中的服務帳戶接收專案 B 中訂閱項目的訊息。如要啟用這個情境,請按照下列步驟操作:
在專案 A 啟用 Pub/Sub API。
將專案 B 或訂閱項目的 Pub/Sub 訂閱者 (
roles/pubsub.subscriber) 角色授予服務帳戶。
部分可用性行為
授權檢查取決於 IAM 子系統。為了持續提供低回應延遲時間的資料作業 (發布和訊息消耗),系統可能會改用快取的 IAM 政策。如要瞭解變更何時生效,請參閱 IAM 說明文件。
後續步驟
- 如果無法存取或驗證 Pub/Sub 資源,請參閱「一般疑難排解」。