Authentifizierung bei Artifact Registry für npm konfigurieren

Sie müssen sich bei Artifact Registry authentifizieren, wenn Sie eine Drittanbieteranwendung für die Verbindung mit einem Repository verwenden.

Sie müssen die Authentifizierung nicht für Cloud Build oder Google Cloud Laufzeitumgebungen wie Google Kubernetes Engine und Cloud Run konfigurieren. Sie sollten jedoch prüfen, ob die erforderlichen Berechtigungen konfiguriert sind.

Node.js unterstützt zwei Methoden zur Authentifizierung von Anfragen an Ihr Artifact Registry-Repository:

  • Zugriffstokens: Verwenden Sie Zugriffstokens, wenn die Authentifizierung in Ihrer Anwendung von einem menschlichen Nutzer verwaltet wird.
  • Passwortauthentifizierung: Verwenden Sie diese Option, wenn eine Anwendung die Standardanmeldedaten für Anwendungen nicht unterstützt, jedoch die Authentifizierung mit einem Nutzernamen und Passwort unterstützt.

Hinweis

  1. Installieren Sie die Google Cloud CLI. Initialisieren Sie die Google Cloud CLI nach der Installation mit dem folgenden Befehl:

    gcloud init

    Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  2. (Optional) Konfigurieren Sie die Standardeinstellungen für gcloud CLI-Befehle.
  3. Wenn Sie von Windows eine Verbindung zu Repositories herstellen, installieren Sie PowerShell.
  4. Erstellen Sie ein Dienstkonto, das im Namen Ihrer Anwendung agiert.
  5. Wenn Sie npm noch nicht kennen, lesen Sie die Übersicht, um mehr über Paketumfang und die Konfigurationsdatei für Ihre Authentifizierungseinstellungen zu erfahren.

Tokens für die Authentifizierung generieren

Um Ihr Paket in Artifact Registry zu authentifizieren, müssen Sie zuerst ein Authentifizierungstoken generieren. Sie können dieses Token dann verwenden, wenn Sie Anfragen von Ihrem Paket an Artifact Registry senden.

Sie können ein oauth2 Zugriffstoken mit Google Cloud oder ein oauth2l Token außerhalb von Google Cloudgenerieren.

Zugriffstokens sind 60 Minuten lang gültig. Generieren Sie ein Zugriffstoken kurz vor dem Ausführen von Befehlen, die mit Repositories interagieren. Wenn Ihr Zugriffstoken abgelaufen ist, müssen Sie ein neues generieren.

Token mit gcloud generieren

Führen Sie den folgenden Befehl aus, um ein oauth2-Zugriffstoken mit Google Cloudzu generieren:

export ACCESS_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"

Sie können jetzt auf ACCESS_TOKEN verweisen, wenn Sie Anfragen von Ihrem Node.js-Paket an Artifact Registry senden.

Token ohne gcloud generieren

So generieren Sie ein Zugriffstoken nur mit der oauth2l-CLI:

  1. Installieren Sie die neueste Version von oauth2l, indem Sie den folgenden Befehl ausführen:

    go install github.com/google/oauth2l@latest
    
  2. Führen Sie dazu diesen Befehl aus:

    export ACCESS_TOKEN="oauth2l fetch --scope cloud-platform"
    

    Google Cloud generiert ein SHA256-Hash-Token und speichert es in der Variablen ACCESS_TOKEN. Sie können jetzt auf ACCESS_TOKEN verweisen, wenn Sie Anfragen von Ihrem Node.js-Paket an Artifact Registry senden.

Passwortauthentifizierung mit Dienstkontoschlüsseln 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:

  1. Erstellen Sie ein Dienst konto, das im Namen Ihrer Anwendung agieren soll, oder wählen Sie ein vorhandenes Dienst konto 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 dem Dienstkonto die entsprechende Artifact Registry-Rolle , um den Zugriff auf das Repository zu ermöglichen.

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

    Wo

    • ACCOUNT ist das Nutzer- oder Dienstkonto.
    • KEY-FILE ist der Pfad zur JSON-Schlüsseldatei des Dienstkontos .
  4. 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
    

    Wo

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

      Durch die Verwendung von Bereichen wird sichergestellt, dass Sie Pakete immer aus dem richtigen Repository veröffentlichen und installieren.

      Pakete ohne Bereich sind Ihrer Standard-npm-Registry zugeordnet, in der Regel der öffentlichen npm-Registry. Wenn Sie keinen Bereich angeben, wird Ihr Artifact Registry-Repository in der zurückgegebenen Konfiguration als Standard-Registry festgelegt. Dies kann zu Problemen führen, wenn Ihre Node.js-Projekte Pakete sowohl aus der öffentlichen npm-Registry als auch aus Ihrem Artifact Registry-Repository installieren müssen.

    • KEY-FILE ist der Pfad zur JSON-Schlüsseldatei des Dienstkontos .

  5. Fügen Sie die zurückgegebenen Konfigurationseinstellungen der .npmrc Konfigurationsdatei in Ihren Node.js-Projekten hinzu. Diese Datei befindet sich in der Regel im selben Verzeichnis wie package.json. Achten Sie darauf, dass Sie diese Einstellungen in Node.js-Projekten für Pakete, die Sie veröffentlichen, sowie für Projekte, die Abhängigkeiten aus Ihrem npm-Repository installieren, verwenden.

  6. Wenn Sie weitere Node.js-Repositories für die Verbindung verwenden möchten, wiederholen Sie die vorherigen Schritte, um die Einstellungen abzurufen und sie der Datei .npmrc hinzuzufügen.

Nächste Schritte