このドキュメントでは、Pub/Sub で使用可能なアクセス制御オプションについて説明します。
概要
Pub/Sub は、アクセス制御に Identity and Access Management(IAM)を使用します。
IAM を使用すると、ユーザー、グループ、サービス アカウントに特定のロールを付与し、タスクの実行に必要な権限を付与できます。これらの IAM ロールは、Google Cloud コンソールまたは IAM API を使用して付与できます。
Pub/Sub では、アクセス制御をプロジェクト レベルと個々のリソースレベルで構成できます。Pub/Sub アクセス制御の使用例を次に示します。
Cloud プロジェクト全体ではなく、リソースごとにアクセス権を付与します。
機能が限定されたアクセス権を付与します。たとえば、トピックにメッセージをパブリッシュするのみのアクセス権、サブスクリプションからのメッセージを使用するのみで、トピックやサブスクリプションを削除できないアクセス権などです。
プロジェクト内のすべての Pub/Sub リソースに対するアクセス権限を、デベロッパーのグループに付与します。
トピックやサブスクリプションなどの単一のリソースに対する表示専用アクセス権がある場合、Google Cloud コンソールを使用してそのリソースを表示することはできません。代わりに、Google Cloud CLI を使用してリソースを表示できます。
IAM とその機能の詳細については、IAM のドキュメントをご覧ください。特に、リソースへのアクセス権の付与、変更、取り消しをご覧ください。
Pub/Sub のロール タイプ
他の Google Cloud プロダクトと同様に、Pub/Sub は次の 3 種類のロールをサポートしています。
基本ロール: 基本ロールは、IAM の導入前に存在していた高い権限を持つロールです。基本ロールの詳細については、基本ロールをご覧ください。
事前定義ロール: 事前定義ロールを使用すると、特定のGoogle Cloud リソースに対してきめ細かいアクセス権を付与できます。事前定義ロールの詳細については、事前定義ロールをご覧ください。Pub/Sub の事前定義ロールについては、このセクションの後半で説明します。
カスタムロール: カスタムロールは、最小権限の原則を適用するのに役立ちます。カスタムロールの詳細については、カスタムロールをご覧ください。
必要な Pub/Sub 権限
以降のセクションでは、さまざまな Pub/Sub リソースにアクセスするために必要な Pub/Sub 権限について説明します。
トピックに必要な権限
次の表に、トピックに関連する各 Pub/Sub API メソッドに必要な権限の概要を示します。各メソッドの呼び出しに必要な IAM 権限と、メソッドの説明が表示されます。
メソッド | 説明 | 必要な権限 |
---|---|---|
projects.topics.create
|
指定された名前で指定されたトピックを作成します。 | 含まれている Cloud プロジェクトに対する 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
|
1 つ以上のメッセージをトピックに追加します。 | リクエストされたトピックに対する 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 で、プロジェクト B のトピック T に関連付けられたサブスクリプション S を作成するには、プロジェクト A とトピック T の両方に対する適切な権限が付与されている必要があります。この場合、ユーザー ID 情報はプロジェクト B の監査ログに記録できます。 |
projects.subscriptions.delete
|
既存の定期購入を削除します。 | リクエストされたサブスクリプションに対する pubsub.subscriptions.delete |
projects.subscriptions.detach
|
このトピックからサブスクリプションの接続を解除します。 | サブスクリプションに対する pubsub.subscriptions.detach |
projects.subscriptions.get
|
サブスクリプションの設定の詳細を取得します。 | リクエストされたサブスクリプションに対する pubsub.subscriptions.get |
projects.subscriptions.getIamPolicy
|
サブスクリプションの IAM アクセス制御ポリシーを取得します。 | リクエストされたサブスクリプションに対する pubsub.subscriptions.getIamPolicy |
projects.subscriptions.list
|
一致するサブスクリプションのリストを表示します。 | リクエストされた Cloud プロジェクトに対する pubsub.subscriptions.list |
projects.subscriptions.modifyAckDeadline
|
特定のメッセージの ACK 期限を変更します。 | リクエストされたサブスクリプションに対する pubsub.subscriptions.consume |
projects.subscriptions.modifyPushConfig
|
指定されたサブスクリプションの pushConfig を変更します。 | リクエストされたサブスクリプションに対する pubsub.subscriptions.update |
projects.subscriptions.patch
|
既存の定期購入を更新します。 | リクエストされたサブスクリプションに対する pubsub.subscriptions.update |
projects.subscriptions.pull
|
サーバーからメッセージを 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
|
新しいスキーマ リビジョンを commit します。 | リクエストされたスキーマに対する pubsub.schemas.commit |
projects.schemas.create
|
スキーマを作成します。 | 含まれている Cloud プロジェクトに対する 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
|
スキーマ定義を検証します。 | 含まれている Cloud プロジェクトに対する pubsub.schemas.validate |
projects.schemas.validateMessage
|
スキーマと比較してメッセージを検証します。 | 含まれている Cloud プロジェクトに対する pubsub.schemas.validate |
スナップショットに必要な権限
次の表に、スナップショットに関連する各 Pub/Sub API メソッドに必要な権限の概要を示します。各メソッドの呼び出しに必要な IAM 権限と、メソッドの説明が表示されます。
REST メソッド | 説明 | 必要な権限 |
---|---|---|
projects.snapshots.create
|
リクエストされたサブスクリプションからスナップショットを作成します。 | 含まれている Cloud プロジェクトに対する 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:
|
|
Google Cloud コンソールによるアクセス制御
Google Cloud Console を使用して、トピックやプロジェクトのアクセス制御を管理できます。
プロジェクト レベルでアクセス制御を設定するには、次の手順に沿って操作します。
Google Cloud コンソールの [IAM] ページに移動します。
プロジェクトを選択します。
[
追加] をクリックします。プリンシパル名を 1 つ以上入力します。
[ロールを選択] リストで、付与するロールを選択します。
[保存] をクリックします。
付与したロールにそのプリンシパルがリストされているかを確認します。
トピックとサブスクリプションに対するアクセス制御を設定するには、次の手順に沿って操作します。
Google Cloud コンソールで、Pub/Sub の [トピック] リストに移動します。
必要に応じて、Pub/Sub が有効なプロジェクトを選択します。
次のいずれかの手順に沿って操作します。
1 つ以上のトピックにロールを設定するには、トピックを選択します。
トピックに関連付けられたサブスクリプションのロールを設定するには、トピック ID をクリックします。[トピックの詳細] ページで、サブスクリプション ID をクリックします。[サブスクリプションの詳細] ページが表示されます。
情報パネルが表示されていない場合は、[情報パネルを表示] をクリックします。
[権限] タブで、[
プリンシパルを追加] をクリックします。プリンシパル名を 1 つ以上入力します。
[ロールを選択] リストで、付与するロールを選択します。
[保存] をクリックします。
IAM API によるアクセス制御
Pub/Sub IAM API を使用して、プロジェクト内の個々のトピックとサブスクリプションに対し、ポリシーを設定および取得して、所定のリソースに対するユーザーの権限をテストできます。通常の Pub/Sub メソッドと同様に、IAM API のメソッドはクライアント ライブラリや API Explorer を使用するか、または HTTP を介して直接呼び出すことができます。
Pub/Sub IAM API を使用して、プロジェクト レベルでポリシーを管理することはできません。 Google Cloud
次のセクションでは、ポリシーの設定および取得方法、所定のリソースに対して呼び出し元がどの権限を持っているかをテストする方法について説明します。
ポリシーの取得
getIamPolicy()
メソッドを使用すると、既存のポリシーを取得できます。このメソッドでは、リソースに関連付けられたポリシーを含む JSON オブジェクトが返されます。
サブスクリプションのポリシーを取得するするためのサンプルコードを以下に示します。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の C# の設定手順を実施してください。詳細については、Pub/Sub C# API リファレンス ドキュメントをご覧ください。
サブスクリプション ポリシーを取得します。
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@appspot.gserviceaccount.com", "user:user-3@gmail.com" } ] }
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Go の設定手順を実施してください。詳細については、Pub/Sub Go API のリファレンス ドキュメントをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Java の設定手順を実施してください。詳細については、Pub/Sub Java API のリファレンス ドキュメントをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Node.js の設定手順を実施してください。詳細については、Pub/Sub Node.js API リファレンス ドキュメントをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Node.js の設定手順を実施してください。詳細については、Pub/Sub Node.js API リファレンス ドキュメントをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の PHP の設定手順を実施してください。詳細については、Pub/Sub PHP API リファレンス ドキュメントをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Python の設定手順を実施してください。詳細については、Pub/Sub Python API のリファレンス ドキュメントをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Ruby の設定手順を実施してください。詳細については、Pub/Sub Ruby API リファレンス ドキュメントをご覧ください。
トピックのポリシーを取得するためのサンプルコードを以下に示します。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の C# の設定手順を実施してください。詳細については、Pub/Sub C# API リファレンス ドキュメントをご覧ください。
トピックのポリシーを取得するには、次のコマンドを実行します。
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 の設定手順を実施してください。詳細については、Pub/Sub Go API のリファレンス ドキュメントをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Java の設定手順を実施してください。詳細については、Pub/Sub Java API のリファレンス ドキュメントをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Node.js の設定手順を実施してください。詳細については、Pub/Sub Node.js API リファレンス ドキュメントをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の PHP の設定手順を実施してください。詳細については、Pub/Sub PHP API リファレンス ドキュメントをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Python の設定手順を実施してください。詳細については、Pub/Sub Python API のリファレンス ドキュメントをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Ruby の設定手順を実施してください。詳細については、Pub/Sub Ruby API リファレンス ドキュメントをご覧ください。
ポリシーの設定
setIamPolicy()
メソッドを使用すると、ポリシーをリソースに接続できます。setIamPolicy()
メソッドは SetIamPolicyRequest
を受け取ります。ここには、設定されるポリシーと、ポリシーが接続されるリソースが含まれています。これにより、結果のポリシーが返されます。
サブスクリプションにポリシーを設定するためのサンプルコードを以下に示します。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の C# の設定手順を実施してください。詳細については、Pub/Sub C# API リファレンス ドキュメントをご覧ください。
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@appspot.gserviceaccount.com" } ] }
3. 新しいサブスクリプション ポリシーを適用します。
gcloud pubsub subscriptions set-iam-policy \ projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \ subscription_policy.json
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Go の設定手順を実施してください。詳細については、Pub/Sub Go API のリファレンス ドキュメントをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Java の設定手順を実施してください。詳細については、Pub/Sub Java API のリファレンス ドキュメントをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Node.js の設定手順を実施してください。詳細については、Pub/Sub Node.js API リファレンス ドキュメントをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Python の設定手順を実施してください。詳細については、Pub/Sub Python API のリファレンス ドキュメントをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Ruby の設定手順を実施してください。詳細については、Pub/Sub Ruby API リファレンス ドキュメントをご覧ください。
トピックにポリシーを設定するためのサンプルコードを以下に示します。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の C# の設定手順を実施してください。詳細については、Pub/Sub C# API リファレンス ドキュメントをご覧ください。
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 の設定手順を実施してください。詳細については、Pub/Sub Go API のリファレンス ドキュメントをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Java の設定手順を実施してください。詳細については、Pub/Sub Java API のリファレンス ドキュメントをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Node.js の設定手順を実施してください。詳細については、Pub/Sub Node.js API リファレンス ドキュメントをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Python の設定手順を実施してください。詳細については、Pub/Sub Python API のリファレンス ドキュメントをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Ruby の設定手順を実施してください。詳細については、Pub/Sub Ruby API リファレンス ドキュメントをご覧ください。
権限のテスト
testIamPermissions()
メソッドを使用して、特定の権限のうち特定のリソースに対して追加または削除できる権限を確認できます。これはパラメータとしてリソース名と一連の権限を取得し、権限のサブセットを返します。
サブスクリプションに対する権限をテストするためのサンプルコードを以下に示します。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の C# の設定手順を実施してください。詳細については、Pub/Sub C# API リファレンス ドキュメントをご覧ください。
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 の設定手順を実施してください。詳細については、Pub/Sub Go API のリファレンス ドキュメントをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Java の設定手順を実施してください。詳細については、Pub/Sub Java API のリファレンス ドキュメントをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Node.js の設定手順を実施してください。詳細については、Pub/Sub Node.js API リファレンス ドキュメントをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の PHP の設定手順を実施してください。詳細については、Pub/Sub PHP API リファレンス ドキュメントをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Python の設定手順を実施してください。詳細については、Pub/Sub Python API のリファレンス ドキュメントをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Ruby の設定手順を実施してください。詳細については、Pub/Sub Ruby API リファレンス ドキュメントをご覧ください。
トピックに対する権限をテストするためのサンプルコードを以下に示します。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の C# の設定手順を実施してください。詳細については、Pub/Sub C# API リファレンス ドキュメントをご覧ください。
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 の設定手順を実施してください。詳細については、Pub/Sub Go API のリファレンス ドキュメントをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Java の設定手順を実施してください。詳細については、Pub/Sub Java API のリファレンス ドキュメントをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Node.js の設定手順を実施してください。詳細については、Pub/Sub Node.js API リファレンス ドキュメントをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の PHP の設定手順を実施してください。詳細については、Pub/Sub PHP API リファレンス ドキュメントをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Python の設定手順を実施してください。詳細については、Pub/Sub Python API のリファレンス ドキュメントをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Ruby の設定手順を実施してください。詳細については、Pub/Sub Ruby API リファレンス ドキュメントをご覧ください。
プロジェクト間の通信
Pub/Sub IAM は、プロジェクト間の通信でアクセス権を適切に調整するのに便利です。
Cloud Project A のサービス アカウントで Cloud Project B のトピックにメッセージをパブリッシュする必要があるとします。まず、Project A で Pub/Sub API を有効にします。
次に、Cloud Project B でサービス アカウントに編集権限を付与します。ただし、このアプローチでは大まかすぎることがよくあります。IAM API を使用すれば、アクセスレベルをより詳細に調整できます。
たとえば、次のスニペットでは、project-b の setIamPolicy()
メソッドと用意されている topic_policy.json
ファイを使用して、トピック projects/
project-b/topics/
topic-b でのパブリッシャーのロールを project-a のサービス アカウント foobar@
project-a.iam.gserviceaccount.com
に付与します。
gcloud pubsub topics set-iam-policy \ projects/project-b /topics/topic-b \ topic_policy.json
Updated IAM policy for topictopic-b . bindings: - members: - serviceAccount:foobar@project-a .iam.gserviceaccount.com role: roles/pubsub.publisher etag: BwWGrQYX6R4=
部分的に可用性を維持する動作
承認チェックは IAM サブシステムによって異なります。データ オペレーション(公開、メッセージの使用)のレスポンス レイテンシを低くするため、システムがキャッシュ内の IAM ポリシーにフォールバックする場合があります。変更が有効になるタイミングについては IAM のドキュメントをご覧ください。