Container Registry und Artifact Registry verwenden unterschiedliche Rollen für Identity and Access Management, um den Zugriff auf die in der Registry gespeicherten Container-Images zu steuern.
Für den Wechsel von Container Registry zu Artifact Registry können Sie einen Google Cloud CLI-Befehl ausführen, der:
- Identifiziert Zulassungsrichtlinien, die für einen Cloud Storage Storage-Bucket gelten, in dem Images für Container Registry gespeichert werden
- Gibt eine Richtlinie mit ähnlichen Artifact Registry-Rollen zurück, damit Sie Ihren vorhandenen Container Registry-Nutzern Zugriff auf Artifact Registry-Repositories gewähren können.
Für den Befehl wird IAM Policy Analyzer verwendet, um IAM-Zulassungsrichtlinien zu analysieren.
Hinweise
Cloud Asset API aktivieren.
Sie müssen die API in dem Projekt oder der Organisation aktivieren, in der Sie vorhandene Zulassungsrichtlinien analysieren möchten.
Installieren und initialisieren Sie die gcloud CLI. Aktualisieren Sie bei einer vorhandenen Installation mit dem folgenden Befehl auf die neueste Version:
gcloud components update
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt, den Ordner oder die Organisation zu gewähren, für die Berechtigungen analysiert werden sollen:
-
Cloud-Asset-Betrachter (
roles/cloudasset.viewer
) -
So analysieren Sie Richtlinien mit benutzerdefinierten IAM-Rollen:
Rollenbetrachter (
roles/iam.roleViewer
) -
So verwenden Sie die Google Cloud CLI zum Analysieren von Richtlinien: 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 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 Richtlinien mit der Google Cloud CLI:
serviceusage.services.use
-
So gewähren Sie Rollen für ein Artifact Registry-Repository:
artifactregistry.repositories.setIamPolicy
Möglicherweise können Sie diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Zuordnungstool verwenden
Das Zuordnungstool prüft die zulässigen Richtlinien für einen bestimmten Container Registry-Hostnamen wie gcr.io
.
Das Tool prüft, ob Berechtigungssätze in vordefinierten Cloud Storage-Rollen vorhanden sind, und ordnet sie Artifact Registry-Rollen zu. Einen Vergleich der Cloud Storage-Berechtigungen und 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 Container Registry-Hostname, den das Tool analysieren soll:
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.
Der folgende Beispielbefehl analysiert den Storage-Bucket im Projekt
my-project
aufgcr.io
im Hinblick auf Zulassungsrichtlinien, die direkt auf den Bucket angewendet oder von der übergeordneten Organisations-ID101231231231
und deren Nachfolgern übernommen werden.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 Storage-Bucket basieren. Wenn sich das übergeordnete Projekt für den Storage-Bucket in einer Organisation befindet, enthält die Richtliniendatei Hauptkonten, denen Zugriff auf Ordner- oder Organisationsebene gewährt wurde.
Das folgende Beispiel enthält Artifact Registry-Rollenbindungen für:
- Dienst-Agents für Cloud Build, Compute Engine und Container Registry. Dienst-Agents handeln im Namen von Google Cloud-Diensten.
- 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 Richtliniendatei, da dieses Dienstkonto keinen Zugriff auf Ihre Artifact Registry-Repositories benötigt. Das Suffix der E-Mail-Adresse des Dienst-Agents 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
Prüfen Sie, ob die anderen Rollenbindungen angemessen sind.
Artifact Registry hat zusätzliche vordefinierte Rollen, die Sie für einige Hauptkonten in Betracht ziehen sollten. Der Artifact Registry-Repository-Administrator „Create-on-Push“ erlaubt einem Hauptkonto das Erstellen von gcr.io-Repositories in Artifact Registry, aber nicht das Erstellen weiterer Artifact Registry-Repositories.
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 Berechtigungen, die das Tool zum Zuordnen von Rollen verwendet hat.
- Hauptkonten, denen Zugriff auf einen übergeordneten Ordner oder eine übergeordnete Organisation gewährt wurde, wenn Sie nicht berechtigt sind, 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 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 Dateigcr-io-policy.yaml
auf das Repository mit dem Namengcr.io
am multiregionalen Standortus
angewendet:gcloud artifacts repositories set-iam-policy gcr.io gcr-io-policy.yaml \ --project=my-project \ --location=us
Wenn Sie Rollenbindungen auf eine höhere Ressource anwenden möchten, bearbeiten Sie die vorhandene Projekt-, Ordner- oder Organisationsrichtlinie mit den Bindungen, die Sie hinzufügen möchten.
Rollenzuordnungen
Die folgende Tabelle zeigt, welche vordefinierten Artifact Registry-Rollen bestehenden Container Registry-Nutzern abhängig von ihren Cloud Storage-Berechtigungen gewährt werden sollten.
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 |