このドキュメントでは、Pub/Sub で使用可能なアクセス制御オプションについて説明します。
概要
Pub/Sub は、Identity and Access Management(IAM)を使用してアクセス制御を行います。
Pub/Sub では、アクセス制御をプロジェクト レベルと個々のリソースレベルで構成できます。次に例を示します。
Cloud プロジェクト全体ではなく、トピックごと、またはサブスクリプションごとにアクセス権を付与します。
単一のトピックまたはサブスクリプションに対する閲覧権限がある場合、Google Cloud Console を使用してそのトピックまたはサブスクリプションを表示することはできません。代わりに、Google Cloud CLI を使用できます。
機能が限定されたアクセス権を付与します。たとえば、トピックにメッセージをパブリッシュするのみのアクセス権、サブスクリプションからのメッセージを使用するのみで、トピックやサブスクリプションを削除できないアクセス権などです。
プロジェクト内のすべての Pub/Sub リソースに対するアクセス権限を、デベロッパーのグループに付与します。
IAM とその機能の詳細については、IAM のドキュメントをご覧ください。特に、リソースへのアクセス権の付与、変更、取り消しをご覧ください。
すべての Pub/Sub メソッドで、呼び出し元に一定の権限が必要になります。Pub/Sub IAM でサポートされる権限とロールのリストについては、次のロールセクションをご覧ください。
権限とロール
このセクションでは、Pub/Sub IAM でサポートされる権限とロールを簡単に説明します。
必要な権限
呼び出し元が各メソッドを呼び出す際に必要となる権限のリストを次の表に示します。
REST メソッド | 必要な権限 |
---|---|
projects.snapshots.create |
含まれている Cloud プロジェクトに対する pubsub.snapshots.create 権限と、ソース サブスクリプションに対する pubsub.subscriptions.consume 権限。 |
projects.snapshots.delete |
リクエストされたスナップショットに対する pubsub.snapshots.delete 。 |
projects.snapshots.getIamPolicy |
リクエストされたスナップショットに対する pubsub.snapshots.getIamPolicy 。 |
projects.snapshots.list |
リクエストされた Cloud プロジェクトに対する pubsub.snapshots.list 。 |
projects.snapshots.patch |
リクエストされたスナップショットに対する pubsub.snapshots.update 。 |
projects.snapshots.setIamPolicy |
リクエストされたスナップショットに対する pubsub.snapshots.setIamPolicy 。 |
projects.snapshots.testIamPermissions |
なし |
projects.subscriptions.acknowledge |
リクエストされたサブスクリプションに対する pubsub.subscriptions.consume 。 |
projects.subscriptions.create |
含まれている Cloud プロジェクトに対する pubsub.subscriptions.create と、リクエストされたトピックに対する pubsub.topics.attachSubscription 。プロジェクト A 内で、プロジェクト B のトピック T に対するサブスクリプションを作成するには、プロジェクト A とトピック T の両方に対する適切な権限が付与されている必要があります。この場合、ユーザー ID 情報はプロジェクト B の監査ログに記録できます。 |
projects.subscriptions.delete |
リクエストされたサブスクリプションに対する pubsub.subscriptions.delete 。 |
projects.subscriptions.get |
リクエストされたサブスクリプションに対する pubsub.subscriptions.get 。 |
projects.subscriptions.getIamPolicy |
リクエストされたサブスクリプションに対する pubsub.subscriptions.getIamPolicy 。 |
projects.subscriptions.list |
リクエストされた Cloud プロジェクトに対する pubsub.subscriptions.list 。 |
projects.subscriptions.modifyAckDeadline |
リクエストされたサブスクリプションに対する pubsub.subscriptions.consume 。 |
projects.subscriptions.modifyPushConfig |
リクエストされたサブスクリプションに対する 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 |
リクエストされたサブスクリプションに対する pubsub.subscriptions.setIamPolicy 。 |
projects.subscriptions.testIamPermissions |
なし |
projects.topics.create |
含まれている Cloud プロジェクトに対する pubsub.topics.create 。 |
projects.topics.delete |
リクエストされたトピックに対する pubsub.topics.delete 。 |
projects.topics.detachSubscription |
リクエストされたトピックに対する pubsub.topics.detachSubscription 。 |
projects.topics.get |
リクエストされたトピックに対する pubsub.topics.get 。 |
projects.topics.getIamPolicy |
リクエストされたトピックに対する 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 |
リクエストされたトピックに対する pubsub.topics.setIamPolicy 。 |
projects.topics.subscriptions.list |
リクエストされたトピックに対する pubsub.topics.get 。 |
projects.topics.testIamPermissions |
なし |
ロール
次の表に、Pub/Sub IAM のロールと、各ロールに含まれるすべての権限の対応するリストを示します。各権限は、それぞれ特定のリソースタイプに適用されます。
多くの一般的なユースケースには、これらの事前構成された役割で対応できます。ただし、権限のカスタムセットが含まれた役割が必要になる場合もあります。たとえば、ユーザーがプロジェクト内でのサブスクリプションの作成は行えるものの、プロジェクト内の既存のトピックやサブスクリプションの削除や更新は行えないようにするロールが必要になるといった場合です。この場合は、要件を満たすIAM カスタムロールを作成できます。
ロール | 含まれている権限 | リソースタイプ |
---|---|---|
roles/pubsub.publisher |
pubsub.topics.publish |
トピック |
roles/pubsub.subscriber |
pubsub.snapshots.seek |
スナップショット |
pubsub.subscriptions.consume |
サブスクリプション | |
pubsub.topics.attachSubscription |
トピック | |
roles/pubsub.viewer またはroles/viewer |
pubsub.snapshots.get |
スナップショット |
pubsub.snapshots.list |
プロジェクト | |
pubsub.subscriptions.get |
サブスクリプション | |
pubsub.subscriptions.list |
プロジェクト | |
pubsub.topics.get |
トピック | |
pubsub.topics.list |
プロジェクト | |
resourcemanager.projects.get |
プロジェクト | |
servicemanagement.projectSettings.get |
プロジェクト | |
serviceusage.quotas.get |
プロジェクト | |
serviceusage.services.get |
プロジェクト | |
serviceusage.services.list |
プロジェクト | |
roles/pubsub.editor またはroles/editor |
上記のロールの権限が含まれます: roles/pubsub.publisher 、roles/pubsub.subscriber 、roles/pubsub.viewer またはroles/viewer 。 |
|
pubsub.snapshots.create |
プロジェクト | |
pubsub.snapshots.delete |
スナップショット | |
pubsub.snapshots.update |
スナップショット | |
pubsub.subscriptions.create
|
プロジェクト | |
pubsub.subscriptions.delete |
サブスクリプション | |
pubsub.subscriptions.update |
サブスクリプション | |
pubsub.topics.create |
プロジェクト | |
pubsub.topics.delete |
トピック | |
pubsub.topics.detachSubscription |
トピック | |
pubsub.topics.update |
トピック | |
pubsub.topics.updateTag |
トピック | |
roles/pubsub.admin またはroles/owner |
上記のロールの権限が含まれます: roles/pubsub.publisher 、roles/pubsub.subscriber 、roles/pubsub.viewer 、roles/viewer 、roles/pubsub.editor または roles/editor です。 |
|
pubsub.snapshots.getIamPolicy |
スナップショット | |
pubsub.snapshots.setIamPolicy |
スナップショット | |
pubsub.subscriptions.getIamPolicy |
サブスクリプション | |
pubsub.subscriptions.setIamPolicy |
サブスクリプション | |
pubsub.topics.getIamPolicy |
トピック | |
pubsub.topics.setIamPolicy |
トピック |
役割 roles/owner、roles/editor、roles/viewer には、他の Google Cloud サービスに対する権限も含まれます。
Google Cloud Console によるアクセス制御
GCP Console を使用すると、トピックやプロジェクトのアクセス制御を管理できます。
プロジェクト レベルでアクセス制御を設定するには、次の手順に沿って操作します。
コンソールで [IAM] ページに移動します。
プロジェクトを選択します。
[
追加] をクリックします。プリンシパル名を 1 つ以上入力します。
[ロールを選択] リストで、付与するロールを選択します。
[保存] をクリックします。
付与したロールにそのプリンシパルがリストされているかを確認します。
トピックとサブスクリプションに対するアクセス制御を設定するには、次の手順に沿って操作します。
Console で、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#
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の 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@appspot.gserviceaccount.com", "user:user-3@gmail.com" } ] }
Go
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の 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
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の 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 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
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の 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@appspot.gserviceaccount.com" } ] }
3. 新しいサブスクリプション ポリシーを適用します。
gcloud pubsub subscriptions set-iam-policy \ projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \ subscription_policy.json
Go
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の 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
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の 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 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
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の 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 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
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の 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 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
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Ruby の設定手順を実施してください。詳細については、Pub/Sub Ruby API のリファレンス ドキュメントをご覧ください。
サンプル ユースケース: プロジェクト間通信
Pub/Sub IAM は、プロジェクト間の通信でアクセス権を適切に調整するのに便利です。たとえば、Cloud Project A のサービス アカウントで Cloud Project B のトピックにメッセージをパブリッシュする必要があるとします。これは、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 topic topic-b. bindings: - members: - serviceAccount:foobar@project-a.iam.gserviceaccount.com role: roles/pubsub.publisher etag: BwWGrQYX6R4=
部分的に可用性を維持する動作
承認チェックは IAM サブシステムによって異なります。データ オペレーション(公開、メッセージの使用)のレスポンス レイテンシを低くするため、システムがキャッシュ内の IAM ポリシーにフォールバックする場合があります。変更が有効になるタイミングについては IAM のドキュメントをご覧ください。