Authentifizierung für Go einrichten

Die Authentifizierung bei Artifact Registry unterscheidet sich beim Hoch- und Herunterladen von gepackten Go-Modulen. Beim Packen und Hochladen eines Go-Moduls in Artifact Registry sucht das gcloud CLI-Tool nach Anmeldedaten in Ihrer Umgebung, um die Authentifizierung in der folgenden Reihenfolge einzurichten. Dies gilt nicht, wenn das Flag --json_key zur Verwendung eines Dienstkontoschlüssels übergeben wird.

  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. Von der Google Cloud CLI bereitgestellte Anmeldedaten, einschließlich Nutzeranmeldedaten vom Befehl gcloud auth application-default login.

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

Beim Herunterladen von gepackten Go-Modulen zur Verwendung als Abhängigkeiten aus Artifact Registry verwendet das Go-Binärprogramm die Anmeldedaten in Ihrer NETrc-Datei zur Authentifizierung bei Artifact Registry. Zur Vereinfachung des Authentifizierungsvorgangs können Sie mit dem Go Credential Helper die Tokens in der NETRC-Datei für die Authentifizierung bei Artifact Registry aktualisieren.

Der Speicherort der netrc-Datei kann mit der netrc-Umgebungsvariable festgelegt werden. Wenn die Variable NETRC nicht festgelegt ist, liest der Befehl go $HOME/.netrc auf UNIX-ähnlichen Plattformen oder %USERPROFILE%\_netrc unter Windows aus.

Artifact Registry unterstützt die folgenden Authentifizierungsmethoden, wenn Anmeldedaten in Ihrer Netrc-Datei verwendet werden:

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

Hinweise

  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 aus Artifact Registry, dem öffentlichen Go-Modul-Proxy herunterzuladen und dann in dieser Reihenfolge als Quelle zu beziehen:

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

    Ersetzen Sie Folgendes:

    • LOCATION ist der regionale oder multiregionale Standort des Repositorys.
    • PROJECT ist Ihre Google Cloud-Projekt-ID.
    • REPOSITORY ist der Name des Repositorys, in dem das Paket gespeichert ist.
  2. So schließen Sie das Modul von der Prüfung mithilfe der öffentlichen Prüfsummendatenbank aus:

      export GONOSUMDB=MODULE_PATH_REGEX
    

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

    Wenn Sie beispielsweise das Modul example.com/foo aus 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 Prüfung über die öffentliche 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 Credential Helper in die Netrc-Datei einzufü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 Standort des 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.

      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 zur Passwortauthentifizierung in die Netrc-Datei eingefügt.

  2. Wenn Sie kurzlebige Anmeldedaten für die Authentifizierung bei Artifact Registry verwenden, müssen Sie das OAuth-Token mit dem folgenden Befehl aktualisieren, 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

Verwenden Sie diesen Ansatz, wenn Sie eine Authentifizierung mit einem Nutzernamen und einem 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. Weisen Sie dem Dienstkonto die entsprechende Artifact Registry-Rolle zu, um Zugriff auf das Repository zu gewähren.

  3. Führen Sie den folgenden Befehl aus, um die Anmeldedaten Ihres Dienstkontos mit dem Go Credential Helper zur Netrc-Datei 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 Standort des 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.

      Go Credential Helper fügt Ihrer NETrc-Datei den Dienstkontoschlüssel zur Passwortauthentifizierung hinzu.

Sie können Ihren Dienstkontoschlüssel auch manuell in der netrc-Datei 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 des Repositorys
  • KEY durch den base64-codierten Schlüssel in der Schlüsseldatei des Dienstkontos.

Go Credential Helper zu GONOPROXY hinzufügen

Bevor Sie Go Credential Helper verwenden können, müssen Sie es der GONOPROXY-Liste hinzufügen, damit Go es direkt von GitHub herunterlädt. Wenn Sie weitere Module direkt aus der Quelle herunterladen möchten, können Sie sie in einer durch Kommas getrennten Liste hinzufügen, wie im folgenden Beispiel gezeigt:

  export GONOPROXY=MODULE_PATH1, MODULE_PATH2

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

So fügen Sie Go Credential Helper zur Liste GONOPROXY hinzu und führen es aus, um Ihre Anmeldedaten einzurichten:

  1. Go Credential Helper 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 mit dem Go-Modulpakettool in die Netrc-Datei einzufü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 Standort Ihres Repositorys. Wenn Sie mehrere Standorte hinzufügen möchten, geben Sie sie als durch Kommas getrennte Liste ein.

    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 zur Passwortauthentifizierung in die Netrc-Datei eingefügt.

Nächste Schritte