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 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.
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 von Ihnen verwendete Nutzerkonto oder Dienstkonto die erforderlichen Berechtigungen für den Zugriff auf das Repository hat.
-
Installieren Sie die Google Cloud CLI. Initialisieren Sie die Google Cloud CLI nach der Installation mit dem folgenden Befehl:
gcloud initWenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
- (Optional) Konfigurieren Sie die Standardeinstellungen für gcloud CLI-Befehle.
Übersicht
Artifact Registry unterstützt die folgenden Authentifizierungsmethoden.
- Python-Schlüsselbundbibliothek (empfohlen)
- Artifact Registry bietet ein Schlüsselbund-Backend zum Speichern der Anmeldedaten für die Verbindung zu Artifact Registry-Repositories.
- Passwort-Authentifizierung
- Verwenden Sie diese Option, wenn Sie keinen Schlüsselbund verwenden können und eine Option benötigen, die die grundlegende Passwort-Authentifizierung unterstützt.
In der Anleitung in dieser Dokumentation wird beschrieben, wie Sie pip als einzigen Paketindex konfigurieren, in dem pip nach Paketen sucht. Wir empfehlen, virtuelle Repositories zu verwenden, um nach Paketen in Ihren privaten Paketen in Artifact Registry und öffentlichen Paketen von PyPI zu suchen, anstatt mehrere Paketindizes in der pip-Konfigurationsdatei zu konfigurieren. Das pip-Tool sucht nicht in einer bestimmten Reihenfolge nach Paketindizes. Daher können Ihre Nutzer versehentlich ein öffentliches Paket mit demselben Namen wie eines Ihrer privaten Pakete herunterladen oder installieren. Mit virtuellen Repositories können Sie Prioritäten für Upstream-Quellen konfigurieren, um dieses Risiko der Verwechslung von Abhängigkeiten zu minimieren.
Mit Schlüsselbund authentifizieren
Die Python-Schlüsselbund Bibliothek bietet Anwendungen eine Möglichkeit, auf Schlüsselbund-Backends zuzugreifen, d. h. auf Betriebssystem- und Drittanbieter-Anmeldedatenspeicher.
Artifact Registry bietet das Schlüsselbund-Backend keyrings.google-artifactregistry-auth , um die Authentifizierung bei Artifact Registry-Repositories zu verarbeiten.
Reihenfolge der Anmeldedatensuche
Wenn Sie das Artifact Registry-Schlüsselbund-Backend 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_CREDENTIALSdefinierte Anmeldedaten.Anmeldedaten, die das Standarddienstkonto für Compute Engine, Google Kubernetes Engine, Cloud Run, App Engine oder Cloud Run Functions bietet.
Vom 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, was die Fehlerbehebung erleichtert. Wenn
Sie die Variable nicht verwenden, prüfen Sie, ob alle Konten, die von ADC verwendet werden können, die erforderlichen Berechtigungenhaben. Das
Standarddienstkonto für Compute Engine-VMs, Google Kubernetes Engine-Knoten
und Cloud Run-Revisionen hat beispielsweise Lesezugriff 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-Backend ein:
Installieren Sie die Schlüsselbundbibliothek.
pip install keyringInstallieren Sie das Artifact Registry-Backend.
pip install keyrings.google-artifactregistry-authListen Sie die Backends auf, um die Installation zu bestätigen.
keyring --list-backendsDie Liste sollte Folgendes enthalten:
ChainerBackend(priority:10)GooglePythonAuth(priority: 9)
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=LOCATIONErsetzen 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
.pypircdie 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 der pip-Konfigurationsdatei hinzu. Der Speicherort der Datei hängt davon ab, ob Sie die Datei pro Nutzer oder die Datei aktualisieren möchten, die für eine bestimmte virtuelle Umgebung gilt.
Für die Datei, die mit Ihrem Betriebssystemnutzer verknüpft ist:
- Unix:
$HOME/.config/pip/pip.confoder$HOME/.pip/pip.conf - macOS:
/Library/Application Support/pip/pip.confoder$HOME/.config/pip/pip.conf - Windows:
%APPDATA%\pip\pip.inioder%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
index-urlEinstellung. Es dürfen keine anderen Paketindizes mit der Einstellung mit derextra-index-urlEinstellung konfiguriert sein.[global] index-url = https://LOCATION-python.pkg.dev/PROJECT/REPOSITORY/simple/Die
/simple/String am Ende des Repository-Pfads gibt an, dass das Repository die Python Simple Repository API implementiert.- Unix:
Ihre Python-Umgebung ist jetzt für die Authentifizierung bei Artifact Registry konfiguriert.
Schlüsselbund-Authentifizierung mit Nutzeranmeldedaten
Nachdem Sie den Schlüsselbund eingerichtet haben, können Sie ihn mit Ihren Nutzeranmeldedaten in der gcloud CLI 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üsselbund-Authentifizierung mit Anmeldedaten für das Dienstkonto
Nachdem Sie den Schlüsselbund eingerichtet haben, können Sie ein Dienst konto für die Authentifizierung einrichten.
- Erstellen Sie ein Dienst konto oder wählen Sie ein vorhandenes Dienstkonto für die Automatisierung aus.
- Gewähren Sie dem Dienstkonto die entsprechende Artifact Registry-Rolle , um den Zugriff auf das Repository zu ermöglichen.
Verwenden Sie eine der folgenden Optionen, um sich mit Ihrem Dienstkonto zu authentifizieren:
Standardanmeldedaten für Anwendungen (empfohlen)
Weisen Sie der Variablen
GOOGLE_APPLICATION_CREDENTIALSden 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-FILEgcloud CLI-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 der gcloud CLI findet.
gcloud auth activate-service-account --key-file=KEY-FILE
Ersetzen Sie KEY-FILE durch den Pfad zur Dienstkonto Schlüsseldatei.
Mit einem Dienstkontoschlüssel authentifizieren
Verwenden Sie diesen Ansatz, wenn Sie eine Authentifizierung mit einem Nutzernamen und Passwort benötigen.
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 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.
Gewähren Sie dem Dienstkonto die entsprechende Artifact Registry-Rolle, um den Zugriff auf das Repository zu ermöglichen.
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-FILEErsetzen 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
.pypircdie 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: KEYErsetzen 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 der pip-Konfigurationsdatei hinzu. Der Speicherort der pip-Konfigurationsdatei hängt davon ab, ob Sie die Datei pro Nutzer oder die Datei aktualisieren möchten, die für eine bestimmte virtuelle Umgebung gilt.
Für die Datei, die mit Ihrem Betriebssystemnutzer verknüpft ist:
- Unix:
$HOME/.config/pip/pip.confoder$HOME/.pip/pip.conf - macOS:
/Library/Application Support/pip/pip.confoder$HOME/.config/pip/pip.conf - Windows:
%APPDATA%\pip\pip.inioder%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.
- Die
/simple/String am Ende des Repository-Pfads gibt an, dass das Repository die Python Simple Repository API implementiert.
- Unix: