In diesem Dokument wird die programmatische Authentifizierung bei Pub/Sub beschrieben. Wie Sie sich bei Pub/Sub authentifizieren, hängt von der Schnittstelle ab, über die Sie auf die API zugreifen, und von der Umgebung, in der Ihr Code ausgeführt wird.
Hinweis: In Pub/Sub werden API-Schlüssel nicht als Authentifizierungsmethode unterstützt.Weitere Informationen zur Google Cloud -Authentifizierung finden Sie unter Authentifizierungsmethoden.
API-Zugriff
Pub/Sub unterstützt den programmatischen Zugriff. Sie haben folgende Möglichkeiten, um auf die API zuzugreifen:
Clientbibliotheken
Die Pub/Sub-Clientbibliotheken bieten allgemeine Sprachunterstützung für die programmatische Authentifizierung bei Pub/Sub. Zur Authentifizierung von Aufrufen an Google Cloud -APIs unterstützen Clientbibliotheken Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC). Die Bibliotheken suchen nach Anmeldedaten an einer Reihe von definierten Speicherorten und verwenden diese, um Anfragen an die API zu authentifizieren. Mit ADC können Sie Anmeldedaten für Ihre Anwendung in verschiedenen Umgebungen bereitstellen, z. B. in der lokalen Entwicklung oder Produktion, ohne den Anwendungscode ändern zu müssen.
Google Cloud CLI
Wenn Sie die gcloud CLI verwenden, um auf Pub/Sub zuzugreifen, melden Sie sich in der gcloud CLI mit einem Nutzerkonto an, das die von den gcloud CLI-Befehlen verwendeten Anmeldedaten bereitstellt.
Wenn die Sicherheitsrichtlinien Ihrer Organisation verhindern, dass Nutzerkonten die erforderlichen Berechtigungen haben, können Sie die Identitätsübernahme des Dienstkontos verwenden.
Weitere Informationen finden Sie unter Für die Verwendung der gcloud CLI authentifizieren. Weitere Informationen zur Verwendung der gcloud CLI mit Pub/Sub finden Sie auf den Referenzseiten zur gcloud CLI.
REST
Sie können sich bei der Pub/Sub API mithilfe Ihrer gcloud CLI-Anmeldedaten oder mithilfe der Standardanmeldedaten für Anwendungen authentifizieren. Weitere Informationen zur Authentifizierung für REST-Anfragen finden Sie unter Für die Verwendung von REST authentifizieren. Informationen zu den Arten von Anmeldedaten finden Sie unter gcloud CLI-Anmeldedaten und ADC-Anmeldedaten.
Nutzeranmeldedaten und ADC für Pub/Sub
Eine Möglichkeit, Anmeldedaten für ADC bereitzustellen, ist die Verwendung der gcloud CLI, um Ihre Nutzeranmeldedaten in eine Datei mit Anmeldedaten einzufügen. Diese Datei wird auf Ihrem lokalen Dateisystem abgelegt, wo ADC sie finden kann. ADC verwendet dann die bereitgestellten Nutzeranmeldedaten zur Authentifizierung von Anfragen. Diese Methode wird häufig für die lokale Entwicklung verwendet.
Wenn Sie diese Methode verwenden, kann bei der Authentifizierung bei Pub/Sub ein Authentifizierungsfehler auftreten. Weitere Informationen zu diesem Fehler und seiner Behebung finden Sie unter Nutzeranmeldedaten funktionieren nicht.
Authentifizierung für Pub/Sub einrichten
Wie Sie die Authentifizierung einrichten, hängt von der Umgebung ab, in der Ihr Code ausgeführt wird.
Die gängigsten Optionen zum Einrichten der Authentifizierung werden im Folgenden behandelt. Weitere Optionen und Informationen zur Authentifizierung finden Sie unter Authentifizierungsmethoden.
Für eine lokale Entwicklungsumgebung
Sie können Anmeldedaten für eine lokale Entwicklungsumgebung auf folgende Weise einrichten:
- Nutzeranmeldedaten für Clientbibliotheken oder Tools von Drittanbietern
- Nutzeranmeldedaten für REST-Anfragen über die Befehlszeile
- Identitätsübernahme des Dienstkontos
Clientbibliotheken oder Tools von Drittanbietern
Richten Sie Standardanmeldedaten für Anwendungen (ADC) für Ihre lokale Umgebung ein.
-
Installieren Sie die Google Cloud CLI. Initialisieren Sie die Google Cloud CLI nach der Installation mit dem folgenden Befehl:
gcloud initWenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Wenn Sie eine lokale Shell verwenden, erstellen Sie lokale Anmeldedaten zur Authentifizierung für Ihr Nutzerkonto:
gcloud auth application-default login
Wenn Sie Cloud Shell verwenden, müssen Sie das nicht tun.
Wenn ein Authentifizierungsfehler zurückgegeben wird und Sie einen externen Identitätsanbieter (IdP) verwenden, prüfen Sie, ob Sie sich mit Ihrer föderierten Identität in der gcloud CLI angemeldet haben.
Ein Anmeldebildschirm wird angezeigt. Nach der Anmeldung werden Ihre Anmeldedaten in der lokalen Anmeldedatendatei für ADC gespeichert.
Weitere Informationen zum Arbeiten mit ADC in einer lokalen Umgebung finden Sie unter ADC für eine lokale Entwicklungsumgebung einrichten.
REST-Anfragen über die Befehlszeile
Wenn Sie eine REST-Anfrage über die Befehlszeile stellen, können Sie Ihre gcloud CLI-Anmeldedaten verwenden. Fügen Sie dazu gcloud auth print-access-token in den Befehl ein, der die Anfrage sendet.
Im folgenden Beispiel werden Dienstkonten für das angegebene Projekt aufgelistet. Sie können für jede REST-Anfrage das gleiche Muster verwenden.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Projekt-ID von Google Cloud
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Weitere Informationen zur Authentifizierung mit REST und gRPC finden Sie unter Für die Verwendung von REST authentifizieren. Weitere Informationen zum Unterschied zwischen Ihren lokalen ADC-Anmeldedaten und Ihren gcloud CLI-Anmeldedaten finden Sie unter Authentifizierungskonfiguration der gcloud CLI und ADC-Konfiguration.
Identitätsübernahme des Dienstkontos
In den meisten Fällen können Sie Ihre Nutzeranmeldedaten zur Authentifizierung über eine lokale Entwicklungsumgebung verwenden. Wenn dies nicht möglich ist oder Sie die einem Dienstkonto zugewiesenen Berechtigungen testen müssen, können Sie die Identitätsübernahme des Dienstkontos verwenden. Sie benötigen die Berechtigung iam.serviceAccounts.getAccessToken, die in der IAM-Rolle Ersteller von Dienstkonto-Tokens (roles/iam.serviceAccountTokenCreator) enthalten ist.
Sie können die gcloud CLI so einrichten, dass die Identitätsübernahme des Dienstkontos mit dem Befehl gcloud config set verwendet wird:
gcloud config set auth/impersonate_service_account SERVICE_ACCT_EMAIL
Für ausgewählte Sprachen können Sie die Identitätsübernahme des Dienstkontos verwenden, um eine lokale ADC-Datei zur Verwendung durch Clientbibliotheken zu erstellen. Dieser Ansatz wird nur für die Go-, Java-, Node.js- und Python-Clientbibliotheken unterstützt. Für die anderen Sprachen wird er nicht unterstützt.
Verwenden Sie zum Einrichten einer lokalen ADC-Datei mit Identitätsübernahme des Dienstkontos das Flag --impersonate-service-account mit dem Befehl gcloud auth application-default login:
gcloud auth application-default login --impersonate-service-account=SERVICE_ACCT_EMAIL
Weitere Informationen zu Identitätsübernahme des Dienstkontos.
Auf Google Cloud
Zur Authentifizierung einer in Google Cloudausgeführten Arbeitslast verwenden Sie die Anmeldedaten des an die Rechenressource, in der Ihr Code ausgeführt wird, angehängten Dienstkontos, z. B. eine Compute Engine-VM-Instanz. Dieser Ansatz ist die bevorzugte Authentifizierungsmethode für Code, der in einer Google Cloud -Rechenressource ausgeführt wird.
Bei den meisten Diensten müssen Sie das Dienstkonto beim Erstellen der Ressource, in der der Code ausgeführt wird, anhängen. Sie können das Dienstkonto nicht später hinzufügen oder ersetzen. Compute Engine ist eine Ausnahme. Mit Compute Engine können Sie jederzeit ein Dienstkonto an eine VM-Instanz anhängen.
Verwenden Sie die gcloud CLI, um ein Dienstkonto zu erstellen und an Ihre Ressource anzuhängen:
-
Installieren Sie die Google Cloud CLI. Initialisieren Sie die Google Cloud CLI nach der Installation mit dem folgenden Befehl:
gcloud initWenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Richten Sie die Authentifizierung ein:
-
Sie benötigen die IAM-Rolle „Dienstkonten erstellen“ (
roles/iam.serviceAccountCreator) und die IAM-Rolle „Projekt-IAM-Administrator“ (roles/resourcemanager.projectIamAdmin). Informationen zum Zuweisen von Rollen -
Erstellen Sie das Dienstkonto:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Ersetzen Sie
SERVICE_ACCOUNT_NAMEmit einem Namen für das Dienstkonto. -
Um Zugriff auf Ihr Projekt und Ihre Ressourcen zu gewähren, weisen Sie dem Dienstkonto eine Rolle zu:
gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE
Dabei gilt:
SERVICE_ACCOUNT_NAME: der Name des DienstkontosPROJECT_ID: die Projekt-ID, unter der Sie das Dienstkonto erstellt habenROLE: die zu gewährende Rolle
- Führen Sie den Befehl wie schon im vorherigen Schritt aus, um dem Dienstkonto eine weitere Rolle zuzuweisen.
-
Weisen Sie dem Hauptkonto, das das Dienstkonto an andere Ressourcen anhängt, die erforderliche Rolle zu.
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser
Ersetzen Sie Folgendes:
SERVICE_ACCOUNT_NAME: der Name des DienstkontosPROJECT_ID: die Projekt-ID, unter der Sie das Dienstkonto erstellt habenUSER_EMAIL: die E-Mail-Adresse für ein Google-Konto
-
Sie benötigen die IAM-Rolle „Dienstkonten erstellen“ (
-
Erstellen Sie die Ressource, in der der Code ausgeführt wird, und hängen Sie das Dienstkonto an diese Ressource an. Wenn Sie beispielsweise Compute Engine verwenden:
Erstellen Sie eine Compute Engine-Instanz. Konfigurieren Sie die Instanz so:-
Ersetzen Sie
INSTANCE_NAMEdurch Ihren bevorzugten Instanznamen. -
Legen Sie das Flag
--zoneauf die Zone fest, in der Sie Ihre Instanz erstellen möchten. -
Legen Sie für das Flag
--service-accountdie E-Mail-Adresse des von Ihnen erstellten Dienstkontos fest.
gcloud compute instances create INSTANCE_NAME --zone=ZONE --service-account=SERVICE_ACCOUNT_EMAIL
-
Ersetzen Sie
Weitere Informationen zur Authentifizierung bei Google APIs finden Sie unter Authentifizierungsmethoden.
Lokal oder bei einem anderen Cloud-Anbieter
Die bevorzugte Methode zum Einrichten der Authentifizierung außerhalb von Google Cloud ist die Verwendung der Workload Identity-Föderation. Weitere Informationen finden Sie in der Authentifizierungsdokumentation unter ADC für lokale Umgebungen oder andere Cloud-Anbieter einrichten.
Zugriffssteuerung für Pub/Sub
Nach der Authentifizierung bei Pub/Sub müssen Sie berechtigt sein, auf Google Cloud -Ressourcen zuzugreifen. Pub/Sub verwendet für die Autorisierung die Identitäts- und Zugriffsverwaltung (Identity and Access Management, IAM).
Weitere Informationen zu den Rollen für Pub/Sub finden Sie unter Zugriffssteuerung mit IAM. Weitere Informationen zu IAM und Autorisierung finden Sie in der IAM-Übersicht.
Nächste Schritte
- Weitere Informationen zu OAuth 2.0-Bereichen für Pub/Sub
- Weitere Informationen zu Authentifizierungsmethoden vonGoogle Cloud .
- Eine Liste der Anwendungsfälle für die Authentifizierung.