Authentifizierung für Artifact Registry für Ruby-Gem-Repositories konfigurieren

Auf dieser Seite wird beschrieben, wie Sie die Authentifizierung mit einem Artifact Registry-Repository für Ruby-Gems 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 für Cloud Build oder Cloud de Confiance by S3NS-Laufzeitumgebungen wie Google Kubernetes Engine und Cloud Run nicht konfigurieren.

Hinweis

  1. Wenn das Ziel-Repository nicht vorhanden ist, erstellen Sie ein Ruby-Gem-Repository.
  2. Prüfen Sie, ob Ruby installiert ist. Eine Installationsanleitung finden Sie imCloud de Confiance by S3NS Tutorial zum Einrichten von Ruby.
  3. Prüfen Sie, ob das von Ihnen verwendete Nutzerkonto oder Dienstkonto die erforderlichen Berechtigungen für den Zugriff auf das Repository hat.
  4. Installieren Sie die Google Cloud CLI und melden Sie sich dann mit Ihrer föderierten Identität in der gcloud CLI an. Nach der Anmeldung initialisieren Sie die Google Cloud CLI mit dem folgenden Befehl:

    gcloud init
  5. (Optional) Konfigurieren Sie die Standardeinstellungen für gcloud CLI-Befehle.

Übersicht

Ruby unterstützt zwei Methoden zum Authentifizieren von Anfragen an Ihr Artifact Registry-Repository:

  • RubyGems-Befehlszeile: Unterstützt Push- und Pull-Anfragen. Diese CLI ist standardmäßig mit Ruby verfügbar. Wenn Sie sich bei RubyGems authentifizieren, müssen Sie sich jedes Mal authentifizieren, wenn Sie eine Push- oder Pull-Anfrage an Ihr Repository senden.
  • Bundler-CLI: Unterstützt Pull-Anfragen. Bundler speichert Pakete und Upstreams in einer Gemfile-Datei. So können Nutzer Setups auf mehreren Computern standardisieren, ohne jede einzelne Pull-Anfrage authentifizieren zu müssen. Sie müssen Ihre Anmeldedaten jedoch gelegentlich neu für Bundler authentifizieren.

    Geben Sie gem install bundler ein, um die Bundler CLI zu installieren.

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 Cloud de Confiance by S3NS oder ein oauth2l-Token außerhalb von Cloud de Confiance by S3NSgenerieren.

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

Token mit gcloud generieren

Führen Sie den folgenden Befehl aus, um mit Cloud de Confiance by S3NSein oauth2-Zugriffstoken zu generieren:

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

Sie können jetzt beim Senden von Anfragen aus Ihrem Ruby-Paket an Artifact Registry auf ACCESS_TOKEN verweisen.

Token ohne gcloud generieren

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

  1. Installieren Sie die aktuelle Version von oauth2l mit dem folgenden Befehl:

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

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

    Cloud de Confiance by S3NS 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 Ruby-Paket an Artifact Registry senden.

Mit der RubyGems-Befehlszeile authentifizieren

Die RubyGems-Befehlszeile verwendet OAuth2-Tokens zur Authentifizierung einer Anfrage. Wenn Sie OAuth2-Tokens an Aufrufe Ihrer Artifact Registry-Repositories übergeben möchten, müssen Sie Ihr OAuth2-Token mit der Adresse Ihres Repositorys übergeben, wenn Sie eine Anfrage stellen. Tokens haben eine Gültigkeitsdauer von einer Stunde und müssen stündlich aktualisiert werden.

Pull-Anfragen authentifizieren

Sie können eine Pull-Anfrage in der Google Cloud CLI-Befehlszeile authentifizieren oder Ihre .gemrc-Datei aktualisieren.

Pull-Anfragen in der Befehlszeile authentifizieren

Führen Sie den folgenden Befehl aus, um sich für die aktuelle Version des Gems in Ihrem Pull-Anfrage zu authentifizieren:

gem install GEM_NAME --source https://$ACCESS_TOKEN@LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY

Wenn Sie sich für eine bestimmte Gem-Version authentifizieren möchten, fügen Sie dem gem install-Befehl -v GEM_VERSION hinzu.

Wobei:

  • GEM_NAME ist der Name des Gems, für das die Anfrage gestellt wird.
  • LOCATION ist der regionale oder multiregionale Standort für das Repository.
  • PROJECT ist die ID des Projekts, das das Repository enthält.
  • REPOSITORY ist die ID des Repositorys.

Authentifizierung in einer .gemrc-Datei

Sie können Ihre globale oder projektspezifische /.gemrc-Datei so konfigurieren, dass die Authentifizierung für Ihre Quellen in Pull-Anfragen erfolgt. Fügen Sie dazu Folgendes hinzu:

# File: ~/.gemrc

# Use the ACCESS_TOKEN retrieved from export ACCESS_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"

<...>
:sources:
    - https://ACCESS_TOKEN@LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY/
<...>

Wobei:

  • ACCESS_TOKEN ist Ihr OAuth2-Zugriffstoken.
  • LOCATION ist der regionale oder multiregionale Speicherort für das Repository.
  • PROJECT ist die ID des Projekts, das das Repository enthält.
  • REPOSITORY ist die ID des Repositorys.

So installieren Sie ein Gem mit der Quelle oder den Quellen, die in Ihrer /.gemrc-Datei definiert sind:

gem install GEM_NAME

Push-Anfragen authentifizieren

Sie können eine Push-Anfrage in der Google Cloud CLI-Befehlszeile authentifizieren oder Ihre Anmeldedatendatei aktualisieren.

Push-Anfragen in der Befehlszeile authentifizieren

Führen Sie den folgenden Befehl aus, um Ihre Push-Anfrage zu authentifizieren:

export GEM_HOST_API_KEY="Bearer $(gcloud auth print-access-token)"
gem push GEM_NAME --host https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY

Wobei:

  • GEM_NAME ist der Name des Gems, für das die Anfrage gestellt wird.
  • LOCATION ist der regionale oder multiregionale Standort für das Repository.
  • PROJECT ist die ID des Projekts, das das Repository enthält.
  • REPOSITORY ist die ID des Repositorys.

Push-Anfragen in einer Datei mit Anmeldedaten authentifizieren

Das gem-Befehlszeilentool verwendet die Datei ~/.gem/credentials, um API-Schlüssel zum Pushen und Pullen von Gems zu speichern. So konfigurieren Sie Ihre Anmeldedatendatei für die Authentifizierung bei Ihren Quellen bei Push-Anfragen:

  1. Aktualisieren Sie die Datei mit den Anmeldedaten:

    1. Öffnen Sie ~/.gem/credentials und fügen Sie eine Zeile für Ihr Repository hinzu. Der Schlüssel ist Ihre Repository-URL und der Wert ist Bearer, gefolgt von Ihrem Token:

      :rubygems_api_key: RUBYGEMS_ORG_KEY
      https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY: Bearer ACCESS_TOKEN
      

      Wobei:

      • RUBYGEMS_ORG_KEY ist der API-Schlüssel für RubyGems.org.
      • LOCATION ist der regionale oder multiregionale Standort für das Repository.
      • PROJECT ist die ID des Projekts, das das Repository enthält.
      • REPOSITORY ist die ID des Repositorys.
      • ACCESS_TOKEN ist Ihr OAuth2-Zugriffstoken.
    2. Pushen Sie Ihr Gem. Sie müssen GEM_HOST_API_KEY nicht festlegen, da Sie den Schlüssel bereits in Ihrer Anmeldedatendatei definiert haben.

      gem push GEM_NAME --host https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY
      

Mit Bundler authentifizieren

Der Ruby Bundler verwaltet Anwendungsabhängigkeiten über ein oder mehrere Gems hinweg. So richten Sie Bundler ein:

  1. Fügen Sie die Adresse Ihres Repositorys als source in Ihre Gemfile ein:

    # Gemfile
    # <...>
    source "https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY"
    
  2. Authentifizieren Sie sich mit bundle config in Ihrem Repository:

    export GEM_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"
    export HOST="https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY"
    bundle config $HOST $GEM_TOKEN
    

Wobei:

Sie müssen sich gelegentlich neu bei Ihrem Remote-Repository authentifizieren. Führen Sie in diesem Fall denselben Authentifizierungsbefehl aus Schritt 2 aus.

Weitere Informationen zum Konfigurieren von Bundler finden Sie in der bundler.io-Dokumentation unter Gemfiles.

Nächste Schritte