IAM-Rollen von Container Registry zu Artifact Registry zuordnen

In diesem Dokument erfahren Sie, wie Sie Container Registry-Rollen auf Artifact Registry-Rollen abbilden und auf ein Artifact Registry-Repository anwenden. Dieselben Schritte können Sie auch mit dem automatischen Migrationstool ausführen.

Container Registry und Artifact Registry verwenden unterschiedliche IAM-Rollen (Identity and Access Management), um den Zugriff auf in der Registry gespeicherte Container-Images zu steuern.

Um von der Container Registry zu Artifact Registry zu wechseln, können Sie einen Google Cloud CLI-Befehl ausführen, der Folgendes tut:

  • Gibt Zulassen-Richtlinien an, die auf einen Cloud Storage-Bucket zutreffen, in dem Images für Container Registry gespeichert werden
  • Es wird eine Richtlinie mit ähnlichen Artifact Registry-Rollen zurückgegeben, damit Sie Ihren vorhandenen Container Registry-Nutzern Zugriff auf Artifact Registry-Repositories gewähren können.

Der Befehl verwendet den IAM Policy Analyzer, um IAM-Zulassungsrichtlinien zu analysieren.

Hinweis

  1. Erstellen Sie ein Artifact Registry-Repository. Wenn Sie die manuelle Migrationsmethode ausgewählt haben, folgen Sie der Anleitung, um entweder manuell zu gcr.io-Repositories in der Artifact Registry zu migrieren oder manuell zu pkg.dev-Repositories zu migrieren.

  2. Enable the Cloud Asset API.

    Enable the API

    Sie müssen die API in dem Projekt aktivieren, in dem Sie vorhandene Zulassungsrichtlinien analysieren möchten.

  3. Installieren und initialisieren Sie die gcloud CLI. Führen Sie für eine vorhandene Installation den folgenden Befehl aus, um auf die neueste Version zu aktualisieren:

    gcloud components update
    

Erforderliche Rollen

Um die Berechtigungen zu erhalten, die Sie zum Analysieren von Zulassungsrichtlinien und zum Gewähren von Zugriff auf Artifact Registry-Repositories benötigen, bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt, den Ordner oder die Organisation zuzuweisen, für die Sie die Berechtigungen analysieren möchten:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Analysieren von Zulassungsrichtlinien und zum Gewähren von Zugriff auf Artifact Registry-Repositories erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind erforderlich, um Zulassungsrichtlinien zu analysieren und Zugriff auf Artifact Registry-Repositories zu gewähren:

  • cloudasset.assets.analyzeIamPolicy
  • cloudasset.assets.searchAllResources
  • cloudasset.assets.searchAllIamPolicies
  • So analysieren Sie Richtlinien mit benutzerdefinierten IAM-Rollen: iam.roles.get
  • So analysieren Sie mit der Google Cloud CLI Richtlinien: serviceusage.services.use
  • So gewähren Sie Rollen für ein Artifact Registry-Repository: artifactregistry.repositories.setIamPolicy

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Zuordnungstool verwenden

Das Zuordnungstool prüft die Zulassungsrichtlinien für einen bestimmten Container Registry-Hostnamen, z. B. gcr.io.

Das Tool sucht nach Berechtigungsgruppen, die in vordefinierten Cloud Storage-Rollen enthalten sind, und ordnet sie Artifact Registry-Rollen zu. Einen Vergleich der Cloud Storage-Berechtigungen mit Artifact Registry-Rollen finden Sie unter Rollenzuordnungen.

So verwenden Sie das Tool zur Rollenzuordnung:

  1. Führen Sie das Mapping-Tool aus:

    gcloud beta artifacts docker upgrade print-iam-policy HOSTNAME \
        --project=PROJECT_ID > POLICY_FILENAME
    

    Ersetzen Sie die folgenden Werte:

    • HOSTNAME ist der Hostname der Container Registry, die Sie analysieren möchten:

      • gcr.io
      • asia.gcr.io
      • eu.gcr.io
      • us.gcr.io
    • PROJECT_ID ist die ID des Google Cloud Projekts mit dem Registry-Host, den Sie analysieren.

    • POLICY_FILE ist der Dateiname der Richtlinie im YAML-Format, der vom Tool zurückgegeben wird.

    Im folgenden Beispiel wird der Storage-Bucket für gcr.io im Projekt my-project auf „Allow“-Richtlinien geprüft, die direkt auf den Bucket angewendet oder von der übergeordneten Organisations-ID 101231231231 und ihren untergeordneten Elementen übernommen wurden.

    gcloud beta artifacts docker upgrade print-iam-policy gcr.io \
        --project=my-project > gcr-io-policy.yaml
    

    Der Befehl gibt eine Richtliniendatei im YAML-Format mit Artifact Registry-Rollenbindungen zurück, die auf vorhandenen Zulassungsrichtlinien für den Speicher-Bucket basieren. Wenn sich das übergeordnete Projekt für den Speicher-Bucket in einer Organisation befindet, enthält die Richtliniendatei Hauptkonten, denen auf Ordner- oder Organisationsebene Zugriff gewährt wurde.

    Das folgende Beispiel enthält beispielsweise Rollenbindungen für Artifact Registry für:

    • Dienstagenten für Cloud Build, Compute Engine und Container Registry Dienst-Agents agieren im Namen vonGoogle Cloud -Diensten.
    • Das Nutzerkonto user@example.com
    • Das vom Nutzer verwaltete Dienstkontodeploy@my-project.iam.gserviceaccount.com.
    bindings:
    - members:
      - service-3213213213213@gcp-sa-cloudbuild.iam.gserviceaccount.com
      - user:user@example.com
      role: roles/artifactregistry.repoAdmin
    - members:
      - serviceAccount:deploy@my-project.iam.gserviceaccount.com
      - serviceAccount:service-1231231231231@@compute-system.iam.gserviceaccount.com
      - serviceAccount:service-1231231231231@containerregistry.iam.gserviceaccount.com
      role: roles/artifactregistry.reader
    
  2. Entfernen Sie die Zeile für den Container Registry-Dienst-Agenten aus der Richtliniendatei, da dieses Dienstkonto keinen Zugriff auf Ihre Artifact Registry-Repositories benötigt. Das Suffix der E-Mail-Adresse des Kundenservicemitarbeiters lautet containerregistry.iam.gserviceaccount.com.

    In der Beispielrichtlinie aus dem vorherigen Schritt lautet die Zeile mit dem Container Registry-Dienst-Agent:

    - serviceAccount:service-1231231231231@containerregistry.iam.gserviceaccount.com
    
  3. Prüfen Sie die anderen Rollenbindungen, um sicherzustellen, dass sie angemessen sind.

    Artifact Registry bietet zusätzliche vordefinierte Rollen, die Sie für einige Hauptkonten in Betracht ziehen sollten. Mit der Rolle „Artifact Registry Create-on-Push Repository Administrator“ kann ein Nutzer beispielsweise gcr.io-Repositories in Artifact Registry erstellen, aber keine anderen Artifact Registry-Repositories.

  4. Fügen Sie Rollenbindungen für alle Hauptkonten hinzu, die in der Richtliniendatei fehlen.

    In der zurückgegebenen Richtliniendatei fehlen möglicherweise die folgenden Hauptkonten:

    • Hauptkonten mit benutzerdefinierten Rollen, die nicht die Berechtigungen haben, die mit dem Tool zum Zuordnen von Rollen verwendet wurden.
    • Hauptkonten, denen Zugriff auf einen übergeordneten Ordner oder eine übergeordnete Organisation gewährt wurde, wenn Sie keine Berechtigungen zum Aufrufen eines übergeordneten Ordners oder einer übergeordneten Organisation haben.
  5. Wenden Sie die Richtlinienbindungen auf Ihre Artifact Registry-Repositories an.

    gcloud artifacts repositories set-iam-policy REPOSITORY FILENAME \
        --project=PROJECT_ID \
        --location=LOCATION
    

    Ersetzen Sie die folgenden Werte:

    • REPOSITORY ist der Name des Repositorys.
    • POLICY_FILENAME ist der Name der Richtliniendatei, die Sie auf das Repository anwenden.
    • PROJECT_ID ist die Projekt-ID.
    • LOCATION ist der regionale oder multiregionale Speicherort für das Repository.

    Im folgenden Beispiel für das Projekt my-project wird die Richtlinie in der Datei gcr-io-policy.yaml auf das Repository gcr.io in der Multi-Region us angewendet:

    gcloud artifacts repositories set-iam-policy gcr.io gcr-io-policy.yaml \
        --project=my-project \
        --location=us
    

    Wenn Sie Rollenbindungen auf eine Ressource einer höheren Ebene anwenden möchten, bearbeiten Sie die vorhandene Richtlinie für das Projekt, den Ordner oder die Organisation mit den hinzuzufügenden Bindungen.

Rollenzuordnungen

In der folgenden Tabelle sehen Sie, welche vordefinierten Rollen für die Artifact Registry bestehenden Container Registry-Nutzern je nach Cloud Storage-Berechtigungen gewährt werden sollten.

Erforderliche Berechtigungen in der Rolle Artifact Registry-Rolle
storage.objects.get
storage.objects.list
Artifact Registry-Leser
storage.buckets.get
storage.objects.get
storage.objects.list
storage.objects.create
Artifact Registry Writer
storage.buckets.get
storage.objects.get
storage.objects.list
storage.objects.create
storage.objects.delete
Artifact Registry-Repository-Administrator
storage.buckets.get
storage.objects.get
storage.objects.list
storage.objects.create
storage.buckets.create
Artifact Registry-Administrator