Rollen und Berechtigungen für einen internen HTTP-Endpunkt in einem VPC-Netzwerk

In diesem Dokument erfahren Sie, wie Sie IAM-Rollen (Identity and Access Management) sowie Berechtigungen zum Weiterleiten von Ereignissen von Google Cloud an einen internen HTTP-Endpunkt in einer Virtual Private Cloud erteilen. (VPC-)Netzwerk mit Eventarc:

  1. Weisen Sie projektweite Berechtigungen dem Hauptkonto zu, das die Eventarc APIs aufruft, z. B. dem Ersteller des Eventarc-Triggers:

    1. Mit der Rolle Eventarc-Administrator haben Sie die vollständige Kontrolle über alle Eventarc-Ressourcen, einschließlich der Angabe eines Dienstkontos für den Trigger beim Erstellen.
    2. Mit der Rolle Dienstkontonutzer kann ein Hauptkonto die Identität eines Dienstkontos übernehmen und verwenden. Das Dienstkonto ist einem Eventarc-Trigger zugeordnet und stellt die Identität des Triggers dar.
  2. Eventarc-Trigger-Berechtigungen für das Trigger-Dienstkonto erteilen: Mit der Rolle Eventarc-Ereignisempfänger kann Ihr Eventarc-Trigger Ereignisse von Ereignisanbietern empfangen. Sie müssen die Rolle nicht zuweisen, wenn Sie direkte Ereignisse aus Cloud Pub/Sub weiterleiten.

  3. Gewähren Sie Berechtigungen für Google-Dienst-Agents:

    1. Wenn der URI des internen HTTP-Endpunkts den internen DNS-Namen eines Dienstes verwendet, der von Cloud DNS aufgelöst werden kann, weisen Sie die Rolle Cloud DNS-Peer zu.
    2. Wenn Sie einen Trigger für direkte Ereignisse aus Cloud Storage erstellen, weisen Sie die Rolle Pub/Sub-Publisher zu.
    3. Wenn Sie den Cloud Pub/Sub-Dienst-Agent am oder vor dem 8. April 2021 aktiviert haben, weisen Sie die Rolle Ersteller von Dienstkonto-Tokens zu.

Weitere Informationen zum Zuweisen von IAM-Rollen finden Sie unter Zugriff verwalten. Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Projektweite Berechtigungen gewähren

Wenn Sie der Projektersteller sind, wird Ihnen die einfache "Inhaber" Rolle (roles/owner) zugewiesen. Standardmäßig enthält diese Rolle die Berechtigungen, die für den vollständigen Zugriff auf die meisten Google Cloud-Ressourcen erforderlich sind. Andernfalls müssen die erforderlichen Rollen von einem Administrator für die entsprechende Ressource dem entsprechenden Hauptkonto (auch als Mitglied bezeichnet) gewährt werden.

Ein Hauptkonto kann beispielsweise ein Google-Konto (für Endnutzer) oder ein Dienstkonto (für Anwendungen und Computing-Arbeitslasten) sein. Jedes Hauptkonto hat eine eigene Kennung, die normalerweise eine E-Mail-Adresse ist.

  1. Mit der Eventarc-Administratorrolle (roles/eventarc.admin) können Sie alle Eventarc-Ressourcen vollständig steuern.

    Weisen Sie dem Projekt die Rolle zu:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=PRINCIPAL \
        --role=roles/eventarc.admin

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist Ihre Google Cloud-Projekt-ID.
    • PRINCIPAL: Die Kennung des Triggererstellers, die normalerweise das folgende Format hat: PRINCIPAL_TYPE:ID. Beispiel: user:my-user@example.com. Eine vollständige Liste der möglichen PRINCIPAL_TYPE-Werte finden Sie in der Referenz zur Richtlinienbindung.
  2. Mit der Rolle "Dienstkontonutzer" (roles/iam.serviceAccountUser) kann ein Hauptkonto Vorgänge als Dienstkonto ausführen.

    Sie benötigen diese Rolle beispielsweise, damit Sie ein vom Nutzer verwaltetes Dienstkonto mit einem Eventarc-Trigger verknüpfen können. Sie benötigen sie auch, damit Sie bei der Bereitstellung eines Cloud Run-Dienstes als Laufzeitdienstkonto fungieren können. Weitere Informationen finden Sie unter Identitätswechsel für Dienstkonten.

    Sie können entweder die Rolle für das Projekt zuweisen, damit das Hauptkonto die Identität mehrerer Dienstkonten übernehmen kann, oder Sie gewähren die Rolle für das Dienstkonto, damit das Hauptkonto nur die Identität eines bestimmten Dienstkontos übernehmen kann.

    Weisen Sie dem Projekt die Rolle zu:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=PRINCIPAL \
        --role=roles/iam.serviceAccountUser

    Oder weisen Sie dem Dienstkonto die Rolle zu:

    gcloud iam service-accounts add-iam-policy-binding \
        projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \
        --member=PRINCIPAL \
        --role=roles/iam.serviceAccountUser

    Ersetzen Sie Folgendes:

    • SERVICE_ACCOUNT_PROJECT_ID: die Google Cloud-Projekt-ID, die das Dienstkonto enthält.
    • SERVICE_ACCOUNT_NAME: der Name des Dienstkontos.

Eventarc-Trigger-Berechtigungen erteilen

Jeder Eventarc-Trigger ist zum Zeitpunkt der Erstellung des Triggers mit einem IAM-Dienstkonto verknüpft. Sie können ein vom Nutzer verwaltetes Dienstkonto angeben, das der Trigger als Standardidentität verwendet. Wenn Sie beim Erstellen des Triggers kein Dienstkonto angeben, verwendet der Trigger das Compute Engine-Standarddienstkonto für seine Identität.

Wir empfehlen Ihnen, ein eigenes nutzerverwaltetes Dienstkonto zu erstellen, um mehr Kontrolle und Flexibilität bei der Verwaltung des Triggers zu erhalten.

  1. Erstellen Sie ein Dienstkonto und notieren Sie sich seinen Namen:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
        --description="DESCRIPTION" \
        --display-name="DISPLAY_NAME"

    Ersetzen Sie Folgendes:

    • SERVICE_ACCOUNT_NAME: der Name des Dienstkontos. Dieser Name wird in der E-Mail-Adresse angezeigt, die das Dienstkonto identifiziert.
    • DESCRIPTION: eine optionale Beschreibung des Dienstes
    • DISPLAY_NAME: ein Dienstkontoname, der in der Google Cloud Console angezeigt werden soll
  2. Weisen Sie dem Dienstkonto, das Ihrem Eventarc-Trigger zugeordnet ist, die Rolle "Eventarc-Ereignisempfänger" (roles/eventarc.eventReceiver) für das Projekt zu, damit der Trigger Ereignisse vom Ereignisanbieter empfangen kann.

    Beachten Sie, dass Sie die Rolle "Eventarc-Ereignisempfänger" nicht zuweisen müssen, wenn Sie direkte Ereignisse aus Cloud Pub/Sub weiterleiten.

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/eventarc.eventReceiver

    Ersetzen Sie SERVICE_ACCOUNT_NAME durch den Namen Ihres Dienstkontos, den Sie im vorherigen Schritt notiert haben.

Berechtigungen für Google-Dienst-Agents erteilen

Einige Google Cloud-Dienste haben von Google verwaltete Dienstkonten, mit denen die Dienste auf Ihre Ressourcen zugreifen können. Diese Dienstkonten werden als Dienst-Agents bezeichnet. Wenn eine API einen Dienst-Agent erfordert, erstellt Google den Dienst-Agent, nachdem Sie die API aktiviert und verwendet haben.

  1. Wenn der URI des internen HTTP-Endpunkts im VPC-Netzwerk den internen DNS-Namen eines durch Cloud DNS auflösbaren Dienstes verwendet, um mit DNS-Peering-Zonen auf Zielnetzwerke zuzugreifen, weisen Sie dem Eventarc-Dienst-Agenten die Rolle DNS-Peer (roles/dns.peer) im VPC-Hostprojekt zu:

    gcloud projects add-iam-policy-binding VPC_HOST_PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com \
        --role=roles/dns.peer

    Ersetzen Sie Folgendes:

    • VPC_HOST_PROJECT_ID: die Google Cloud-Projekt-ID für das VPC-Hostprojekt. Wenn Sie eine freigegebene VPC verwenden, hängen Sie ein oder mehrere Dienstprojekte an das Hostprojekt an. Dadurch können Ressourcen aus mehreren Projekten eine Verbindung zu einem gemeinsamen VPC-Netzwerk herstellen.

      Beachten Sie, dass das VPC-Hostprojekt je nach Konfiguration des VPC-Netzwerks auch Ihr Eventarc-Trigger-Projekt sein kann.

    • PROJECT_NUMBER: die Google Cloud-Projektnummer für Ihr Eventarc-Trigger-Projekt. Sie finden Ihre Projektnummer auf der Willkommensseite der Google Cloud Console oder durch Ausführen des folgenden Befehls:

      gcloud projects describe PROJECT_ID --format='value(projectNumber)'
  2. Wenn Sie einen Trigger für direkte Ereignisse aus Cloud Storage erstellen, um die Veröffentlichung von Nachrichten zu einem Thema zu unterstützen, gewähren Sie dem Cloud Storage-Dienst-Agent die Pub/Sub-Publisher-Rolle (roles/pubsub.publisher) für das Projekt:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com \
        --role=roles/pubsub.publisher

    Ersetzen Sie PROJECT_NUMBER durch Ihre Google Cloud-Projektnummer. Sie finden Ihre Projektnummer auf der Willkommensseite der Google Cloud Console oder durch Ausführen des folgenden Befehls:

    gcloud projects describe PROJECT_ID --format='value(projectNumber)'
  3. Wenn Sie den Cloud Pub/Sub-Dienst-Agent am oder vor dem 8. April 2021 aktiviert haben, damit authentifizierte Pub/Sub-Push-Anfragen unterstützt werden, müssen Sie dem Pub/Sub-Dienst-Agent die Rolle "Dienstkonto-Tokenersteller" (roles/iam.serviceAccountTokenCreator) für das Projekt zuweisen. Andernfalls wird diese Rolle standardmäßig zugewiesen:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \
        --role=roles/iam.serviceAccountTokenCreator

Nächste Schritte