Blog

So gewähren Sie Zugriff auf die Google Container Registry

Mark van Holsteijn

Aktualisiert Oktober 21, 2025
3 Minuten

Google Cloud bietet eine Docker-Image-Registry, die Sie zum Speichern Ihrer privaten Docker-Images verwenden können. Obwohl es sich bei
um einen separaten Google-Dienst handelt, sind damit keine spezifischen IAM-Rollen verbunden, mit denen
Sie den Zugriff auf Ihre Registry steuern können. Stattdessen verwenden Sie die Google Cloud Storage Rollen und Berechtigungen für den Bucket, der
implizit für Sie erstellt wird. In diesem Blog zeigen wir Ihnen, wie Sie den Container-Registry-Speicher-Bucket in
Ihrem Projekt erstellen und den Zugriff darauf gewähren.

Erstellen des Speicherbereiches

GCR erstellt einen Bucket "artifacts.[PROJECT-ID].appspot.com" für Sie, in dem es Ihre Bilder speichert, die Sie an die Domain "gcr.io" pushen. Wenn Sie an eine der regionalen Registraturen pushen, lautet der Name "[REGION].artifacts.[PROJEKT-ID].appspot.com". Der Registry-Speicher-Bucket wird nur erstellt, wenn Sie ein Docker-Image pushen.

Authentifizierung

Um ein Image auf Ihre private Docker-Registry zu übertragen, müssen Sie sich zunächst authentifizieren. Es gibt mehrere Methoden, aber die einfachste ist die Verwendung des Google Container Registry Credential Helper für Docker. Sie installieren ihn, indem Sie Folgendes eingeben:

gcloud components install docker-credential-gcr
docker-credential-gcr configure-docker

Ein Bild verschieben

Um den zugrundeliegenden Cloud-Speicher-Bucket zu erstellen, müssen Sie zunächst ein Image pushen. In diesem Beispiel pushen Sie das neueste NGiNX-Image in Ihre private Registry:

PROJECT=$(gcloud config --quiet get-value project)
docker pull nginx:latest
docker tag nginx:latest gcr.io/$PROJECT/nginx:latest
docker push gcr.io/$PROJECT/nginx:latest

Nachdem das Image gepusht wurde, wird der Registry-Storage-Bucket erstellt:

gsutil ls gs://artifacts.$PROJECT.appspot.com

Zugang gewähren

Wenn Sie die Dokumentation zur Zugriffskontrolle lesen, werden Sie feststellen, dass es keine
spezifischen IAM-Rollen oder Berechtigungen gibt, die mit dem Container Registry Service verbunden sind. Sie können jedoch IAM-Rollen für den zugrunde liegenden Speicher-Bucket verwenden, um die Zugriffskontrolle einzurichten. Um Lesezugriff auf die Registry zu erhalten, binden Sie die Rolle "Storage Object Viewer" an die Identitäten, denen Sie Zugriff gewähren möchten. In
gewährt in diesem Beispiel die Identität "allUsers" öffentlichen Lesezugriff:

gsutil iam ch allusers:objectViewer gs://artifacts.$PROJECT.appspot.com

Anstatt den öffentlichen Zugriff zu gewähren, können Sie die Rolle auch einem bestimmten Benutzer, einer Google-Gruppe, einem Dienstkonto oder einer Domäne zuweisen. Um
die Berechtigung zu erteilen, auch Bilder in das Repository zu verschieben, erteilen Sie die Rolle Storage Object Admin:

gsutil ls gs://artifacts.$PROJECT.appspot.com

Beachten Sie, dass es keine Möglichkeit gibt, den Zugriff auf einzelne Bilder im Projekt zu kontrollieren.

Infrastruktur als Code

Wie Sie vielleicht wissen, machen wir bei binx.io nie etwas über die Konsole und vermeiden einzelne CLI-Befehle, wie wir es oben getan haben. Fügen Sie also das folgende Snippet zu Ihrem Terraform-Projekt hinzu und Sie sind bereit, den Zugriff auf Ihre
Google Container Registry zu verwalten:

/* ensure that the image registry bucket is created by pushing an empty image to it */
resource "null_resource" "docker-registry" {
 provisioner "local-exec" {
  command = <<EOF
   gcloud components install docker-credential-gcr && 
   docker-credential-gcr configure-docker && 
   (echo 'FROM scratch'; echo 'LABEL maintainer=binx.io') | 
   docker build -t gcr.io/${var.project}/scratch:latest - && 
   docker push gcr.io/${var.project}/scratch:latest
EOF
 }
 depends_on = ["google_project_service.containerregistry"]
}

resource “google_storage_bucket_iam_binding” “binding” {
 role   = “roles/storage.viewer”
 bucket = “artifacts.${var.project}.appspot.com”

 members = [
  “allUsers”,
 ]
 depends_on = [“null_resource.docker-registry”]
}
resource “google_project_service” “containerregistry” {
 service            = “containerregistry.googleapis.com”
 disableondestroy = false
}

Zusammenfassung

Google Cloud bietet eine private Docker Image Registry, die Sie zum Speichern Ihrer eigenen Docker-Images verwenden können. Sie können den Zugriff
auf Ihre Registry gewähren, indem Sie entweder den "Storage Object Viewer" oder den "Storage Object Admin" an den zugrundeliegenden Speicher-Bucket binden, um nur Lese- bzw. Lese-/Schreibzugriff zu ermöglichen.

Verfasst von

Mark van Holsteijn

Mark van Holsteijn is a senior software systems architect at Xebia Cloud-native solutions. He is passionate about removing waste in the software delivery process and keeping things clear and simple.

Contact

Let’s discuss how we can support your journey.