Authentifizierung für Go einrichten

Die Authentifizierung bei Artifact Registry unterscheidet sich beim Hochladen und Herunterladen von gepackten Go-Modulen. Beim Packen und Hochladen eines Go-Moduls in Artifact Registry sucht das gcloud CLI nach Anmeldedaten in Ihrer Umgebung, um die Authentifizierung in der folgenden Reihenfolge einzurichten, es sei denn, das Flag --json_key wird übergeben, um einen Dienstkontoschlüssel zu verwenden.

  1. Standardanmeldedaten für Anwendungen (ADC), eine Strategie, die in der folgenden Reihenfolge nach Anmeldedaten sucht:

    1. In der Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS definierte Anmeldedaten.

    2. Anmeldedaten, die das Standarddienstkonto für Compute Engine, Google Kubernetes Engine, Cloud Run, App Engine oder Cloud Functions bietet.

  2. Anmeldedaten, die von der Google Cloud CLI bereitgestellt werden, einschließlich Nutzeranmeldedaten aus dem Befehl gcloud auth application-default login.

Durch die Variable GOOGLE_APPLICATION_CREDENTIALS wird das Konto für die Authentifizierung explizit, was die Fehlerbehebung vereinfacht. Wenn Sie die Variable nicht verwenden, prüfen Sie, ob alle Konten, die in ADC verwendet werden könnten, die erforderlichen Berechtigungen haben. Das Standarddienstkonto für Compute Engine-VMs, Google Kubernetes Engine-Knoten und Cloud Run-Überarbeitungen hat beispielsweise Lesezugriff auf Repositories. Wenn Sie Inhalte aus diesen Umgebungen mit dem Standarddienstkonto hochladen möchten, müssen Sie die Berechtigungen ändern.

Wenn Sie gepackte Go-Module zur Verwendung als Abhängigkeiten aus Artifact Registry herunterladen, verwendet das Go-Binärprogramm die Anmeldedaten in Ihrer .netrc-Datei, um sich bei Artifact Registry zu authentifizieren.

Artifact Registry unterstützt die folgenden Authentifizierungsmethoden, wenn Sie in Ihrer .netrc-Datei Anmeldedaten verwenden:

Kurzlebige Anmeldedaten (empfohlen)
Verwenden Sie das Artifact Registry Go Credential Helper-Tool, um die Authentifizierungstokens in Ihrer .netrc-Datei mit den Anmeldedaten in Ihrer Umgebung zu aktualisieren. Sie können Ihre Artifact Registry-Anmeldedaten auch manuell in die .netrc-Datei einfügen.
Dienstkontoschlüssel verwenden
Verwenden Sie diese Option, wenn Sie in Ihrer Umgebung keine Anmeldedaten für die Authentifizierung verwenden können. Mit dem Artifact Registry-Assistenten können Sie den unverschlüsselten Dienstkontoschlüssel in die Datei .netrc aufnehmen oder ihn manuell hinzufügen.

Hinweise

  1. Installieren Sie Go 1.15 oder höher.
  2. Installieren Sie das Add-on für die gcloud CLI (package-go-module):

    gcloud components install package-go-module

Artifact Registry-Anmeldedaten zur Datei .netrc hinzufügen

  1. Führen Sie den folgenden Befehl aus, um die Artifact Registry-Anmeldedaten mit dem Go-Anmeldedaten-Assistenten in die Datei .netrc aufzunehmen:

      GOPROXY=proxy.golang.org \
          go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 \
          add-locations --locations=LOCATION \
          --json_key=PATH_TO_JSON_KEY
    

    Wobei:

    • LOCATION ist der regionale oder multiregionale Speicherort Ihres Repositorys. Wenn Sie mehrere Standorte hinzufügen möchten, geben Sie sie als durch Kommas getrennte Liste ein.
    • PATH_TO_JSON_KEY Optional. Der Pfad zu Ihrem Dienstkontoschlüssel.

      Der Go-Anmeldedaten-Assistent fügt Ihrer .netrc-Datei Einstellungen für die Authentifizierung bei Artifact Registry hinzu. Wenn Sie das Flag --json_key übergeben, wird der Schlüssel zur Passwortauthentifizierung in die Datei .netrc eingefügt.

  2. Wenn Sie für die Authentifizierung bei Artifact Registry kurzlebige Anmeldedaten verwenden, müssen Sie das OAuth-Token aktualisieren. Führen Sie dazu den folgenden Befehl aus, bevor Sie das Modul als Abhängigkeit verwenden:

      GOPROXY=proxy.golang.org \
      go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 refresh
    

Mit einem Dienstkontoschlüssel authentifizieren

Nutzen Sie diesen Ansatz, wenn Sie eine Authentifizierung mit Nutzername und Passwort benötigen.

Dienstkontoschlüssel sind langlebige Anmeldedaten. Verwenden Sie die folgenden Richtlinien, um den Zugriff auf Ihre Repositories einzuschränken:

  • Verwenden Sie ein dediziertes Dienstkonto für die Interaktion mit Repositories.
  • Erteilen Sie die vom Dienstkonto erforderliche Artifact Registry-Mindestrolle. Weisen Sie z. B. Artifact Registry-Reader einem Dienstkonto zu, das nur Artefakte herunterlädt.
  • Wenn Gruppen in Ihrer Organisation verschiedene Zugriffsebenen für bestimmte Repositories benötigen, erteilen Sie den Zugriff auf Repository-Ebene und nicht auf Projektebene.
  • Folgen Sie den Best Practices für die Verwaltung von Anmeldedaten.

So konfigurieren Sie die Authentifizierung:

  1. Erstellen Sie ein Dienstkonto, das im Namen Ihrer Anwendung agieren soll, oder wählen Sie ein vorhandenes Dienstkonto für die Automatisierung aus.

    Sie benötigen den Speicherort der Dienstkonto-Schlüsseldatei, um damit die Authentifizierung bei Artifact Registry einzurichten. Auf der Seite „Dienstkonten“ können Sie die Schlüssel vorhandener Konten aufrufen und neue Schlüssel erstellen.

    Zur Seite „Dienstkonten“

  2. Gewähren Sie dem Dienstkonto die entsprechende Artifact Registry-Rolle, um Zugriff auf das Repository zu gewähren.

  3. Führen Sie den folgenden Befehl aus, um die Dienstkonto-Anmeldedaten mit dem Go-Anmeldedaten-Assistenten in die Datei .netrc aufzunehmen:

      GOPROXY=proxy.golang.org \
          go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 \
          add-locations --locations=LOCATION \
          --json_key=PATH_TO_JSON_KEY
    

    Wobei:

    • LOCATION ist der regionale oder multiregionale Speicherort Ihres Repositorys. Wenn Sie mehrere Standorte hinzufügen möchten, geben Sie sie als durch Kommas getrennte Liste ein.
    • PATH_TO_JSON_KEY ist der Pfad zur JSON-Schlüsseldatei des Dienstkontos.

      Der Go-Anmeldedaten-Assistent fügt den Dienstkontoschlüssel für die Passwortauthentifizierung in Ihre .netrc-Datei ein.

Sie können den Dienstkontoschlüssel auch manuell in der Datei .netrc im folgenden Format hinzufügen:

machine LOCATION.pkg.dev
login json_key_base64
password KEY

Ersetzen Sie Folgendes:

  • LOCATION durch den regionalen oder multiregionalen Standort Ihres Repositorys.
  • KEY durch den base64-codierten Schlüssel in der Schlüsseldatei des Dienstkontos.

Nächste Schritte