In diesem Dokument werden die Zugriffssteuerungsoptionen beschrieben, die in Pub/Sub zur Verfügung stehen.
Übersicht
Pub/Sub verwendet für die Zugriffssteuerung Identity and Access Management (IAM).
Mit IAM können Sie Nutzern, Gruppen und Dienstkonten bestimmte Rollen zuweisen, um ihnen die erforderlichen Berechtigungen zum Ausführen ihrer Aufgaben zu erteilen. Sie können diese IAM-Rollen über dieGoogle Cloud Console oder die IAM API zuweisen.
In Pub/Sub kann die Zugriffssteuerung auf Projektebene und auf Ebene der einzelnen Ressourcen konfiguriert werden. Hier sind einige Beispiele für die Verwendung der Pub/Sub-Zugriffssteuerung:
Gewähren Sie Zugriff auf Ressourcenebene und nicht für das gesamte Cloud-Projekt.
Zugriff mit begrenzten Möglichkeiten gewähren, zum Beispiel zum Veröffentlichen von Nachrichten nur zu einem Thema oder zum Erhalten von Nachrichten aus einem Abo ohne Löschen des Themas oder Abos.
Einer Gruppe von Entwicklern Zugriff auf alle Pub/Sub-Ressourcen innerhalb eines Projekts gewähren
Wenn Sie nur Lesezugriff auf eine einzelne Ressource wie ein Thema oder ein Abo haben, können Sie die Ressource nicht über die Google Cloud Console aufrufen. Stattdessen können Sie die Google Cloud CLI verwenden, um die Ressource aufzurufen.
Eine ausführliche Beschreibung von IAM und den entsprechenden Funktionen finden Sie in der IAM-Dokumentation. Lesen Sie insbesondere den Abschnitt Zugriff auf Ressourcen erteilen, ändern und entziehen.
Rollentypen in Pub/Sub
Ähnlich wie bei anderen Google Cloud -Produkten unterstützt Pub/Sub drei Arten von Rollen:
Einfache Rollen: Einfache Rollen sind Rollen mit weitreichenden Berechtigungen, die es schon vor der Einführung von IAM gab. Weitere Informationen zu einfachen Rollen finden Sie unter Einfache Rollen.
Vordefinierte Rollen: Vordefinierte Rollen ermöglichen einen detaillierten Zugriff auf bestimmteGoogle Cloud -Ressourcen. Weitere Informationen zu vordefinierten Rollen finden Sie unter Vordefinierte Rollen. Die vordefinierten Pub/Sub-Rollen werden in einem späteren Teil dieses Abschnitts beschrieben.
Benutzerdefinierte Rollen: Mit benutzerdefinierten Rollen können Sie das Prinzip der geringsten Berechtigung erzwingen. Weitere Informationen zu benutzerdefinierten Rollen finden Sie unter Benutzerdefinierte Rollen.
Erforderliche Pub/Sub-Berechtigungen
In den folgenden Abschnitten sind die Pub/Sub-Berechtigungen aufgeführt, die für den Zugriff auf verschiedene Pub/Sub-Ressourcen erforderlich sind.
Erforderliche Berechtigungen für Themen
In der folgenden Tabelle sind die erforderlichen Berechtigungen für jede Pub/Sub API-Methode im Zusammenhang mit Themen aufgeführt. Sie zeigt, welche IAM-Berechtigung zum Aufrufen der einzelnen Methoden erforderlich ist, und enthält eine Beschreibung der Funktion der Methode.
| Methode | Beschreibung | Erforderliche Berechtigung |
|---|---|---|
projects.topics.create
|
Erstellt das angegebene Thema mit dem angegebenen Namen. | pubsub.topics.create für das übergeordnete Cloud-Projekt |
projects.topics.delete
|
Löscht das Thema mit dem angegebenen Namen. | pubsub.topics.delete
für das angeforderte Thema |
projects.topics.get
|
Ruft die Konfiguration eines Themas ab. | pubsub.topics.get
für das angeforderte Thema |
projects.topics.getIamPolicy
|
Ruft die IAM-Zugriffssteuerungsrichtlinie für ein Thema ab. | pubsub.topics.getIamPolicy
für das angeforderte Thema |
projects.topics.list
|
Listet alle Themen auf. | pubsub.topics.list für das angeforderte Cloud-Projekt |
projects.topics.patch
|
Aktualisiert ein vorhandenes Thema. | pubsub.topics.update
für das angeforderte Thema |
projects.topics.publish
|
Fügt dem Thema eine oder mehrere Nachrichten hinzu. | pubsub.topics.publish
für das angeforderte Thema |
projects.topics.setIamPolicy
|
Legt die IAM-Zugriffssteuerungsrichtlinie für ein Thema fest. | pubsub.topics.setIamPolicy
für das angeforderte Thema |
projects.topics.testIamPermissions
|
Gibt die Berechtigungen des Aufrufers für die angegebene Ressource zurück. | Keine |
Erforderliche Berechtigungen für Abos
In der folgenden Tabelle sind die erforderlichen Berechtigungen für die einzelnen Pub/Sub API-Methoden im Zusammenhang mit Abos aufgeführt. Sie zeigt, welche IAM-Berechtigung zum Aufrufen der einzelnen Methoden erforderlich ist, und enthält eine Beschreibung der Funktion der Methode.
| Methode | Beschreibung | Erforderliche Berechtigung |
|---|---|---|
projects.subscriptions.acknowledge
|
Bestätigt die Nachrichten, die mit den ack_ids in der AcknowledgeRequest verknüpft sind. | pubsub.subscriptions.consume für das angeforderte Abo |
projects.subscriptions.create
|
Erstellt ein Abo für ein bestimmtes Thema. | pubsub.subscriptions.create für das übergeordnete Cloud-Projekt und pubsub.topics.attachSubscription für das angeforderte Thema.
Wenn Sie ein Abo S in Projekt A erstellen möchten, das an ein Thema T in Projekt B angehängt ist, müssen die entsprechenden Berechtigungen sowohl für Projekt A als auch für Thema T gewährt werden. In diesem Fall können Informationen zur Nutzeridentität in den Audit-Logs von Projekt B erfasst werden. |
projects.subscriptions.delete
|
Löscht ein vorhandenes Abo. | pubsub.subscriptions.delete für das angeforderte Abo |
projects.subscriptions.detach
|
Trennt ein Abo von einem Thema. | pubsub.topics.detachSubscription für das Thema, an das das Abo angehängt ist. |
projects.subscriptions.get
|
Ruft die Konfigurationsdetails eines Abos ab. | pubsub.subscriptions.get für das angeforderte Abo |
projects.subscriptions.getIamPolicy
|
Ruft die IAM-Zugriffssteuerungsrichtlinie für ein Abo ab. | pubsub.subscriptions.getIamPolicy für das angeforderte Abo |
projects.subscriptions.list
|
Listet übereinstimmende Abos auf. | pubsub.subscriptions.list für das angeforderte Cloud-Projekt |
projects.subscriptions.modifyAckDeadline
|
Ändert die Bestätigungsfrist für eine bestimmte Nachricht. | pubsub.subscriptions.consume für das angeforderte Abo |
projects.subscriptions.modifyPushConfig
|
Ändert die pushConfig für ein angegebenes Abo. | pubsub.subscriptions.update für das angeforderte Abo |
projects.subscriptions.patch
|
Aktualisiert ein vorhandenes Abo. | pubsub.subscriptions.update für das angeforderte Abo |
projects.subscriptions.pull
|
Ruft Nachrichten vom Server ab. | pubsub.subscriptions.consume für das angeforderte Abo |
projects.subscriptions.seek
|
Sucht ein vorhandenes Abo zu einem bestimmten Zeitpunkt oder Snapshot. | pubsub.subscriptions.consume für das angeforderte Abo und pubsub.snapshots.seek für den angeforderten Snapshot, falls vorhanden. |
projects.subscriptions.setIamPolicy
|
Legt die IAM-Zugriffssteuerungsrichtlinie für ein Abo fest. | pubsub.subscriptions.setIamPolicy für das angeforderte Abo |
projects.subscriptions.testIamPermissions
|
Gibt die Berechtigungen des Aufrufers für die angegebene Ressource zurück. | Keine |
Erforderliche Berechtigungen für Schemas
In der folgenden Tabelle sind die erforderlichen Berechtigungen für jede Pub/Sub API-Methode im Zusammenhang mit Schemas aufgeführt. Sie zeigt, welche IAM-Berechtigung zum Aufrufen der einzelnen Methoden erforderlich ist, und enthält eine Beschreibung der Funktion der Methode.
| Methode | Beschreibung | Erforderliche Berechtigung |
|---|---|---|
projects.schemas.commit
|
Übernimmt eine neue Schemaversion. | pubsub.schemas.commit für das angeforderte Schema |
projects.schemas.create
|
Erstellt ein Schema. | pubsub.schemas.create für das übergeordnete Cloud-Projekt |
projects.schemas.delete
|
Löscht ein Schema. | pubsub.schemas.delete für das angeforderte Schema |
projects.schemas.deleteRevision
|
Löscht eine bestimmte Schemaversion. | pubsub.schemas.delete für das angeforderte Schema |
projects.schemas.get
|
Ruft ein Schema ab. | pubsub.schemas.get für das angeforderte Schema |
projects.schemas.getIamPolicy
|
Ruft die IAM-Zugriffssteuerungsrichtlinie für ein Schema ab. | pubsub.schemas.getIamPolicy für das angeforderte Schema |
projects.schemas.list
|
Listet Schemas in einem Projekt auf. | pubsub.schemas.list für das angeforderte Cloud-Projekt |
projects.schemas.listRevisions
|
Listet alle Schemaversionen für das benannte Schema auf. | pubsub.schemas.listRevisions für das angeforderte Schema |
projects.schemas.rollback
|
Erstellt eine neue Schemaversion aus einer vorherigen Version. | pubsub.schemas.rollback für das angeforderte Schema |
projects.schemas.validate
|
Validiert eine Schemadefinition. | pubsub.schemas.validate für das übergeordnete Cloud-Projekt |
projects.schemas.validateMessage
|
Validiert eine Nachricht anhand eines Schemas. | pubsub.schemas.validate für das übergeordnete Cloud-Projekt |
Erforderliche Berechtigungen für Snapshots
In der folgenden Tabelle sind die erforderlichen Berechtigungen für jede Pub/Sub API-Methode im Zusammenhang mit Snapshots aufgeführt. Sie zeigt, welche IAM-Berechtigung zum Aufrufen der einzelnen Methoden erforderlich ist, und enthält eine Beschreibung der Funktion der Methode.
| REST-Methode | Beschreibung | Erforderliche Berechtigung |
|---|---|---|
projects.snapshots.create
|
Erstellt einen Snapshot aus dem angeforderten Abo. | pubsub.snapshots.create für das übergeordnete Cloud-Projekt und die Berechtigung pubsub.subscriptions.consume für das Quellabo. |
projects.snapshots.delete
|
Entfernt einen vorhandenen Snapshot. | pubsub.snapshots.delete für den angeforderten Snapshot |
projects.snapshots.getIamPolicy
|
Ruft die IAM-Zugriffssteuerungsrichtlinie für einen Snapshot ab. | pubsub.snapshots.getIamPolicy für den angeforderten Snapshot |
projects.snapshots.list
|
Listet die vorhandenen Snapshots auf. | pubsub.snapshots.list für das angeforderte Cloud-Projekt |
projects.snapshots.patch
|
Aktualisiert einen vorhandenen Snapshot. | pubsub.snapshots.update für den angeforderten Snapshot |
projects.snapshots.setIamPolicy
|
Legt die IAM-Zugriffssteuerungsrichtlinie für einen Snapshot fest. | pubsub.snapshots.setIamPolicy für den angeforderten Snapshot |
projects.snapshots.testIamPermissions
|
Gibt die Berechtigungen des Aufrufers für die angegebene Ressource zurück. | Keine |
Verfügbare Pub/Sub-Rollen
In der folgenden Tabelle sind alle Pub/Sub-Rollen und die mit jeder Rolle verknüpften Berechtigungen aufgeführt:
| 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. |
|
Zugriff über die Google Cloud Console steuern
Mit der Google Cloud Console können Sie die Zugriffssteuerung für Ihre Themen und Projekte verwalten.
So legen Sie Zugriffssteuerungen auf Projektebene fest:
Rufen Sie in der Google Cloud Console die IAM-Seite auf.
Wählen Sie Ihr Projekt aus.
Klicken Sie auf Hinzufügen.
Geben Sie ein oder mehrere Hauptkonten ein.
Wählen Sie in der Liste Rolle auswählen die Rolle aus, die Sie zuweisen möchten.
Klicken Sie auf Speichern.
Prüfen Sie, ob das Hauptkonto mit der Rolle aufgelistet wird, die Sie ihm zugewiesen haben.
So legen Sie Zugriffssteuerungen für Themen und Abos fest:
Rufen Sie in der Google Cloud Console die Liste der Pub/Sub-Themen auf.
Wählen Sie bei Bedarf Ihr Pub/Sub-fähiges Projekt aus.
Führen Sie einen der folgenden Schritte aus:
Wählen Sie die Themen aus, für die Sie Rollen festlegen möchten.
Klicken Sie auf die Themen-ID, um Rollen für ein Abo festzulegen, das an ein Thema angehängt ist. Klicken Sie auf der Seite Themendetails auf die Abo-ID. Die Seite Abodetails wird angezeigt.
Wenn das Infofeld ausgeblendet ist, klicken Sie auf Infofeld ansehen.
Klicken Sie auf dem Tab Berechtigungen auf Hauptkonto hinzufügen.
Geben Sie ein oder mehrere Hauptkonten ein.
Wählen Sie in der Liste Rolle auswählen die Rolle aus, die Sie zuweisen möchten.
Klicken Sie auf Speichern.
Zugriff über die IAM API steuern
Mit der IAM API von Pub/Sub können Sie Richtlinien für einzelne Themen und Abos in einem Projekt festlegen und abrufen sowie die Berechtigungen eines Nutzers für eine bestimmte Ressource testen. Wie bei den regulären Pub/Sub-Methoden können Sie die IAM API-Methoden über die Clientbibliotheken, den API Explorer oder direkt über HTTP aufrufen.
Beachten Sie, dass Sie die Pub/Sub IAM API nicht verwenden können, um Richtlinien auf Projektebene von Google Cloud zu verwalten.
Die folgenden Abschnitte enthalten Beispiele zum Festlegen und Abrufen von Richtlinien sowie zum Testen der Berechtigungen, die ein Aufrufer für eine bestimmte Ressource hat.
Richtlinie abrufen
Mit der Methode getIamPolicy() können Sie eine vorhandene Richtlinie abrufen.
Diese Methode gibt ein JSON-Objekt zurück, das die Richtlinien enthält, die mit der Ressource verbunden sind.
Es folgt Beispielcode zum Abrufen von Richtlinien für ein Abo:
C#
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für C# in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub C# API.
gcloud
Rufen Sie die Abo-Richtlinie ab:
gcloud pubsub subscriptions get-iam-policy \ projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \ --format json
Ausgabe:
{ "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
Im folgenden Beispiel wird die Hauptversion der Go Pub/Sub-Clientbibliothek (v2) verwendet. Wenn Sie noch die v1-Bibliothek verwenden, lesen Sie die Migrationsanleitung zu v2. Eine Liste der v1-Codebeispiele finden Sie unter Verworfene Codebeispiele.
Bevor Sie dieses Beispiel anwenden, folgen Sie der Einrichtungsanleitung für Go in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Pub/Sub Go API-Referenzdokumentation.
Java
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Java in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Pub/Sub Java API-Referenzdokumentation.
Node.js
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Node.js in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Node.js API.
Node.js
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Node.js in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Node.js API.
PHP
Folgen Sie der Einrichtungsanleitung für PHP unter Schnellstart: Clientbibliotheken verwenden, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Pub/Sub-PHP-API-Referenzdokumentation.
Python
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Python in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Pub/Sub Python API-Referenzdokumentation.
Ruby
Im folgenden Beispiel wird die Ruby Pub/Sub-Clientbibliothek v3 verwendet. Wenn Sie noch die v2-Bibliothek verwenden, lesen Sie die Migrationsanleitung zu v3. Eine Liste der Ruby v2-Codebeispiele finden Sie unter Verworfene Codebeispiele.
Folgen Sie der Einrichtungsanleitung für Ruby in der Kurzanleitung: Clientbibliotheken verwenden, bevor Sie dieses Beispiel anwenden. Weitere Informationen finden Sie in der Pub/Sub Ruby API-Referenzdokumentation.
Es folgt Beispielcode zum Abrufen von Richtlinien für ein Thema:C#
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für C# in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub C# API.
gcloud
Themenrichtlinie abrufen
gcloud pubsub topics get-iam-policy \ projects/${PROJECT}/topics/${TOPIC} \ --format json
Ausgabe:
{ "etag": "BwUjMhCsNvY=", "bindings": [ { "role":" roles/pubsub.viewer", "members": [ "user:user-1@gmail.com" ] } ] }
Go
Im folgenden Beispiel wird die Hauptversion der Go Pub/Sub-Clientbibliothek (v2) verwendet. Wenn Sie noch die v1-Bibliothek verwenden, lesen Sie die Migrationsanleitung zu v2. Eine Liste der v1-Codebeispiele finden Sie unter Verworfene Codebeispiele.
Bevor Sie dieses Beispiel anwenden, folgen Sie der Einrichtungsanleitung für Go in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Pub/Sub Go API-Referenzdokumentation.
Java
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Java in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Pub/Sub Java API-Referenzdokumentation.
Node.js
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Node.js in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Node.js API.
PHP
Folgen Sie der Einrichtungsanleitung für PHP unter Schnellstart: Clientbibliotheken verwenden, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Pub/Sub-PHP-API-Referenzdokumentation.
Python
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Python in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Pub/Sub Python API-Referenzdokumentation.
Ruby
Im folgenden Beispiel wird die Ruby Pub/Sub-Clientbibliothek v3 verwendet. Wenn Sie noch die v2-Bibliothek verwenden, lesen Sie die Migrationsanleitung zu v3. Eine Liste der Ruby v2-Codebeispiele finden Sie unter Verworfene Codebeispiele.
Folgen Sie der Einrichtungsanleitung für Ruby in der Kurzanleitung: Clientbibliotheken verwenden, bevor Sie dieses Beispiel anwenden. Weitere Informationen finden Sie in der Pub/Sub Ruby API-Referenzdokumentation.
Richtlinie festlegen
Mit der Methode setIamPolicy() können Sie eine Richtlinie mit einer Ressource verknüpfen. Die Methode setIamPolicy() akzeptiert eine SetIamPolicyRequest, die eine festzulegende Richtlinie sowie die Ressource enthält, mit der die Richtlinie verknüpft ist.
Sie gibt die entsprechende Richtlinie zurück.
Der folgende Beispielcode dient zum Festlegen von Richtlinien für ein Abo:
C#
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für C# in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub C# API.
gcloud
1 Speichern Sie die Richtlinie für das Abo.
gcloud pubsub subscriptions get-iam-policy \ projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \ --format json > subscription_policy.json
2. Öffnen Sie subscription_policy.json und aktualisieren Sie die Bindungen, indem Sie den entsprechenden Hauptkonten die entsprechenden Rollen zuweisen.
Weitere Informationen zum Arbeiten mit subscription_policy.json-Dateien finden Sie unter Richtlinie in der IAM-Dokumentation.
{ "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. Wenden Sie die neue Richtlinie für Abos an.
gcloud pubsub subscriptions set-iam-policy \ projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \ subscription_policy.json
Go
Im folgenden Beispiel wird die Hauptversion der Go Pub/Sub-Clientbibliothek (v2) verwendet. Wenn Sie noch die v1-Bibliothek verwenden, lesen Sie die Migrationsanleitung zu v2. Eine Liste der v1-Codebeispiele finden Sie unter Verworfene Codebeispiele.
Bevor Sie dieses Beispiel anwenden, folgen Sie der Einrichtungsanleitung für Go in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Pub/Sub Go API-Referenzdokumentation.
Java
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Java in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Pub/Sub Java API-Referenzdokumentation.
Node.js
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Node.js in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Node.js API.
PHP
Python
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Python in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Pub/Sub Python API-Referenzdokumentation.
Ruby
Im folgenden Beispiel wird die Ruby Pub/Sub-Clientbibliothek v3 verwendet. Wenn Sie noch die v2-Bibliothek verwenden, lesen Sie die Migrationsanleitung zu v3. Eine Liste der Ruby v2-Codebeispiele finden Sie unter Verworfene Codebeispiele.
Folgen Sie der Einrichtungsanleitung für Ruby in der Kurzanleitung: Clientbibliotheken verwenden, bevor Sie dieses Beispiel anwenden. Weitere Informationen finden Sie in der Pub/Sub Ruby API-Referenzdokumentation.
Es folgt ein Abschnitt mit Beispielcode zum Festlegen von Richtlinien für ein Thema:
C#
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für C# in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub C# API.
gcloud
1 Speichern Sie die Richtlinie für das Thema.
gcloud pubsub topics get-iam-policy \ projects/${PROJECT}/topics/${TOPIC} \ --format json > topic_policy.json
2. Öffnen Sie topic_policy.json und aktualisieren Sie die Bindungen, indem Sie den entsprechenden Hauptkonten die entsprechenden Rollen zuweisen.
Weitere Informationen zum Arbeiten mit subscription_policy.json-Dateien finden Sie unter Richtlinie in der IAM-Dokumentation.
{ "etag": "BwUjMhCsNvY=", "bindings": [ { "role": "roles/pubsub.editor", "members": [ "user:user-1@gmail.com", "user:user-2@gmail.com" ] } ] }
3. Wenden Sie die neue Themenrichtlinie an.
gcloud pubsub topics set-iam-policy \ projects/${PROJECT}/topics/${TOPIC} \ topic_policy.json
Go
Im folgenden Beispiel wird die Hauptversion der Go Pub/Sub-Clientbibliothek (v2) verwendet. Wenn Sie noch die v1-Bibliothek verwenden, lesen Sie die Migrationsanleitung zu v2. Eine Liste der v1-Codebeispiele finden Sie unter Verworfene Codebeispiele.
Bevor Sie dieses Beispiel anwenden, folgen Sie der Einrichtungsanleitung für Go in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Pub/Sub Go API-Referenzdokumentation.
Java
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Java in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Pub/Sub Java API-Referenzdokumentation.
Node.js
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Node.js in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Node.js API.
PHP
Python
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Python in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Pub/Sub Python API-Referenzdokumentation.
Ruby
Im folgenden Beispiel wird die Ruby Pub/Sub-Clientbibliothek v3 verwendet. Wenn Sie noch die v2-Bibliothek verwenden, lesen Sie die Migrationsanleitung zu v3. Eine Liste der Ruby v2-Codebeispiele finden Sie unter Verworfene Codebeispiele.
Folgen Sie der Einrichtungsanleitung für Ruby in der Kurzanleitung: Clientbibliotheken verwenden, bevor Sie dieses Beispiel anwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Ruby API.
Berechtigungen testen
Mit der Methode testIamPermissions() können Sie prüfen, welche der angegebenen Berechtigungen für die angegebene Ressource hinzugefügt oder entfernt werden können. Als Parameter werden ein Ressourcenname und eine Reihe von Berechtigungen verwendet. Es wird die Teilmenge der Berechtigungen zurückgegeben.
Es folgt Beispielcode zum Testen von Berechtigungen für ein Abo:
C#
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für C# in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub C# API.
gcloud
gcloud iam list-testable-permissions \
https://pubsub.googleapis.com/v1/projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \
--format jsonAusgabe:
[
{
"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
Im folgenden Beispiel wird die Hauptversion der Go Pub/Sub-Clientbibliothek (v2) verwendet. Wenn Sie noch die v1-Bibliothek verwenden, lesen Sie die Migrationsanleitung zu v2. Eine Liste der v1-Codebeispiele finden Sie unter Verworfene Codebeispiele.
Bevor Sie dieses Beispiel anwenden, folgen Sie der Einrichtungsanleitung für Go in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Pub/Sub Go API-Referenzdokumentation.
Java
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Java in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Pub/Sub Java API-Referenzdokumentation.
Node.js
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Node.js in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Node.js API.
PHP
Folgen Sie der Einrichtungsanleitung für PHP unter Schnellstart: Clientbibliotheken verwenden, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Pub/Sub-PHP-API-Referenzdokumentation.
Python
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Python in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Pub/Sub Python API-Referenzdokumentation.
Ruby
Im folgenden Beispiel wird die Ruby Pub/Sub-Clientbibliothek v3 verwendet. Wenn Sie noch die v2-Bibliothek verwenden, lesen Sie die Migrationsanleitung zu v3. Eine Liste der Ruby v2-Codebeispiele finden Sie unter Verworfene Codebeispiele.
Folgen Sie der Einrichtungsanleitung für Ruby in der Kurzanleitung: Clientbibliotheken verwenden, bevor Sie dieses Beispiel anwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Ruby API.
Es folgt Beispielcode zum Festlegen von Richtlinien für ein Thema:
C#
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für C# in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub C# API.
gcloud
gcloud iam list-testable-permissions \
https://pubsub.googleapis.com/v1/projects/${PROJECT}/topics/${TOPIC} \
--format jsonAusgabe
[
{
"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
Im folgenden Beispiel wird die Hauptversion der Go Pub/Sub-Clientbibliothek (v2) verwendet. Wenn Sie noch die v1-Bibliothek verwenden, lesen Sie die Migrationsanleitung zu v2. Eine Liste der v1-Codebeispiele finden Sie unter Verworfene Codebeispiele.
Bevor Sie dieses Beispiel anwenden, folgen Sie der Einrichtungsanleitung für Go in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Pub/Sub Go API-Referenzdokumentation.
Java
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Java in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Pub/Sub Java API-Referenzdokumentation.
Node.js
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Node.js in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Node.js API.
PHP
Folgen Sie der Einrichtungsanleitung für PHP unter Schnellstart: Clientbibliotheken verwenden, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Pub/Sub-PHP-API-Referenzdokumentation.
Python
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Python in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Pub/Sub Python API-Referenzdokumentation.
Ruby
Im folgenden Beispiel wird die Ruby Pub/Sub-Clientbibliothek v3 verwendet. Wenn Sie noch die v2-Bibliothek verwenden, lesen Sie die Migrationsanleitung zu v3. Eine Liste der Ruby v2-Codebeispiele finden Sie unter Verworfene Codebeispiele.
Folgen Sie der Einrichtungsanleitung für Ruby in der Kurzanleitung: Clientbibliotheken verwenden, bevor Sie dieses Beispiel anwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Ruby API.
Projektübergreifende Kommunikation
Pub/Sub IAM ist nützlich, um bei projektübergreifender Kommunikation die Zugriffsrechte genau abzustimmen.
In einem Thema in einem anderen Projekt veröffentlichen
Angenommen, Sie möchten, dass ein Dienstkonto in Projekt A Nachrichten in einem Thema in Projekt B veröffentlicht. So aktivieren Sie dieses Szenario:
Aktivieren Sie die Pub/Sub API in Projekt A.
Gewähren Sie dem Dienstkonto die Berechtigung
pubsub.topics.publishentweder für Projekt B oder für das Thema. Die Rolle Pub/Sub-Publisher (roles/pubsub.publisher) enthält diese Berechtigung.
Abo in einem anderen Projekt erstellen
Angenommen, Sie möchten, dass ein Dienstkonto in Projekt A ein Abo in Projekt A für ein Thema in Projekt B erstellt. So aktivieren Sie dieses Szenario:
Aktivieren Sie die Pub/Sub API in beiden Projekten.
Gewähren Sie dem Dienstkonto die folgenden Berechtigungen:
pubsub.subscriptions.createfür Projekt A.pubsub.topics.attachSubscriptionfür das Thema in Projekt B.
Die Rolle Pub/Sub-Bearbeiter (
roles/pubsub.editor) umfasst diese Berechtigungen.Erstellen Sie in Projekt A ein Abo, das an das Thema in Projekt B angehängt ist.
Nachrichten von einem Thema in einem anderen Projekt empfangen
Angenommen, Sie möchten, dass ein Dienstkonto in Projekt A Nachrichten von einem Abo in Projekt B empfängt. So aktivieren Sie dieses Szenario:
Aktivieren Sie die Pub/Sub API in Projekt A.
Weisen Sie dem Dienstkonto die Rolle Pub/Sub-Abonnent (
roles/pubsub.subscriber) entweder für Projekt B oder für das Abo zu.
Verhalten bei teilweiser Verfügbarkeit
Die Autorisierungsprüfungen hängen vom IAM-Subsystem ab. Das System kann auf im Cache gespeicherte IAM-Richtlinien zurückgreifen, um eine konsistent niedrige Reaktionslatenz für Datenoperationen (Veröffentlichung und Nachrichtenverbrauch) zu bieten. Weitere Informationen dazu, wann Ihre Änderungen wirksam werden, finden Sie in der IAM-Dokumentation.
Weitere Informationen
- Wenn Sie Probleme beim Zugriff auf Pub/Sub-Ressourcen oder bei der Authentifizierung haben, lesen Sie den Abschnitt Allgemeine Fehlerbehebung.