Sie müssen sich bei Artifact Registry authentifizieren, wenn Sie eine Drittanbieteranwendung für die Verbindung mit einem Repository verwenden.
Für Cloud Build- oder Google Cloud-Laufzeitumgebungen wie Google Kubernetes Engine und Cloud Run muss die Authentifizierung nicht konfiguriert werden. Sie sollten jedoch prüfen, ob die erforderlichen Berechtigungen konfiguriert sind.
Hinweis
-
Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:
gcloud init
- (Optional) Konfigurieren Sie die Standardeinstellungen für gcloud-Befehle.
- Wenn Sie eine Verbindung zu Repositories von Windows herstellen, installieren Sie PowerShell.
- Erstellen Sie ein Dienstkonto, das im Namen Ihrer Anwendung agiert.
- Wenn Sie npm noch nicht kennen, lesen Sie die Übersicht, um mehr über Paketumfang und die Konfigurationsdatei für Ihre Authentifizierungseinstellungen zu erfahren.
Überblick
Artifact Registry unterstützt die folgenden Authentifizierungsmethoden.
- Anmeldedaten-Assistent verwenden
- Diese Option bietet die größte Flexibilität. Wenn Sie den Hilfsprogramm in die npm-Konfiguration aufnehmen, sucht Artifact Registry nach den Anmeldedaten des Dienstkontos in der Umgebung.
- Dienstkontoschlüssel als Anmeldedaten angeben
- Verwenden Sie diese Option, wenn eine Anwendung nicht die Standardanmeldedaten für Anwendungen, sondern die Authentifizierung mit einem Nutzernamen und einem Passwort unterstützt.
Mit Credential Helper authentifizieren
google-Artifactrepository-auth ist eine Clientbibliothek, die Anmeldedaten für Artifact Registry-Repositories abruft.
Artifact Registry sucht in der folgenden Reihenfolge nach Anmeldedaten:
Standardanmeldedaten für Anwendungen (ADC), eine Strategie, die in der folgenden Reihenfolge nach Anmeldedaten sucht:
In der Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALS
definierte Anmeldedaten.Anmeldedaten, die das Standarddienstkonto für Compute Engine, Google Kubernetes Engine, Cloud Run, App Engine oder Cloud Functions bietet.
Anmeldedaten, die von der Google Cloud CLI bereitgestellt werden, einschließlich Nutzeranmeldedaten aus dem Befehl
gcloud auth application-default login
.
Durch die Variable GOOGLE_APPLICATION_CREDENTIALS
wird das Konto für die Authentifizierung explizit, was die Fehlerbehebung vereinfacht. Wenn Sie die Variable nicht verwenden, prüfen Sie, ob alle Konten, die in ADC 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 Inhalte aus diesen Umgebungen mit dem Standarddienstkonto hochladen möchten, müssen Sie die Berechtigungen ändern.
So erstellen Sie ein Dienstkonto und legen die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS
fest:
Erstellen Sie ein Dienstkonto, das für Ihre Anwendung agiert, oder wählen Sie ein vorhandenes Dienstkonto für die CI-/CD-Automatisierung aus.
Gewähren Sie dem Dienstkonto die entsprechende Artifact Registry-Rolle, um den Zugriff auf das Repository zu ermöglichen.
Weisen Sie der Variablen
GOOGLE_APPLICATION_CREDENTIALS
den Speicherort des Dienstkontoschlüssels zu, damit die Artifact Registry-Credential Helper Ihren Schlüssel beim Herstellen einer Verbindung zu Repositories abrufen können.export GOOGLE_APPLICATION_CREDENTIALS=KEY-FILE
Dabei ist KEY-FILE der Pfad zur Schlüsseldatei des Dienstkontos.
So konfigurieren Sie die Authentifizierung:
Führen Sie den folgenden Befehl aus, um die Repository-Konfiguration auszugeben:
gcloud artifacts print-settings npm [--project=PROJECT] \ [--repository=REPOSITORY] \ [--location=LOCATION] \ --scope=@SCOPE-NAME \
WHERE
- PROJECT ist die Projekt-ID. Wenn dieses Flag nicht angegeben ist, wird das aktuelle Projekt oder das Standardprojekt verwendet.
- REPOSITORY ist die ID des Repositorys. Wenn Sie ein Standard-Artifact Registry-Repository konfiguriert haben, wird es verwendet, wenn dieses Flag im Befehl ausgelassen wird.
- LOCATION ist der regionale oder multiregionale Standort für das Repository.
SCOPE-NAME ist der Name des npm-Bereichs, der dem Repository zugeordnet werden soll.
Wenn Sie Bereiche verwenden, sorgen Sie dafür, dass Pakete immer aus dem richtigen Repository veröffentlicht und installiert werden.
Uneingeschränkte Pakete werden Ihrer Standard-npm-Registry zugeordnet, in der Regel der öffentlichen npm-Registry. Wenn Sie keinen Bereich angeben, wird das Artifact Registry-Repository als Standardregistrierung in der zurückgegebenen Konfiguration festgelegt. Dies kann zu Problemen führen, wenn Ihre Node.js-Projekte Pakete aus der öffentlichen npm-Registry und Ihrem Artifact Registry-Repository installieren müssen.
Fügen Sie die zurückgegebenen Konfigurationseinstellungen der .npmrc-Konfigurationsdatei in Ihren Node.js-Projekten hinzu. Diese Datei befindet sich normalerweise im selben Verzeichnis wie
package.json
.Achten Sie darauf, dass Sie diese Einstellungen in Node.js-Projekte für von Ihnen veröffentlichte Pakete aufnehmen sowie Projekte, die Abhängigkeiten aus Ihrem npm-Repository installieren.
Wenn Sie weitere Node.js-Repositories verbinden möchten, wiederholen Sie die vorherigen Schritte, um die Einstellungen abzurufen, und fügen Sie sie den entsprechenden
.npmrc
-Dateien hinzu.Wenn Sie bereit sind, ein Repository zu verbinden, abrufen Sie ein Zugriffstoken zur Authentifizierung.
Jedes Node.js-Paket-Repository für Artifact Registry ist einem Registry-Endpunkt https://LOCATION-npm.pkg.dev/PROJECT/REPOSITORY
zugeordnet
Wenn Sie mit dem Befehl print-settings
keinen Bereich angegeben haben, können Sie mit dem folgenden Befehl einen Bereich mit einem Artifact Registry-Repository verknüpfen.
npm config set @SCOPE_NAME:registry https://LOCATION-npm.pkg.dev/PROJECT/REPOSITORY/
Zugriffstoken abrufen
Zugriffstokens sind 60 Minuten lang gültig. Generieren Sie kurz ein Zugriffstoken, bevor Sie Befehle ausführen, die mit Repositories interagieren.
Verwenden Sie eine der folgenden Optionen, um ein Token zu erhalten:
Verwenden Sie den Befehl
npx
, um das Zugriffstoken zu aktualisieren.Die Anmeldedaten für die Verbindung zur öffentlichen npm-Registry befinden sich in der npm-Konfigurationsdatei des Nutzers
~/.npmrc
.Führen Sie in Ihrem Node.js-Projektverzeichnis den folgenden Befehl aus:
npx google-artifactregistry-auth
Wenn Ihr Artifact Registry-Repository als globale Registry festgelegt ist und Ihre Pakete nicht autorisiert sind, verwenden Sie stattdessen den folgenden Befehl, damit der Befehl den Credential Helper aus dem öffentlichen npm-Repository herunterladen kann, und nicht aus Ihrem Artifact Registry-Repository.
npm_config_registry=https://registry.npmjs.org npx google-artifactregistry-auth
Fügen Sie der Datei
package.json
in Ihrem Projekt ein Skript hinzu."scripts": { "artifactregistry-login": "npx google-artifactregistry-auth" }
Führen Sie das Skript im Node.js-Projektverzeichnis aus.
npm run artifactregistry-login
Artifact Registry liest die Artifact Registry-Repository-Einstellungen in Ihrer Projektdatei .npmrc
und verwendet sie, um der Datei .npmrc
des Nutzers Token-Anmeldedaten hinzuzufügen. Durch das Speichern des Tokens in der Datei .npmrc
des Nutzers werden Ihre Anmeldedaten vom Quellcode und vom Versionsverwaltungssystem isoliert.
.npmrc
--repo-config
ist die Datei.npmrc
mit Ihren Repository-Einstellungen. Wenn Sie dieses Flag nicht angeben, wird der aktuelle Speicherort für das aktuelle Verzeichnis verwendet.--credential-config
ist der Pfad zur.npmrc
-Datei, in die Sie das Zugriffstoken schreiben möchten. Die Standardeinstellung ist die Datei.npmrc
des Nutzers.
Passwortauthentifizierung konfigurieren
Verwenden Sie diesen Ansatz, wenn Ihre Node.js-Anwendung eine Authentifizierung mit einem angegebenen Nutzernamen und Passwort erfordert.
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 erstellen Sie ein Dienstkonto und konfigurieren 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.
Gewähren Sie dem Dienstkonto die entsprechende Artifact Registry-Rolle, um den Zugriff auf das Repository zu ermöglichen.
Wenn Sie das Dienstkonto in der aktuellen gcloud CLI-Sitzung aktivieren möchten, führen Sie den folgenden Befehl aus:
gcloud auth activate-service-account ACCOUNT --key-file=KEY-FILE
WHERE
- ACCOUNT ist das Nutzer- oder Dienstkonto.
- KEY-FILE ist der Pfad zur JSON-Schlüsseldatei des Dienstkontos.
Führen Sie den folgenden Befehl aus, um die Repository-Konfiguration auszugeben:
gcloud artifacts print-settings npm [--project=PROJECT] \ [--repository=REPOSITORY] [--location=LOCATION] --scope=@SCOPE-NAME --json-key=KEY-FILE
WHERE
- PROJECT ist die Projekt-ID. Wenn dieses Flag nicht angegeben ist, wird das aktuelle Projekt oder das Standardprojekt verwendet.
- REPOSITORY ist die ID des Repositorys. Wenn Sie ein Standard-Artifact Registry-Repository konfiguriert haben, wird es verwendet, wenn dieses Flag im Befehl ausgelassen wird.
- LOCATION ist der regionale oder multiregionale Standort für das Repository.
SCOPE-NAME ist der Name des npm-Bereichs, der dem Repository zugeordnet werden soll.
Wenn Sie Bereiche verwenden, sorgen Sie dafür, dass Pakete immer aus dem richtigen Repository veröffentlicht und installiert werden.
Uneingeschränkte Pakete werden Ihrer Standard-npm-Registry zugeordnet, in der Regel der öffentlichen npm-Registry. Wenn Sie keinen Bereich angeben, wird das Artifact Registry-Repository als Standardregistrierung in der zurückgegebenen Konfiguration festgelegt. Dies kann zu Problemen führen, wenn Ihre Node.js-Projekte Pakete aus der öffentlichen npm-Registry und Ihrem Artifact Registry-Repository installieren müssen.
KEY-FILE ist der Pfad zur JSON-Schlüsseldatei des Dienstkontos.
Fügen Sie die zurückgegebenen Konfigurationseinstellungen der .npmrc-Konfigurationsdatei in Ihren Node.js-Projekten hinzu. Diese Datei befindet sich normalerweise im selben Verzeichnis wie
package.json
. Achten Sie darauf, dass Sie diese Einstellungen in Node.js-Projekte für von Ihnen veröffentlichte Pakete aufnehmen sowie Projekte, die Abhängigkeiten aus Ihrem npm-Repository installieren.Wenn Sie weitere Node.js-Repositories verbinden möchten, wiederholen Sie die vorherigen Schritte, um die Einstellungen abzurufen und der Datei
.npmrc
hinzuzufügen.