Projektübergreifenden Zugriff in GKE konfigurieren

Auf dieser Seite erfahren Sie, wie Sie der Binärautorisierung Zugriff auf Richtlinien und Container Images gewähren, die in anderen Google Cloud Projekten als in Ihrem aktuellen Projekt vorhanden sind. Wenn Sie beispielsweise Images in Ihrem Google Kubernetes Engine-Cluster (GKE) aus einem Artifact Registry-Repository oder einer Container Registry (verworfener Link) bereitstellen, das zu einem anderen Projekt gehört, müssen Sie dem Binärautorisierungsdienst in Ihrem Projekt Zugriff auf Image-Metadaten im Quell-Repository gewähren.

Terminologie

In diesem Dokument werden die folgenden Begriffe verwendet:

  • Dienst-Agent: Ein Google Cloud-verwaltetes Dienstkonto. Die Binärautorisierung verwendet einen Dienst-Agent, um mit Ihren Google Cloud Ressourcen wie GKE-Clustern zu interagieren.
  • Richtlinienprojekt: Das Google Cloud Projekt, das Ihre Richtlinie für die Binärautorisierung enthält.
  • Clusterprojekt: Das Google Cloud Projekt, das Ihren GKE-Cluster enthält.
  • Artefaktprojekt: Das Google Cloud Projekt, das Ihr Artifact Registry- oder Container Registry-Repository (verworfener Link) enthält.

Szenarien, die einen projektübergreifenden Zugriff erfordern

In Situationen wie den folgenden müssen Sie projektübergreifende Berechtigungen erteilen:

  • Ihr Richtlinienprojekt unterscheidet sich von Ihrem Clusterprojekt.
  • Ihr Clusterprojekt unterscheidet sich von Ihrem Artefaktprojekt.

Hinweis

  1. Melden Sie sich in Ihrem Google Cloud Konto an. Wenn Sie noch kein Konto bei Google Cloudhaben, erstellen Sie eines, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Installieren Sie die Google Cloud CLI.

  3. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  4. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  5. Erstellen oder wählen Sie ein Google Cloud Projekt aus.

    Rollen, die zum Auswählen oder Erstellen eines Projekts erforderlich sind

    • Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können ein beliebiges Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
    • Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Projektersteller“ (roles/resourcemanager.projectCreator), die die resourcemanager.projects.create Berechtigung enthält. Rollen zuweisen.
    • Projekt erstellen: Google Cloud

      gcloud projects create PROJECT_ID

      Ersetzen Sie PROJECT_ID durch einen Namen für das Google Cloud Projekt, das Sie erstellen.

    • Wählen Sie das Google Cloud Projekt aus, das Sie erstellt haben:

      gcloud config set project PROJECT_ID

      Ersetzen Sie PROJECT_ID durch Ihren Google Cloud Projektnamen.

  6. Prüfen Sie, ob für Ihr Google Cloud Projekt die Abrechnung aktiviert ist.

  7. Aktivieren Sie die Binary Authorization API:

    Rollen, die zum Aktivieren von APIs erforderlich sind

    Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin), die die Berechtigung serviceusage.services.enable enthält. Rollen zuweisen.

    gcloud services enable binaryauthorization.googleapis.com
  8. Installieren Sie die Google Cloud CLI.

  9. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  10. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  11. Erstellen oder wählen Sie ein Google Cloud Projekt aus.

    Rollen, die zum Auswählen oder Erstellen eines Projekts erforderlich sind

    • Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können ein beliebiges Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
    • Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Projektersteller“ (roles/resourcemanager.projectCreator), die die resourcemanager.projects.create Berechtigung enthält. Rollen zuweisen.
    • Projekt erstellen: Google Cloud

      gcloud projects create PROJECT_ID

      Ersetzen Sie PROJECT_ID durch einen Namen für das Google Cloud Projekt, das Sie erstellen.

    • Wählen Sie das Google Cloud Projekt aus, das Sie erstellt haben:

      gcloud config set project PROJECT_ID

      Ersetzen Sie PROJECT_ID durch Ihren Google Cloud Projektnamen.

  12. Prüfen Sie, ob für Ihr Google Cloud Projekt die Abrechnung aktiviert ist.

  13. Aktivieren Sie die Binary Authorization API:

    Rollen, die zum Aktivieren von APIs erforderlich sind

    Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin), die die Berechtigung serviceusage.services.enable enthält. Rollen zuweisen.

    gcloud services enable binaryauthorization.googleapis.com

Clusterprojekt, das vom Richtlinienprojekt abweicht

Weisen Sie dem Dienst-Agent für die Binärautorisierung im Clusterprojekt die Rolle Evaluator für die Binärautorisierungsrichtlinie (roles/binaryauthorization.policyEvaluator) für das Richtlinienprojekt zu.

gcloud projects add-iam-policy-binding POLICY_PROJECT_ID \
  --member="serviceAccount:service-$(gcloud projects describe CLUSTER_PROJECT_ID --format='value(projectNumber)')@gcp-sa-binaryauthorization.iam.gserviceaccount.com" \
  --role=roles/binaryauthorization.policyEvaluator

Ersetzen Sie Folgendes:

  • POLICY_PROJECT_ID: Die ID des Projekts, das Ihre Richtlinie enthält.
  • CLUSTER_PROJECT_ID: die Projekt-ID des Clusters.

Clusterprojekt, das sich vom Artefaktprojekt unterscheidet

Weisen Sie dem Dienst-Agent für die Binärautorisierung im Clusterprojekt die Rolle Artifact Registry-Leser (roles/artifactregistry.reader) für das Artefaktprojekt zu.

gcloud projects add-iam-policy-binding ARTIFACT_PROJECT_ID \
    --member="serviceAccount:service-$(gcloud projects describe CLUSTER_PROJECT_ID --format='value(projectNumber)')@gcp-sa-binaryauthorization.iam.gserviceaccount.com" \
    --role=roles/artifactregistry.reader

Ersetzen Sie Folgendes:

  • ARTIFACT_PROJECT_ID: die ID des Projekts, das Ihr Artifact Registry-Repository enthält.
  • CLUSTER_PROJECT_ID ist die ID des Projekts, in dem Ihre GKE-Cluster ausgeführt werden.