Authentifizierung für Go einrichten

Die Authentifizierung bei Artifact Registry unterscheidet sich beim Hoch- und Herunterladen von gepackten Go-Modulen. Wenn Sie ein Go-Modul verpacken und in die Artifact Registry hochladen, sucht das gcloud CLI-Tool in Ihrer Umgebung nach Anmeldedaten, 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 Run-Funktionen bietet.

  2. Von der Google Cloud CLI bereitgestellte Anmeldedaten, einschließlich Nutzeranmeldedaten aus dem Befehl gcloud auth application-default login.

Mit der Variablen GOOGLE_APPLICATION_CREDENTIALS wird das Konto für die Authentifizierung explizit angegeben, was die Fehlerbehebung erleichtert. Wenn Sie die Variable nicht verwenden, prüfen Sie, ob alle Konten, die ADC möglicherweise verwendet, die erforderlichen Berechtigungen haben. Das Standarddienstkonto für Compute Engine-VMs, Google Kubernetes Engine-Knoten und Cloud Run-Versionen hat beispielsweise Lesezugriff auf Repositories. Wenn Sie aus diesen Umgebungen mit dem Standarddienstkonto hochladen möchten, müssen Sie die Berechtigungen ändern.

Wenn Sie verpackte Go-Module herunterladen, die als Abhängigkeiten aus Artifact Registry verwendet werden sollen, verwendet die Go-Binärdatei die Anmeldedaten in Ihrer netrc-Datei, um sich bei Artifact Registry zu authentifizieren. Um den Authentifizierungsprozess zu vereinfachen, können Sie den Go-Credential Helper verwenden, um die Tokens in Ihrer netrc-Datei für die Authentifizierung bei Artifact Registry zu aktualisieren.

Der Speicherort der netrc-Datei kann mit der Umgebungsvariablen „netrc“ festgelegt werden. Wenn die Variable NETRC nicht festgelegt ist, wird vom Befehl go auf UNIX-ähnlichen Plattformen $HOME/.netrc oder unter Windows %USERPROFILE%\_netrc gelesen.

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

Kurzlebige Anmeldedaten (empfohlen)
Verwenden Sie den Go Credential Helper-Dienst der Artifact Registry, um die Authentifizierungstokens in Ihrer netrc-Datei mit den Anmeldedaten in Ihrer Umgebung zu aktualisieren, oder fügen Sie die Artifact Registry-Anmeldedaten manuell zur netrc-Datei hinzu.
Dienstkontoschlüssel verwenden
Verwenden Sie diese Option, wenn Sie keine Anmeldedaten in Ihrer Umgebung für die Authentifizierung verwenden können. Sie können den nicht verschlüsselten Dienstkontoschlüssel mit dem Go-Anmeldedaten-Hilfstool der Artifact Registry Ihrer netrc-Datei hinzufügen oder ihn manuell hinzufügen.

Hinweis

  1. Installieren Sie Go 1.15 oder höher.
  2. Installieren Sie das gcloud CLI-Add-on „package-go-module“:

    gcloud components install package-go-module

Go-Umgebung einrichten

  1. Weisen Sie Go an, Module in dieser Reihenfolge herunterzuladen: Artifact Registry, der öffentliche Go-Modul-Proxy und dann die Quelle:

      export GOPROXY=https://LOCATION-go.pkg.dev/PROJECT/REPOSITORY,https://proxy.golang.org,direct
    

    Ersetzen Sie Folgendes:

    • LOCATION ist der regionale oder multiregionale Speicherort des Repositorys.
    • PROJECT ist Ihre Google Cloud Projekt-ID.
    • REPOSITORY ist der Name des Repositorys, in dem das Paket gespeichert ist.
  2. Ihr Modul von der Überprüfung mit der öffentlichen Prüfsummendatenbank ausschließen:

      export GONOSUMDB=MODULE_PATH_REGEX
    

    Ersetzen Sie MODULE_PATH_REGEX durch den Modulpfad oder einen regulären Ausdruck, wenn Sie mehrere Module ausschließen möchten.

    Wenn Sie beispielsweise das Modul example.com/foo von der Prüfung mit der öffentlichen Prüfsummendatenbank ausschließen möchten, führen Sie den folgenden Befehl aus:

      export GONOSUMDB=example.com/foo
    

    Mit dem folgenden Befehl werden alle Module mit Modulpfaden, die mit example.com beginnen, von der Überprüfung mit der öffentlichen Prüfsummendatenbank ausgeschlossen:

      export GONOSUMDB=example.com/*
    

Artifact Registry-Anmeldedaten zur netrc-Datei hinzufügen

  1. Führen Sie den folgenden Befehl aus, um Ihre Artifact Registry-Anmeldedaten mit dem Go-Anmeldedaten-Helper zur Datei „netrc“ hinzuzufügen:

      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 zum Dienstkontoschlüssel.

      Der Go-Credential Helper 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 Ihrer netrc-Datei für die Passwortauthentifizierung hinzugefügt.

  2. Wenn Sie kurzlebige Anmeldedaten für die Authentifizierung bei Artifact Registry verwenden, müssen Sie Ihr OAuth-Token aktualisieren, indem Sie den folgenden Befehl ausführen, bevor Sie Ihr 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

Verwenden Sie diesen Ansatz, wenn eine Authentifizierung mit einem Nutzernamen und Passwort erforderlich ist.

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. Weisen Sie dem Dienstkonto die entsprechende Artifact Registry-Rolle zu, um den Zugriff auf das Repository zu ermöglichen.

  3. Führen Sie den folgenden Befehl aus, um Ihrer netrc-Datei mit dem Go-Anmeldedaten-Helfer die Anmeldedaten für Ihr Dienstkonto hinzuzufügen:

      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-Helper fügt Ihrer netrc-Datei den Dienstkontoschlüssel für die Passwortauthentifizierung hinzu.

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

machine LOCATION.pkg.dev
login _json_key_base64
password KEY

Ersetzen Sie Folgendes:

  • LOCATION durch den regionalen oder multiregionalen Speicherort Ihres Repositorys.
  • KEY durch den base64-codierten Schlüssel in Ihrer Dienstkonto-Schlüsseldatei ersetzen.

Go-Anmeldedaten-Hilfsprogramm zu GONOPROXY hinzufügen

Bevor Sie den Go-Anmeldedaten-Helper verwenden können, müssen Sie ihn der Liste GONOPROXY hinzufügen, damit Go ihn direkt von GitHub herunterlädt. Wenn Sie andere Module haben, die direkt von der Quelle heruntergeladen werden sollen, können Sie sie in einer kommagetrennten Liste hinzufügen, wie im folgenden Beispiel gezeigt:

  export GONOPROXY=MODULE_PATH1, MODULE_PATH2

Dabei sind MODULE_PATH1 und MODULE_PATH2 die Modulpfade der Module, die aus der Quelle heruntergeladen werden sollen.

So fügen Sie der GONOPROXY-Liste den Go-Anmeldedaten-Assistenten hinzu und führen ihn aus, um Ihre Anmeldedaten einzurichten:

  1. Go-Anmeldedaten-Helper zu GONOPROXY hinzufügen

      export GONOPROXY=github.com/GoogleCloudPlatform/artifact-registry-go-tools
    
  2. Führen Sie den folgenden Befehl aus, um Ihrer netrc-Datei mit dem Go-Modul-Pakettool Ihre Artifact Registry-Anmeldedaten hinzuzufügen:

      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/service/account/key.json]
    

    Dabei ist LOCATION der regionale oder multiregionale Speicherort Ihres Repositorys. Wenn Sie mehrere Standorte hinzufügen möchten, geben Sie sie als durch Kommas getrennte Liste ein.

    Der Go-Credential Helper 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 Ihrer netrc-Datei für die Passwortauthentifizierung hinzugefügt.

Nächste Schritte