Auf dieser Seite wird beschrieben, wie Sie die Authentifizierung mit einem Artifact Registry-Python-Paket-Repository 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 Google Cloud-Laufzeitumgebungen wie Google Kubernetes Engine und Cloud Run nicht konfigurieren, sollten aber prüfen, ob die erforderlichen Berechtigungen konfiguriert sind.
Hinweis
- Wenn das Ziel-Repository nicht vorhanden ist, erstellen Sie ein neues Python-Paket-Repository.
- Prüfen Sie, ob Python 3 installiert ist. Eine Installationsanleitung finden Sie in der Google Cloud-Anleitung zum Einrichten von Python.
- Prüfen Sie, ob das verwendete Nutzerkonto oder Dienstkonto die erforderlichen Berechtigungen für den Zugriff auf das Repository hat.
-
Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:
gcloud init
- (Optional) Konfigurieren Sie die Standardeinstellungen für gcloud-Befehle.
Überblick
Artifact Registry unterstützt die folgenden Authentifizierungsmethoden.
- Python-Schlüsselbundbibliothek (empfohlen)
- Artifact Registry bietet ein Schlüsselbund-Back-End, um die Anmeldedaten für die Verbindung mit Artifact Registry-Repositories zu speichern.
- 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.
In dieser Anleitung wird beschrieben, wie pip als Paketpaket konfiguriert wird, der nach Paketen sucht. Wir empfehlen die Verwendung virtueller Repositories, um Pakete in Ihren privaten Paketen in Artifact Registry und öffentlichen Paketen aus PyPI zu suchen, anstatt mehrere Paketindexe in der pip-Konfigurationsdatei zu konfigurieren. Das pip-Tool durchsucht keine Paketindexe in einer bestimmten Reihenfolge. Ihre Nutzer können daher ein öffentliches Paket mit dem gleichen Namen wie eines Ihrer privaten Pakete herunterladen oder installieren. Mit virtuellen Repositories können Sie Prioritäten für vorgelagerte Quellen konfigurieren, um dieses Abhängigkeitsrisiko zu minimieren.
Mit Schlüsselbund authentifizieren
Die Keyring-Bibliothek von Python bietet Anwendungen die Möglichkeit, auf Keyring-Back-Ends zuzugreifen, also auf Speicher für Betriebssysteme und Anmeldedaten von Drittanbietern.
Artifact Registry bietet das Schlüsselbund-Back-End keyrings.google-Artifactregistry-auth für die Authentifizierung mit Artifact Registry-Repositories.
Reihenfolge der Anmeldedatensuche
Wenn Sie das Artifact Registry-Schlüsselbund-Back-End verwenden, werden Ihre Anmeldedaten nicht in Ihrem Python-Projekt gespeichert. Stattdessen sucht Artifact Registry 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.
Von der Google Cloud CLI bereitgestellte Anmeldedaten, einschließlich Nutzeranmeldedaten aus dem Befehl
gcloud auth application-default login
.
Die Variable GOOGLE_APPLICATION_CREDENTIALS
macht das Konto für die Authentifizierung explizit, wodurch die Fehlerbehebung einfacher wird. Wenn Sie die Variable nicht verwenden, prüfen Sie, ob alle Konten, die ADC verwenden 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 einen Upload aus diesen Umgebungen mit dem Standarddienstkonto vornehmen 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:
Schlüsselbundbibliothek installieren
pip install keyring
Installieren Sie das Artifact Registry-Back-End.
pip install keyrings.google-artifactregistry-auth
Back-Ends zur Bestätigung der Installation auflisten.
keyring --list-backends
Die Liste sollte Folgendes enthalten:
ChainerBackend(priority:10)
GooglePythonAuth(priority: 9)
Führen Sie den folgenden Befehl aus, um die Repository-Konfiguration auszugeben, die Ihrem Python-Projekt hinzugefügt werden soll.
gcloud artifacts print-settings python --project=PROJECT \ --repository=REPOSITORY \ --location=LOCATION
Ersetzen Sie die folgenden Werte:
- 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.
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 das 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.
- Linux und MacOS:
Fügen Sie Ihr Repository zur pip-Konfigurationsdatei hinzu. Der Dateispeicherort hängt davon ab, ob Sie die Datei pro Nutzer oder die Datei für eine von Ihnen verwendete virtuelle Umgebung aktualisieren möchten.
Für die mit dem Betriebssystem des Nutzers verknüpfte Datei:
- 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
Wenn Sie pip so konfigurieren möchten, dass nur in Ihrem Repository gesucht wird, verwenden Sie die Einstellung
index-url
. Achten Sie darauf, dass keine anderen Paketindexe mit der Einstellungextra-index-url
konfiguriert sind.[global] index-url = https://LOCATION-python.pkg.dev/PROJECT/REPOSITORY/simple/
Der String
/simple/
am Ende des Repository-Pfads gibt an, dass das Repository die Python Simple Repository API implementiert.- Unix:
Die Python-Umgebung ist jetzt für die Authentifizierung bei Artifact Registry konfiguriert.
Schlüsselbundauthentifizierung mit Nutzeranmeldedaten
Nachdem Sie Schlüsselbund eingerichtet haben, können Sie Schlüsselbund mit Ihren Nutzeranmeldedaten in gcloud verwenden. Melden Sie sich in der Google Cloud CLI an, bevor Sie eine Verbindung zu einem Python-Paket-Repository herstellen.
Führen Sie dazu diesen Befehl aus:
gcloud auth login
Schlüsselbundauthentifizierung mit Dienstkonto-Anmeldedaten
Nachdem Sie Schlüsselbund eingerichtet haben, können Sie ein Dienstkonto für die Authentifizierung einrichten.
- Erstellen Sie ein Dienstkonto oder wählen Sie ein vorhandenes Dienstkonto aus, das Sie für die Automatisierung verwenden.
- Weisen Sie dem Dienstkontodie entsprechende Artifact Registry-Rolle zu, um Repository-Zugriff bereitzustellen.
Verwenden Sie eine der folgenden Optionen, um sich mit 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
gcloud-Anmeldedaten
Melden Sie sich als Dienstkonto an, bevor Sie eine Verbindung zu einem Repository herstellen. Vermeiden Sie diese Option, wenn Sie eine Verbindung zu Repositories von Compute Engine-VMs herstellen, da Artifact Registry die Anmeldedaten des VM-Dienstkontos vor den Anmeldedaten in gcloud findet.
gcloud auth activate-service-account --key-file=KEY-FILE
Ersetzen Sie KEY-FILE durch den Pfad zur Schlüsseldatei des Dienstkontos.
Mit einem Dienstkontoschlüssel authentifizieren
Verwenden Sie diesen Ansatz, wenn eine Authentifizierung mit Nutzername und Passwort erforderlich ist.
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 Dienstkontodie entsprechende Artifact Registry-Rolle zu, um Repository-Zugriff bereitzustellen.
Führen Sie den folgenden Befehl aus, um die Repository-Konfiguration auszugeben, die Ihrem Python-Projekt hinzugefügt werden soll.
gcloud artifacts print-settings python --project=PROJECT \ --repository=REPOSITORY \ --location=LOCATION \ --json-key=KEY-FILE
Ersetzen Sie die folgenden Werte:
- 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-FILE ist der Pfad zur JSON-Schlüsseldatei des Dienstkontos.
Fügen Sie der Datei
.pypirc
die folgenden Einstellungen hinzu. Der Standardspeicherort für die pip-Konfigurationsdatei pro Nutzer 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/ username: _json_key_base64 password: KEY
Ersetzen Sie die folgenden Werte:
- PYTHON-REPO-ID ist eine ID für das Repository, auf das 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.
- Linux und MacOS:
Fügen Sie Ihr Repository zur pip-Konfigurationsdatei hinzu. Der Speicherort der pip-Konfigurationsdatei hängt davon ab, ob Sie die Datei pro Nutzer oder die Datei für eine von Ihnen verwendete virtuelle Umgebung aktualisieren möchten.
Für die mit dem Betriebssystem des Nutzers verknüpfte Datei:
- 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 das Repository die Python Simple Repository API implementiert.
- Unix: