Wenn Sie Ihre Clientumgebung mit Artifact Registry authentifizieren, können Sie private Go-Module speichern und als Build-Abhängigkeiten abrufen.
Authentifizierungsoptionen
Die Einrichtung der Authentifizierung unterscheidet sich beim Hoch- und Herunterladen von Paketen.
Authentifizierung für Uploads
Beim Verpacken und Hochladen eines Go-Moduls in Artifact Registry sucht das gcloud CLI-Tool in Ihrer Umgebung nach Anmeldedaten, um die Authentifizierung in der folgenden Reihenfolge einzurichten, sofern nicht das Flag --json_key übergeben wird, um einen Dienstkontoschlüssel zu verwenden.
Standardanmeldedaten für Anwendungen (ADC), eine Strategie, die in der folgenden Reihenfolge nach Anmeldedaten sucht:
In der Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALSdefinierte Anmeldedaten.Anmeldedaten, die vom Standarddienstkonto für Compute Engine, Google Kubernetes Engine, Cloud Run, App Engine oder Cloud Run Functions bereitgestellt werden.
Von der Google Cloud CLI bereitgestellte Anmeldedaten, einschließlich Nutzeranmeldedaten aus dem Befehl
gcloud auth application-default login.
Mit der Variable 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 von den Standardanmeldedaten für Anwendungen 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 Uploads aus diesen Umgebungen mit dem Standarddienstkonto ausführen möchten, müssen Sie die Berechtigungen ändern.
Authentifizierung für Downloads
Wenn Sie gepackte Go-Module als Abhängigkeiten aus Artifact Registry herunterladen, 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 Umgebungsvariable „netrc“ festgelegt werden.
Wenn die Variable NETRC nicht festgelegt ist, liest der Befehl go auf UNIX-ähnlichen Plattformen $HOME/.netrc oder auf Windows %USERPROFILE%\_netrc.
Artifact Registry unterstützt die folgenden Authentifizierungsmethoden, wenn Sie Anmeldedaten in Ihrer netrc-Datei verwenden:
- Kurzlebige Anmeldedaten (empfohlen)
- Verwenden Sie das Go-Credential-Helper-Tool von Artifact Registry, um die Authentifizierungstokens in Ihrer netrc-Datei mit den Anmeldedaten in Ihrer Umgebung zu aktualisieren, oder fügen Sie Ihre Artifact Registry-Anmeldedaten manuell der netrc-Datei hinzu.
- Dienstkontoschlüssel verwenden
- Verwenden Sie diese Option, wenn Sie in Ihrer Umgebung keine Anmeldedaten für die Authentifizierung verwenden können. Sie können das Go-Tool für die Anmeldedatenunterstützung von Artifact Registry verwenden, um den unverschlüsselten Dienstkontoschlüssel Ihrer netrc-Datei hinzuzufügen, oder ihn manuell zur Datei hinzufügen.
Hinweis
- Installieren Sie Go 1.15 oder höher.
Installieren Sie das gcloud CLI-Add-on „package-go-module“:
gcloud components install package-go-module
Go-Umgebung einrichten
Weisen Sie Go an, Module aus Artifact Registry, dem öffentlichen Go-Modul-Proxy und dann der Quelle in dieser Reihenfolge herunterzuladen:
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 Projekt-ID von Google Cloud.
- REPOSITORY ist der Name des Repositorys, in dem das Paket gespeichert ist.
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 Ausdruck, wenn Sie mehrere Module ausschließen möchten.
Wenn Sie beispielsweise das Modul
example.com/foovon 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.combeginnen, von der Prüfung mit der öffentlichen Prüfsummendatenbank ausgeschlossen:export GONOSUMDB=example.com/*
Artifact Registry-Anmeldedaten zur netrc-Datei hinzufügen
Führen Sie den folgenden Befehl aus, um Ihre Artifact Registry-Anmeldedaten mit dem Go-Credential Helper Ihrer netrc-Datei hinzuzufügen:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.4.0 \ add-locations --locations=LOCATION \ --json_key=PATH_TO_JSON_KEYWobei:
- LOCATION ist der regionale oder multiregionale Standort 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-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 Ihre netrc-Datei eingefügt.
Wenn Sie kurzlebige Anmeldedaten für die Authentifizierung bei Artifact Registry verwenden, müssen Sie Ihr OAuth-Token aktualisieren. Führen Sie dazu den folgenden Befehl aus, bevor Sie Ihr Modul als Abhängigkeit verwenden:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.4.0 refresh
Mit einem Dienstkontoschlüssel authentifizieren
Verwenden 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:
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.
Weisen Sie dem Dienstkonto die entsprechende Artifact Registry-Rolle zu, um Repository-Zugriff zu gewähren.
Führen Sie den folgenden Befehl aus, um die Anmeldedaten Ihres Dienstkontos mit dem Go-Anmeldedaten-Hilfsprogramm Ihrer netrc-Datei hinzuzufügen:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.4.0 \ add-locations --locations=LOCATION \ --json_key=PATH_TO_JSON_KEYWobei:
- LOCATION ist der regionale oder multiregionale Standort 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-Credential-Helper fügt den Dienstkontoschlüssel zur Passwortauthentifizierung in Ihre netrc-Datei ein.
Sie können den Dienstkontoschlüssel auch manuell im folgenden Format in die netrc-Datei einfü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 Ihrer Dienstkonto-Schlüsseldatei.
Fügen Sie den Go-Credential Helper zu GONOPROXY hinzu.
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 weitere Module haben, die direkt aus der Quelle heruntergeladen werden sollen, 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 den Go-Anmeldedaten-Helper der Liste GONOPROXY hinzu und führen ihn aus, um Ihre Anmeldedaten einzurichten:
Fügen Sie den Go-Anmeldedaten-Helper zu Ihrer
GONOPROXYhinzu.export GONOPROXY=github.com/GoogleCloudPlatform/artifact-registry-go-tools
Führen Sie den folgenden Befehl aus, um Ihre Artifact Registry-Anmeldedaten mit dem Go-Modulpakettool Ihrer netrc-Datei hinzuzufügen:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.4.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
- Dann bietet sich der Schnellstart an.
- Go-Module verwalten