Authentifizierung für Go einrichten

Die Authentifizierung gegenüber Artifact Registry unterscheidet sich beim Hochladen und gepackte Go-Module herunterladen. 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, --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. Von der Google Cloud CLI bereitgestellte Anmeldedaten, einschließlich Nutzeranmeldedaten von den Befehl gcloud auth application-default login.

Durch die Variable GOOGLE_APPLICATION_CREDENTIALS wird 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. Zum Beispiel der Standarddienstkonto für Compute Engine-VMs, Google Kubernetes Engine-Knoten und Cloud Run-Versionen schreibgeschützten Zugriff 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 um sich bei Artifact Registry zu authentifizieren. Um die Authentifizierung zu vereinfachen können Sie mit dem Credential Helper Go die Tokens in Ihrem netrc-Datei zur Authentifizierung bei Artifact Registry.

Der Speicherort der netrc-Datei kann mit der Umgebungsvariable 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 bei Verwendung der folgenden Authentifizierungsmethoden die folgenden Authentifizierungsmethoden: Anmeldedaten in Ihrer Netrc-Datei:

Kurzlebige Anmeldedaten (empfohlen)
Artifact Registry Go Credential Helper-Tool verwenden um die Authentifizierungstokens in der netrc-Datei mithilfe der in Ihrer Umgebung an oder fügen Sie Artifact Registry manuell hinzu Anmeldedaten für die netrc-Datei.
Dienstkontoschlüssel verwenden
Verwenden Sie diese Option, wenn Sie in Ihrer Umgebung keine Anmeldedaten für Authentifizierung. Sie können die Artifact Registry Go Credential Helper-Tool zum Hinzufügen der unverschlüsselten Dienstkontoschlüssel in die Netrc-Datei ein oder fügen Sie ihn manuell in der Datei.

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 Ort 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.

    Um beispielsweise das Modul example.com/foo von der Prüfung auszuschließen, verwenden Sie der öffentlichen Prüfsummendatenbank, führen Sie den folgenden Befehl aus:

      export GONOSUMDB=example.com/foo
    

    Der folgende Befehl schließt alle Module aus, deren Modulpfade in example.com von der Prüfung mit der öffentlichen Prüfsummendatenbank entfernt:

      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 zu Ihrem Dienstkonto .

      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 verwenden an Artifact Registry senden, müssen Sie Ihr OAuth-Token aktualisieren, indem Sie folgenden Befehl, 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 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 access.

  3. Führen Sie den folgenden Befehl aus, um die Anmeldedaten Ihres Dienstkontos 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 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 das regionale oder multiregionale Element Ort Ihres Repositorys.
  • KEY durch den base64-codierten Schlüssel in der Schlüsseldatei des Dienstkontos.

Go Credential Helper zu GONOPROXY hinzufügen

Bevor Sie den Credential Helper Go verwenden können, müssen Sie ihn der GONOPROXY-Liste 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.

Gehen Sie so vor, um Go Credential Helper Ihrer GONOPROXY-Liste hinzuzufügen und zur Einrichtung auszuführen. Ihre Anmeldedaten:

  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 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.

    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 Ihre Netrc-Datei für die Passwortauthentifizierung.

Nächste Schritte