Authentifizierung bei Artifact Registry für Python-Paket-Repositories konfigurieren

Auf dieser Seite wird beschrieben, wie Sie die Authentifizierung mit Artifact Registry konfigurieren Python-Paket-Repository.

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 Google Cloud nicht konfigurieren wie Google Kubernetes Engine und Cloud Run. Sie sollten Prüfen Sie, ob die erforderlichen Berechtigungen konfiguriert sind.

Hinweise

  1. Wenn das Ziel-Repository nicht vorhanden ist, Erstellen Sie ein neues Python-Paket-Repository.
  2. Überprüfen Sie, ob Python 3 installiert ist. Eine Installationsanleitung finden Sie im Google Cloud-Tutorial zum Einrichten von Python.
  3. Prüfen Sie, ob das verwendete Nutzerkonto oder Dienstkonto die die erforderlichen Berechtigungen für den Zugriff auf zu erstellen.
  4. Install the Google Cloud CLI, then initialize it by running the following command:

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

Übersicht

Artifact Registry unterstützt die folgenden Authentifizierungsmethoden.

Python-Schlüsselbundbibliothek (empfohlen)
Artifact Registry bietet ein Schlüsselbund-Back-End zum Speichern der Anmeldedaten für Verbindung zu Artifact Registry-Repositories herstellen.
Passwortauthentifizierung
Verwenden Sie diese Option, wenn Sie den Schlüsselbund nicht verwenden können und eine Option benötigen, die die einfache Passwortauthentifizierung unterstützt.

Die Anweisungen in dieser Dokumentation beschreiben die Konfiguration von pip als einzige Paketindex, mit dem pip nach Paketen sucht. Wir empfehlen die Verwendung von virtuellen Repositories, um Pakete in Ihren privaten Paketen in Artifact Registry und öffentliche Pakete aus PyPI statt konfigurieren Paketindexe in der pip-Konfigurationsdatei. Das pip-Tool erkennt Paketindexe in einer bestimmten Reihenfolge suchen, sodass Ihre Kunden versehentlich ein öffentliches Paket mit dem Namen für Ihre privaten Pakete. Mit virtuellen Repositories können Sie Prioritäten für vorgelagerte Quellen, um dieses Risiko durch Verwirrung durch Abhängigkeiten zu mindern.

Mit Schlüsselbund authentifizieren

Python-Schlüsselbund bietet Anwendungen die Möglichkeit, auf Schlüsselbund-Back-Ends zuzugreifen. Dies bedeutet Betriebssystem und Anmeldedatenspeicher von Drittanbietern.

Artifact Registry bietet die keyrings.google-artifactregistry-auth Schlüsselbund-Back-End für die Authentifizierung mit Artifact Registry-Repositories.

Reihenfolge der Anmeldedatensuche

Wenn Sie das Artifact Registry-Schlüsselbund-Backend verwenden, sind Ihre Anmeldedaten nicht in Ihrem Python-Projekt gespeichert. Stattdessen sucht Artifact Registry nach Anmeldedaten in der folgenden Reihenfolge:

  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 Run-Funktionen bietet.

  2. Von der Google Cloud CLI bereitgestellte Anmeldedaten, einschließlich Nutzeranmeldedaten von den Befehl gcloud auth application-default login.

Mit der Variablen 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 ADC möglicherweise verwendet, die erforderlichen Berechtigungen haben. 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 mit dem Standarddienstkonto hochladen möchten, müssen Sie die Berechtigungen ändern.

Schlüsselbund einrichten

So richten Sie die Authentifizierung mit dem Artifact Registry-Schlüsselbund-Back-End ein:

  1. Installieren Sie die Schlüsselbundbibliothek.

    pip install keyring
    
  2. Installieren Sie das Artifact Registry-Backend.

    pip install keyrings.google-artifactregistry-auth
    
  3. Listen Sie die Back-Ends auf, um die Installation zu bestätigen.

    keyring --list-backends
    

    Die Liste sollte Folgendes enthalten:

    • ChainerBackend(priority:10)
    • GooglePythonAuth(priority: 9)
  4. Führen Sie den folgenden Befehl aus, um die Repository-Konfiguration Ihrem Python-Projekt hinzufügen.

    gcloud artifacts print-settings python --project=PROJECT \
        --repository=REPOSITORY \
        --location=LOCATION
    

    Ersetzen Sie die folgenden Werte:

  5. Fügen Sie der Datei .pypirc die folgenden Einstellungen hinzu. Der Standardspeicherort ist:

    • Linux und macOS: $HOME/.pypirc
    • Windows: %USERPROFILE%\.pypirc
    [distutils]
    index-servers =
        PYTHON-REPO-ID
    
    [PYTHON-REPO-ID]
    repository = https://LOCATION-python.pkg.dev/PROJECT/REPOSITORY/
    

    Ersetzen Sie die folgenden Werte:

    • PYTHON-REPO-ID ist eine ID für das Repository, auf die Sie mit Tools wie Twine verweisen können.
    • 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.
  6. Fügen Sie der pip-Konfigurationsdatei Ihr Repository hinzu. Den Dateispeicherort hängt davon ab, ob Sie die nutzerspezifische Datei oder die dateispezifische in einer virtuellen Umgebung, die Sie verwenden.

    Für die Datei, die dem Nutzer Ihres Betriebssystems zugeordnet ist:

    • Unix: $HOME/.config/pip/pip.conf oder $HOME/.pip/pip.conf
    • macOS: /Library/Application Support/pip/pip.conf oder $HOME/.config/pip/pip.conf
    • Windows: %APPDATA%\pip\pip.ini oder %USERPROFILE%\pip\pip.ini

    Für virtuelle Umgebungen:

    • Unix und macOS: $VIRTUAL_ENV/pip.conf
    • Windows: %VIRTUAL_ENV%\pip.ini

    Verwenden Sie index-url, um pip nur für die Suche in Ihrem Repository zu konfigurieren. und achten Sie darauf, dass keine anderen Paketindexe konfiguriert sind mit der Einstellung extra-index-url.

    [global]
    index-url = https://LOCATION-python.pkg.dev/PROJECT/REPOSITORY/simple/
    

    Der String /simple/ am Ende des Repository-Pfads gibt an, dass der -Repository implementiert die Python Simple Repository API.

Ihre Python-Umgebung ist nun für die Authentifizierung mit konfiguriert. Artifact Registry.

Schlüsselbundauthentifizierung mit Nutzeranmeldedaten

Nachdem Sie den Schlüsselbund eingerichtet haben, können Sie den Schlüsselbund mit Ihre Nutzeranmeldedaten in der gcloud CLI. Melden Sie sich vor dem Verbinden in der Google Cloud CLI an in ein Python-Paket-Repository.

Führen Sie dazu diesen Befehl aus:

gcloud auth login

Schlüsselbundauthentifizierung mit Dienstkonto-Anmeldedaten

Nachdem Sie den Schlüsselbund eingerichtet haben, können Sie einen Dienst einrichten für die Authentifizierung.

  1. Dienst erstellen Konto einrichten oder ein vorhandenes Dienstkonto für die Automatisierung auswählen.
  2. Die spezifische Artifact Registry-Rolle erteilen an das Dienstkonto, um Zugriff auf das Repository zu gewähren.
  3. Verwenden Sie eine der folgenden Optionen, um sich bei Ihrem Dienstkonto zu authentifizieren:

    • Standardanmeldedaten für Anwendungen (empfohlen)

      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
      
    • Anmeldedaten für die gcloud-Befehlszeile

      Melden Sie sich als das Dienstkonto an, bevor Sie eine Verbindung zu einem Repository herstellen. Vermeiden Option, wenn Sie eine Verbindung zu Repositories von Compute Engine-VMs herstellen da Artifact Registry die Anmeldedaten des VM-Dienstkontos findet. vor den Anmeldedaten in der gcloud CLI.

      gcloud auth activate-service-account --key-file=KEY-FILE
      

    Ersetzen Sie KEY-FILE durch den Pfad zum Dienstkonto. Schlüsseldatei zu suchen.

Mit einem Dienstkontoschlüssel authentifizieren

Verwenden Sie diese Methode, 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 Zugriff haben.

  3. Führen Sie den folgenden Befehl aus, um die Repository-Konfiguration zu drucken und sie dem Python-Projekt hinzuzufügen.

    gcloud artifacts print-settings python --project=PROJECT \
        --repository=REPOSITORY \
        --location=LOCATION \
        --json-key=KEY-FILE
    

    Ersetzen Sie die folgenden Werte:

  4. Fügen Sie der Datei .pypirc die folgenden Einstellungen hinzu. Der Standardspeicherort ist für die nutzerspezifische pip-Konfigurationsdatei so:

    • Linux und macOS: $HOME/.pypirc
    • Windows: %USERPROFILE%\.pypirc
    [distutils]
    index-servers =
        PYTHON-REPO-ID
    
    [PYTHON-REPO-ID]
    repository = https://LOCATION-python.pkg.dev/PROJECT/REPOSITORY/
    username: _json_key_base64
    password: KEY
    

    Ersetzen Sie die folgenden Werte:

    • PYTHON-REPO-ID ist eine ID für das Repository, auf die Sie mit Tools wie Twine verweisen können.
    • 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.
    • KEY ist der base64-codierte Schlüssel in Ihrer Dienstkonto-Schlüsseldatei.
  5. Fügen Sie der Pip-Konfigurationsdatei Ihr Repository hinzu. Die Speicherort der pip-Konfigurationsdatei hängt davon ab, ob Sie die nutzerspezifische Datei oder die dateispezifische in einer virtuellen Umgebung, die Sie verwenden.

    Für die Datei, die dem Nutzer Ihres Betriebssystems zugeordnet ist:

    • Unix: $HOME/.config/pip/pip.conf oder $HOME/.pip/pip.conf
    • macOS: /Library/Application Support/pip/pip.conf oder $HOME/.config/pip/pip.conf
    • Windows: %APPDATA%\pip\pip.ini oder %USERPROFILE%\pip\pip.ini

    Für virtuelle Umgebungen:

    • Unix und macOS: $VIRTUAL_ENV/pip.conf
    • Windows: %VIRTUAL_ENV%\pip.ini

    Fügen Sie der pip-Konfigurationsdatei die folgende Zeile hinzu:

    [global]
    index-url = https://_json_key_base64:KEY@LOCATION-python.pkg.dev/PROJECT/REPOSITORY/simple/
    
    • KEY ist der private Schlüssel in Ihrer Dienstkonto-Schlüsseldatei.
    • Der String /simple/ am Ende des Repository-Pfads gibt an, dass der -Repository implementiert die Python Simple Repository API.

Nächste Schritte