Authentifizierung für Go einrichten

Die Authentifizierung gegenüber Artifact Registry unterscheidet sich beim Hochladen und gepackte Go-Module heruntergeladen. Wenn Sie beim Erstellen und Hochladen eines Go-Moduls in Artifact Registry sucht das gcloud CLI-Tool nach Anmeldedaten in für Ihre Umgebung, um die Authentifizierung in der folgenden Reihenfolge einzurichten, es sei denn, das --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 .

  2. Von der Google Cloud CLI bereitgestellte Anmeldedaten, einschließlich Nutzeranmeldedaten von den 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 von ADC verwendeten Konten die erforderlichen Berechtigungen. Das Standarddienstkonto für Compute Engine-VMs, Google Kubernetes Engine-Knoten und Cloud Run-Revisionen hat beispielsweise Lesezugriff auf Repositories. Wenn Sie aus diesen Umgebungen über das Standarddienstkonto hochladen möchten, müssen Sie die Berechtigungen ändern.

Beim Herunterladen gepackter Go-Module zur Verwendung als Abhängigkeiten von Artifact Registry verwendet das Go-Binärprogramm die Anmeldedaten in der netrc-Datei zur Authentifizierung bei Artifact Registry. 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, liest der Befehl go $HOME/.netrc auf UNIX-ähnlichen Plattformen oder %USERPROFILE%\_netrc unter Windows.

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 Anmeldedaten für die Artifact Registry 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.

Hinweise

  1. Installieren Los gehts 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. Go zum Herunterladen von Modulen aus Artifact Registry, dem öffentlichen Go Module-Proxy und Quellen in dieser Reihenfolge:

      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 der Paket gespeichert.
  2. Schließen Sie Ihr Modul von der Prüfung mit der öffentlichen Prüfsummendatenbank aus:

      export GONOSUMDB=MODULE_PATH_REGEX
    

    Ersetzen Sie MODULE_PATH_REGEX durch Ihren Modulpfad oder einen regulären 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 zu Ihrem netrc-Datei mit dem Go Credential Helper:

      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 Ort Ihres Repositorys. Wenn Sie mehrere Standorte hinzufügen möchten, trennen Sie sie durch ein Komma. getrennten Liste hinzugefügt.
    • PATH_TO_JSON_KEY Optional. Der Pfad zum Dienstkontoschlüssel.

      Go Credential Helper fügt Ihrer Netrc-Datei Einstellungen für die Authentifizierung hinzu an Artifact Registry senden. Wenn Sie das Flag --json_key übergeben, wird der Schlüssel hinzugefügt zur Passwortauthentifizierung in Ihre Netrc-Datei ein.

  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 Sie eine Authentifizierung mit einem Nutzernamen und Passwort verlangen.

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 Artifact Registry-Rolle für das Dienstkonto zur Bereitstellung des Repositorys Zugriff haben.

  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, trennen Sie sie durch ein Komma. getrennten Liste hinzugefügt.
    • PATH_TO_JSON_KEY ist der Pfad zum JSON-Dienstkonto des Dienstkontos Schlüsseldatei zu suchen.

      Go Credential Helper fügt den Dienstkontoschlüssel Ihrem Netrc hinzu -Datei zur Passwortauthentifizierung.

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

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 Credential Helper 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, direkt aus der Quelle herunterladen möchten, können Sie sie durch Kommas getrennt eingeben. wie im folgenden Beispiel gezeigt:

  export GONOPROXY=MODULE_PATH1, MODULE_PATH2

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

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

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

      export GONOPROXY=github.com/GoogleCloudPlatform/artifact-registry-go-tools
    
  2. Führen Sie den folgenden Befehl aus, um Ihre Artifact Registry-Anmeldedaten zu Ihrem netrc-Datei mit dem Go-Modulpakettool hinzu:

      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 Ort Ihres Repositorys. Um mehrere Standorte hinzuzufügen, geben Sie sie als kommagetrennte Liste.

    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