Zugriffssteuerung konfigurieren

Auf dieser Seite werden die Möglichkeiten der Zugriffssteuerung in Container Registry sowie die Verwendung eines Verschlüsselungsschlüssels dargestellt.

Container Registry verwendet einen Cloud Storage-Bucket als Back-End für die Bereitstellung von Container-Images. Sie können bestimmen, wer Zugriff auf Ihre Container Registry-Images hat, indem Sie die Berechtigungen für den Cloud Storage-Bucket entsprechend festlegen.

Sie verwalten die Zugriffssteuerung in Cloud Storage mithilfe der Cloud Console oder des gsutil-Befehlszeilentools. Weitere Informationen finden Sie in der Dokumentation von gsutil iam.

Berechtigungen und Rollen

In der folgenden Tabelle werden die Berechtigungen und Rollen beschrieben, die für Container Registry-Aktionen erforderlich sind.

Wenn Sie einem einzelnen Storage-Bucket eine Rolle zuweisen und nicht dem gesamten Google Cloud-Projekt, müssen Sie zuerst ein Image in Container Registry am gewünschten Hoststandort hochladen, damit der zugrunde liegende Storage-Bucket vorhanden ist.

Aktion Berechtigungen Rolle Rollentitel
Push (Lesen und Schreiben)

storage.buckets.create

storage.buckets.delete

storage.buckets.get

storage.buckets.list

storage.buckets.update

storage.objects.create

storage.objects.delete

storage.objects.get

storage.objects.list

storage.objects.update

roles/storage.admin Storage-Administrator
Pull (nur Lesen)

storage.objects.get

storage.objects.list

roles/storage.objectViewer Storage-Objekt-Betrachter

Wenn Sie den einheitlichen Zugriff auf Bucket-Ebene für einen Storage-Bucket aktivieren, müssen Sie darauf achten, dass für alle Nutzer und Dienstkonten von Container Registry die oben genannten Rollen explizit festgelegt wurden. In diesem Fall erteilen die Inhaber- und Bearbeiterrolle möglicherweise nicht die erforderlichen Berechtigungen.

Nutzern und anderen Projekten Zugriff auf eine Registry gewähren

Wenn Sie bestimmten Nutzern oder Containerclustern in anderen Projekten Berechtigungen zum Abrufen von Images aus einer Registry gewähren möchten, müssen Sie dem zugrunde liegenden Cloud Storage-Bucket Leserechte erteilen.

Dem Bucket für Ihre Images wird ein [BUCKET_NAME] im folgenden Format zugewiesen:

  • artifacts.[PROJECT-ID].appspot.com für Images, die in eine Registry im Host gcr.io hochgeladen werden, oder
  • [STORAGE-REGION].artifacts.[PROJECT-ID].appspot.com. Dabei gilt:

    • [PROJECT-ID] ist Ihre Projekt-ID der Google Cloud Console.
    • [STORAGE-REGION] ist der Speicherort des Storage-Buckets:
      • us für Registrys im Host us.gcr.io
      • eu für Registrys im Host eu.gcr.io
      • asia für Registrys im Host asia.gcr.io

Sie können für den zugrunde liegenden Cloud Storage-Bucket über die Google Cloud Console oder die Befehlszeile Leseberechtigungen erteilen.

Console

  1. Prüfen Sie, ob ein Image per Push an Container Registry übertragen wurde und der zugrunde liegende Storage-Bucket vorhanden ist.
  2. Rufen Sie die Cloud Storage-Seite in der Cloud Console auf.
  3. Klicken Sie auf den Link artifacts.[PROJECT-ID].appspot.com oder [STORAGE-REGION].artifacts.[PROJECT-ID].appspot.com für den Bucket. Dabei ist [PROJECT-ID] die Google Cloud-Projekt-ID des Projekts, das Container Registry hostet. [STORAGE-REGION] ist die Multiregion (asia, eu oder us) der Registry, die das Image hostet.

  4. Wählen Sie den Tab Berechtigungen.

  5. Klicken Sie auf Mitglieder hinzufügen.

  6. Geben Sie in dem angezeigten Menü im Feld Mitglieder die E-Mail-Adressen der Nutzer ein, die Leseberechtigungen benötigen. Trennen Sie die Adressen durch Kommas. Die E-Mail-Adresse kann mit Folgendem verknüpft sein:

    • ein Google-Konto, z. B. someone@example.com
    • ein Cloud IAM-Dienstkonto
    • dem Compute Engine-Standarddienstkonto eines anderen Projekts. Dieses Konto wird von Google Kubernetes Engine verwendet, um Container-Image-Cluster standardmäßig abzurufen. Es hat das Format [PROJECT_NUMBER]-compute@developer.gserviceaccount.com, wobei [PROJECT-NUMBER] die Google Cloud-Projektnummer des Projekts ist, das den Google Kubernetes Engine-Cluster ausführt.
  7. Wählen Sie im Drop-down-Menü Rolle auswählen für die Kategorie Speicher den Eintrag Storage-Objekt-Betrachter aus.

  8. Klicken Sie auf Hinzufügen.

So wird dem Nutzer die Leseberechtigung für den gesamten Bucket zugewiesen.

gsutil

  1. Prüfen Sie, ob ein Image per Push an Container Registry übertragen wurde und der zugrunde liegende Storage-Bucket vorhanden ist.
  2. Führen Sie den folgenden Befehl in der Shell oder im Terminalfenster aus:

    gsutil iam ch [TYPE]:[EMAIL-ADDRESS]:objectViewer gs://[BUCKET_NAME]
        

    wobei

    • [TYPE] kann eines der Folgenden sein:
      • serviceAccount, wenn [EMAIL-ADDRESS] ein Dienstkonto angibt.
      • user, wenn die [EMAIL-ADDRESS] ein Google-Konto ist.
    • [EMAIL-ADDRESS] kann eines der Folgenden sein:
      • ein Google-Konto, z. B. someone@example.com
      • ein Cloud IAM-Dienstkonto
      • das Compute Engine-Standarddienstkonto eines anderen Projekts. Dieses Konto wird von Google Kubernetes Engine verwendet, um Container-Image-Cluster standardmäßig abzurufen. Es hat das Format [PROJECT_NUMBER]-compute@developer.gserviceaccount.com, wobei [PROJECT-NUMBER] die Google Cloud-Projektnummer des Projekts ist, das den Google Kubernetes Engine-Cluster ausführt.
    • [BUCKET_NAME] ist der Name des Cloud Storage-Buckets, in dem die Images wie oben beschrieben gehostet werden.

Mit dem Befehl gsutil iam ch ändern Sie die IAM-Berechtigungen des Storage-Buckets, in dem die Registry gehostet wird. Wenn Sie einem Konto die Berechtigung objectViewer gewähren, kann das Konto Images aus der Registry herunterladen.

Für Dienstkonten müssen Sie auch den Speicherzugriffsbereich konfigurieren.

  • Führen Sie den folgenden Befehl aus, um "schreibgeschützte" Berechtigungen festzulegen:

    gcloud compute instances set-service-account INSTANCE --scopes=storage-ro
        
  • Um Schreib- und Leseberechtigungen festzulegen, führen Sie den folgenden Befehl aus:

    gcloud compute instances set-service-account INSTANCE --scopes=storage-rw
        

Weitere Informationen finden Sie unter Container Registry mit Google Cloud verwenden.

Bilder bereitstellen

Container Registry ist öffentlich zugänglich, wenn der dem Hoststandort zugrunde liegende Storage-Bucket öffentlich zugänglich ist. Innerhalb eines Projekts sind alle Images an jedem Hoststandort entweder öffentlich oder nicht. Innerhalb des Hosts eines Projekts ist es nicht möglich, nur bestimmte Images öffentlich bereitzustellen. Wenn Sie bestimmte Images öffentlich zugänglich machen möchten:

  • legen Sie diese an einem eigenen Hoststandort ab, den Sie öffentlich freigeben, oder
  • erstellen Sie ein neues Projekt, das die öffentlich zugänglichen Images enthält.

So machen Sie den Storage-Bucket, der dem Repository zugrunde liegt, öffentlich zugänglich, um Container-Images öffentlich bereitzustellen:

Console

  1. Prüfen Sie, ob ein Image per Push an Container Registry übertragen wurde und der zugrunde liegende Storage-Bucket vorhanden ist.

  2. Öffnen Sie in der Cloud Console die Seite Container Registry.

    Seite "Container Registry" öffnen

  3. Klicken Sie im linken Bereich auf Einstellungen.

  4. Ändern Sie die Sichtbarkeit unter Öffentlicher Zugriff auf der Seite Einstellungen zu Öffentlich oder Privat. Diese Einstellung steuert den Zugriff auf den zugrunde liegenden Storage-Bucket.

    Wenn der Host öffentlich sichtbar ist, sind alle Images in Ihrem Google Cloud-Projekt, die sich an diesem Hoststandort befinden, öffentlich zugänglich.

gsutil

  1. Prüfen Sie, ob ein Image per Push an Container Registry übertragen wurde und der zugrunde liegende Storage-Bucket vorhanden ist.

  2. Suchen Sie den Namen des Cloud Storage-Buckets für diese Registry. Listen Sie dazu die Buckets auf:

    gsutil ls
        

    Die URL des Container Registry-Buckets wird als gs://artifacts.[PROJECT-ID].appspot.com oder gs://[STORAGE-REGION].artifacts.[PROJECT-ID].appspot.com aufgeführt. Dabei gilt:

    • [PROJECT-ID] ist Ihre Projekt-ID der Google Cloud Console. Auf eine Domain beschränkte Projekte enthalten den Domainnamen in der Projekt-ID.
    • [STORAGE-REGION] ist der Speicherort des Storage-Buckets:
      • us für Registrys im Host us.gcr.io
      • eu für Registrys im Host eu.gcr.io
      • asia für Registrys im Host asia.gcr.io
  3. Machen Sie den Storage-Bucket von Container Registry mit dem folgenden Befehl öffentlich zugänglich. Dadurch werden alle Images in der Registry öffentlich zugänglich.

    gsutil iam ch allUsers:objectViewer gs://[BUCKET_NAME]
        

    wobei

    • gs://[BUCKET_NAME] ist die URL des Container Registry-Buckets.

Öffentlich zugängliches Bild herunterladen

Wenn Container Registry öffentlich zugänglich ist, kann jeder Images daraus herunterladen. Eine Anleitung finden Sie unter Images aus einer Registry herunterladen.

Berechtigungen aufheben

Console

  1. Rufen Sie die Cloud Storage-Seite in der Cloud Console auf.
  2. Klicken Sie auf den Link artifacts.[PROJECT-ID].appspot.com oder [STORAGE-REGION].artifacts.[PROJECT-ID].appspot.com für den Bucket. Dabei ist [PROJECT-ID] die Google Cloud-Projekt-ID des Projekts, das Container Registry hostet. [STORAGE-REGION] ist die Multiregion (asia, eu oder us) der Registry, die das Image hostet.

  3. Wählen Sie den Tab Berechtigungen.

  4. Klicken Sie auf das Papierkorbsymbol neben jedem Mitglied, das Sie entfernen möchten.

gsutil

Führen Sie den folgenden Befehl in der Shell oder im Terminalfenster aus:

gsutil iam ch -d [MEMBER] gs://[BUCKET_NAME]
    

wobei

  • [MEMBER] kann eines der Folgenden sein:
    • user:[EMAIL_ADDRESS] für ein Google-Konto
    • serviceAccount:[EMAIL_ADDRESS] für ein Cloud IAM-Dienstkonto
    • allUsers für den Widerruf des öffentlichen Zugriffs
  • [BUCKET_NAME] ist der Name des jeweiligen Buckets.