Container Registry und Artifact Registry verwenden unterschiedliche Identity and Access Management-Rollen zur Steuerung Zugriff auf die in der Registry gespeicherten Container-Images.
Für den Wechsel von Container Registry zu Artifact Registry können Sie Folgendes ausführen: einen Google Cloud CLI-Befehl, der:
- Identifiziert Zulassungsrichtlinien, die für einen Cloud Storage-Storage-Bucket gelten zum Speichern von Images für Container Registry
- Gibt eine Richtlinie mit ähnlichen Artifact Registry-Rollen zurück, damit Sie Ihre bestehenden Container Registry-Nutzer Zugriff auf Artifact Registry-Repositories erhalten.
Für den Befehl wird IAM Policy Analyzer verwendet, um IAM-Zulassungsrichtlinien analysieren.
Hinweise
Cloud Asset API aktivieren.
Sie müssen die API in dem Projekt oder der Organisation aktivieren, in dem oder der Sie möchten um vorhandene Zulassungsrichtlinien zu analysieren.
Installieren und initialisieren Sie die gcloud CLI. Für eine vorhandene Installation vorhanden ist, aktualisieren Sie mit dem folgenden Befehl auf die neueste Version:
gcloud components update
Erforderliche Rollen
So erhalten Sie die erforderlichen Berechtigungen zum Analysieren von Zulassungsrichtlinien und zum Gewähren von Zugriff auf Artifact Registry-Repositories: bitten Sie Ihren Administrator, Ihnen für das Projekt, den Ordner oder die Organisation haben, nach Berechtigungen zu analysieren:
-
Cloud-Asset-Betrachter (
roles/cloudasset.viewer
) -
So analysieren Sie Richtlinien mit benutzerdefinierten IAM-Rollen:
Rollenbetrachter (
roles/iam.roleViewer
) -
So analysieren Sie Richtlinien mit der Google Cloud CLI:
Service Usage-Nutzer (
roles/serviceusage.serviceUsageConsumer
) - So gewähren Sie Rollen für ein Artifact Registry-Repository: Artifact Registry-Administrator
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.
Diese vordefinierten Rollen enthalten 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 Richtlinien mit der Google Cloud CLI:
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 zulässigen Richtlinien für eine bestimmte Container Registry
Hostname, z. B. gcr.io
.
Das Tool sucht nach Berechtigungssätzen in vordefinierten Cloud Storage-Rollen und Ordnen sie Artifact Registry-Rollen zu. Zum Vergleich der Cloud Storage-Berechtigungen für Artifact Registry-Rollen finden Sie unter Rollenzuordnungen:
So verwenden Sie das Rollenzuordnungstool:
Führen Sie das Zuordnungstool aus:
gcloud beta artifacts docker upgrade print-iam-policy HOSTNAME \ --project=PROJECT_ID > POLICY_FILENAME
Ersetzen Sie die folgenden Werte:
HOSTNAME ist der gewünschte Container Registry-Hostname analysieren:
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 für die Richtlinie im YAML-Format. die vom Tool zurückgegeben wird.
Mit dem folgenden Beispielbefehl wird der Storage-Bucket auf
gcr.io
in das Projektmy-project
für Zulassungsrichtlinien, die direkt auf die Bucket verwenden oder von der übergeordneten Organisations-ID101231231231
und Nachfolgerelemente.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 der Artifact Registry-Rolle zurück Bindungen basierend auf vorhandenen Zulassungsrichtlinien für den Storage-Bucket. Wenn die übergeordnetes Projekt für den Storage-Bucket in einer Organisation ist, gilt die Richtlinie Datei enthält Hauptkonten, denen Zugriff auf den Ordner oder Organisationsebene.
Das folgende Beispiel enthält Artifact Registry-Rollenbindungen für:
- Cloud Build, Compute Engine und Container Registry Dienst-Agents Servicemitarbeiter handeln im Namen von Google Cloud-Dienste.
- Das Nutzerkonto
user@example.com
- Das vom Nutzer verwaltete Dienstkonto
deploy@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
Entfernen Sie die Zeile für den Container Registry-Dienst-Agent aus der Richtlinie Datei, da dieses Dienstkonto keinen Zugriff auf Ihre Artifact Registry benötigt Repositories. Das Suffix der E-Mail-Adresse des Dienst-Agents lautet
containerregistry.iam.gserviceaccount.com
In der Beispielrichtlinie aus dem vorherigen Schritt wird die Zeile mit dem Der Container Registry-Dienst-Agent ist:
- serviceAccount:service-1231231231231@containerregistry.iam.gserviceaccount.com
Prüfen Sie, ob die anderen Rollenbindungen angemessen sind.
Artifact Registry hat zusätzliche vordefinierte Rollen, die Sie die Sie für einige Hauptkonten berücksichtigen möchten. Beispiel: Artifact Registry Der Repository-Administrator „Create-on-Push“ ermöglicht es einem Hauptkonto, gcr.io-Repositories in Artifact Registry, deren Erstellung jedoch nicht möglich ist anderen Artifact Registry-Repositories erhalten.
Fügen Sie allen Hauptkonten, die in der Richtliniendatei fehlen, Rollenbindungen hinzu.
Die folgenden Hauptkonten fehlen möglicherweise in der zurückgegebenen Richtliniendatei:
- Hauptkonten mit benutzerdefinierten Rollen, und diese benutzerdefinierten Rollen haben nicht die Berechtigungssätze, mit denen das Tool Rollen zugeordnet hat.
- Hauptkonten, denen Zugriff auf einen übergeordneten Ordner oder eine übergeordnete Organisation gewährt wurde, wenn Sie sind nicht berechtigt, einen übergeordneten Ordner oder eine übergeordnete Organisation anzusehen.
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 angewendet werden.
- 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 die Dateigcr-io-policy.yaml
in das Repository mit dem Namengcr.io
imus
Multiregional:gcloud artifacts repositories set-iam-policy gcr.io gcr-io-policy.yaml \ --project=my-project \ --location=us
Wenn Sie Rollenbindungen auf eine übergeordnete Ressource anwenden möchten, bearbeiten Sie die vorhandene Projekt-, Ordner- oder Organisationsrichtlinie mit dem Bindungen, die Sie hinzufügen möchten.
Rollenzuordnungen
Die folgende Tabelle zeigt, welche vordefinierten Artifact Registry-Rollen gewährt werden sollten vorhandenen Container Registry-Nutzer je nach Cloud Storage Berechtigungen, die sie haben.
Erforderliche Berechtigungen für die 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-Autor |
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 |