Rollen und Berechtigungen für Google Kubernetes Engine-Ziele (GKE)

In diesem Dokument wird beschrieben, wie Sie IAM-Rollen (Identity and Access Management) und -Berechtigungen erteilen, um das Weiterleiten von Ereignissen mit Eventarc aus Google Cloud und anderen Quellen zu GKE-Zielen zu unterstützen, einschließlich der öffentlichen Endpunkte privater und öffentlicher Dienste, die in einem GKE-Cluster ausgeführt werden.

  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. Gewähren Sie dem Trigger-Dienstkonto Berechtigungen für Eventarc-Trigger:

    1. Mit der Rolle Eventarc Event Receiver können Ihre Eventarc-Trigger Ereignisse von Ereignisanbietern empfangen. Sie müssen die Rolle nicht zuweisen, wenn Sie direkte Ereignisse aus Cloud Pub/Sub weiterleiten.
    2. Mit der Rolle Pub/Sub-Abonnent kann Ihr Eventarc-Trigger Nachrichten von Pub/Sub verarbeiten und Abos an ein Thema anhängen.
    3. Mit der Rolle Monitoring-Messwert-Autor kann der Event Forwarder von Eventarc Messwerte mit Cloud Monitoring und anderen Systemen, die Metriken liefern, schreiben.
  3. Gewähren Sie Berechtigungen für Google-Dienst-Agents:

    1. Wenn Sie einen Trigger für direkte Ereignisse aus Cloud Storage erstellen, weisen Sie die Rolle Pub/Sub-Publisher zu.
    2. 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 dabei 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.

    Beim Erstellen eines Eventarc-Triggers benötigen Sie diese Rolle, damit Sie ein vom Nutzer verwaltetes Dienstkonto mit dem Trigger verknüpfen können und seine Identität darstellt. Weitere Informationen finden Sie unter Rollen für die Dienstkontoauthentifizierung.

    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 dabei 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 dabei 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 es 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.

  3. Gewähren Sie dem Dienstkonto, das Ihrem Eventarc-Trigger zugeordnet ist, die Pub/Sub-Abonnent-Rolle (roles/pubsub.subscriber) für das Projekt, damit es Nachrichten aus Pub/Sub verarbeiten und Abos mit einem Thema verknüpfen kann.

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

    Ersetzen Sie SERVICE_ACCOUNT_NAME durch den Namen Ihres Dienstkontos, den Sie zuvor notiert haben.

  4. Weisen Sie dem Dienstkonto, das Ihrem Eventarc-Trigger zugeordnet ist, die Rolle "Monitoring-Messwert-Autor" (roles/monitoring.metricWriter) für das Projekt zu, damit der Ereignis-Forwarder von Eventarc Messwerte mit Cloud Monitoring und anderen Systemen, die Messwerte bereitstellen, schreiben kann.

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

Berechtigungen für Google-Dienst-Agents erteilen

Einige Google Cloud-Dienste haben Dienst-Agenten damit Dienste auf Ihre Ressourcen zugreifen können. Wenn eine API einen Dienst-Agent erfordert, erstellt Google den Dienst-Agent, nachdem Sie die API aktiviert und verwendet haben.

  1. 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)'
  2. 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