Configurer l'authentification auprès d'Artifact Registry pour les dépôts de paquets Python

Cette page explique comment configurer l'authentification avec Artifact Registry de packages Python.

Vous devez vous authentifier auprès d'Artifact Registry lorsque vous utilisez une application tierce pour vous connecter à un dépôt.

Vous n'avez pas besoin de configurer l'authentification pour Cloud Build ni pour les environnements d'exécution Google Cloud tels que Google Kubernetes Engine et Cloud Run, mais vous devez vérifier que les autorisations requises sont configurées.

Avant de commencer

  1. Si le dépôt cible n'existe pas, Créez un dépôt de packages Python.
  2. Vérifiez que Python 3 est installé. Pour obtenir des instructions d'installation, consultez les Tutoriel Google Cloud sur la configuration de Python.
  3. Vérifiez que le compte utilisateur ou de service que vous utilisez dispose du Les autorisations requises pour accéder aux un dépôt de clés.
  4. Install the Google Cloud CLI, then initialize it by running the following command:

    gcloud init
  5. (Facultatif) Configurez les valeurs par défaut pour les commandes de gcloud CLI.

Présentation

Artifact Registry est compatible avec les méthodes d'authentification suivantes.

Bibliothèque de trousseau Python (recommandée)
Artifact Registry fournit un backend de trousseau pour stocker les identifiants permettant de se connecter aux dépôts Artifact Registry.
Authentification par mot de passe
Utilisez cette option lorsque vous ne pouvez pas utiliser de trousseaux et que vous avez besoin d'une option compatible avec l'authentification par mot de passe de base.

Les instructions de cette documentation décrivent la configuration de pip comme la seule que pip recherche des packages. Nous vous recommandons d'utiliser dépôts virtuels pour rechercher les packages de vos packages privés dans Artifact Registry et packages publics de PyPI au lieu de configurer plusieurs index de packages dans le fichier de configuration pip. L'outil pip ne permet pas les index des packages de recherche dans un ordre particulier, de sorte que vos clients télécharger ou installer par erreur un package public portant le même nom que l'un des vos packages privés. Les dépôts virtuels vous permettent de configurer les priorités pour sources en amont afin d'atténuer ce risque de confusion liée aux dépendances.

S'authentifier avec le trousseau

Le trousseau de clés Python fournit aux applications un moyen d'accéder aux backends de clés, ce qui signifie des systèmes d'exploitation et des magasins d'identifiants tiers.

Artifact Registry fournit keyrings.google-artifactregistry-auth de trousseaux pour gérer l'authentification Dépôts Artifact Registry.

Ordre de recherche des identifiants

Lorsque vous utilisez le backend du trousseau Artifact Registry, vos identifiants ne sont pas stockés dans votre projet Python. À la place, Artifact Registry recherche les identifiants dans l'ordre suivant :

  1. Identifiants par défaut de l'application (ADC), stratégie qui recherche les identifiants dans l'ordre suivant :

    1. Identifiants définis dans la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS.

    2. Les identifiants que le compte de service par défaut pour Compute Engine Fonctions Google Kubernetes Engine, Cloud Run, App Engine ou Cloud Run fournit.

  2. Identifiants fournis par la Google Cloud CLI, y compris les identifiants utilisateur de la commande gcloud auth application-default login.

La variable GOOGLE_APPLICATION_CREDENTIALS rend le compte d'authentification explicite, ce qui facilite le dépannage. Si vous n'utilisez pas la variable, vérifiez que tous les comptes que l'ADC peut utiliser disposent des autorisations requises. Par exemple, default service account pour les VM Compute Engine, les nœuds Google Kubernetes Engine Cloud Run dispose d'un accès en lecture seule aux dépôts. Si vous à l'aide du compte de service par défaut, vous devez modifier les autorisations.

Configurer un trousseau de clés

Pour configurer l'authentification avec le backend du trousseau Artifact Registry :

  1. Installez la bibliothèque de trousseaux.

    pip install keyring
    
  2. Installez le backend Artifact Registry.

    pip install keyrings.google-artifactregistry-auth
    
  3. Listez les backends pour confirmer l'installation.

    keyring --list-backends
    

    Cette liste doit inclure

    • ChainerBackend(priority:10)
    • GooglePythonAuth(priority: 9)
  4. Exécutez la commande suivante pour imprimer la configuration du dépôt dans à votre projet Python.

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

    Remplacez les valeurs suivantes :

    • PROJECT est l'ID de projet. Si cette option est ignorée, le projet en cours ou par défaut est utilisé.
    • REPOSITORY est l'ID du dépôt. Si vous avez configuré un dépôt Artifact Registry par défaut, il est utilisé lorsque cette option est omise dans la commande.
    • LOCATION est l'emplacement régional ou multirégional du dépôt.
  5. Ajoutez les paramètres suivants au fichier .pypirc. L'emplacement par défaut est le suivant :

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

    Remplacez les valeurs suivantes :

    • PYTHON-REPO-ID est un ID du dépôt que vous pouvez référencer avec des outils tels que Twine.
    • PROJECT est l'ID de projet. Si cette option est ignorée, le projet en cours ou par défaut est utilisé.
    • REPOSITORY est l'ID du dépôt. Si vous avez configuré un dépôt Artifact Registry par défaut, il est utilisé lorsque cette option est omise dans la commande.
    • LOCATION est l'emplacement régional ou multirégional du dépôt.
  6. Ajoutez votre dépôt au fichier de configuration pip. L'emplacement du fichier dépend de si vous souhaitez mettre à jour le fichier par utilisateur ou le fichier spécifique à un environnement virtuel que vous utilisez.

    Pour le fichier associé à l'utilisateur de votre système d'exploitation:

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

    Pour les environnements virtuels:

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

    Pour configurer pip pour qu'il ne recherche que votre dépôt, utilisez le paramètre index-url et assurez-vous qu'aucun autre indice de paquet n'est configuré avec le paramètre extra-index-url.

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

    La chaîne /simple/ à la fin du chemin d'accès du dépôt indique que le dépôt implémente l'API Python Simple Repository.

Votre environnement Python est maintenant configuré pour s'authentifier auprès de Artifact Registry.

Authentification par trousseau de clés avec identifiants utilisateur

Après avoir configuré un trousseau, vous pouvez l'utiliser avec vos identifiants utilisateur dans la gcloud CLI. Connectez-vous à la Google Cloud CLI avant de vous connecter à un dépôt de paquets Python.

Exécutez la commande suivante :

gcloud auth login

Authentification par trousseau de clés avec identifiants de compte de service

Une fois que vous avez configuré le trousseau de clés, vous pouvez configurer un compte de service pour l'authentification.

  1. Créez un compte de service ou sélectionnez un compte de service existant que vous utilisez pour l'automatisation.
  2. Accordez le rôle Artifact Registry spécifique. au compte de service pour fournir l'accès au dépôt.
  3. Utilisez l'une des options suivantes pour vous authentifier avec votre compte de service :

    • Identifiants par défaut de l'application (recommandé)

      Attribuez l'emplacement du fichier de clé du compte de service à la variable GOOGLE_APPLICATION_CREDENTIALS afin que l'assistant d'identification Artifact Registry puisse obtenir votre clé lors de la connexion aux dépôts.

      export GOOGLE_APPLICATION_CREDENTIALS=KEY-FILE
      
    • Identifiants de la gcloud CLI

      Avant de vous connecter à un dépôt, connectez-vous avec le compte de service. Évitez cette option si vous vous connectez à des dépôts à partir de VM Compute Engine, car Artifact Registry recherche les identifiants du compte de service de la VM avant les identifiants de la CLI gcloud.

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

    Remplacez KEY-FILE par le chemin d'accès au compte de service. fichier de clé.

S'authentifier à l'aide d'une clé de compte de service

Utilisez cette approche lorsque vous exigez une authentification avec un nom d'utilisateur et un mot de passe.

Les clés de compte de service sont des identifiants de longue durée. Suivez les instructions ci-dessous pour limiter l'accès à vos dépôts :

  • Envisagez d'utiliser un compte de service dédié pour interagir avec les dépôts.
  • Attribuez le rôle Artifact Registry minimal requis par le compte de service. Par exemple, attribuez le lecteur Artifact Registry à un compte de service qui télécharge les artefacts uniquement.
  • Si les groupes de votre organisation nécessitent différents niveaux d'accès à des dépôts spécifiques, accordez l'accès au niveau du dépôt plutôt qu'au niveau du projet.
  • Suivez les bonnes pratiques de gestion des identifiants.

Pour configurer l'authentification :

  1. Créez un compte de service pour agir au nom de votre application ou sélectionnez un compte de service existant que vous utilisez pour l'automatisation.

    Vous aurez besoin de l'emplacement du fichier de clé de compte de service pour configurer l'authentification avec Artifact Registry. Pour les comptes existants, vous pouvez afficher les clés et en créer sur la page "Comptes de service".

    Accéder à la page "Comptes de service"

  2. Accordez le rôle Artifact Registry approprié au compte de service afin de fournir l'accès au dépôt.

  3. Exécutez la commande suivante pour imprimer la configuration du dépôt dans à votre projet Python.

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

    Remplacez les valeurs suivantes :

    • PROJECT est l'ID de projet. Si cette option est ignorée, le projet en cours ou par défaut est utilisé.
    • REPOSITORY est l'ID du dépôt. Si vous avez configuré un dépôt Artifact Registry par défaut, il est utilisé lorsque cette option est omise dans la commande.
    • LOCATION est l'emplacement régional ou multirégional du dépôt.
    • KEY-FILE est le chemin d'accès au fichier de clé JSON du compte de service.
  4. Ajoutez les paramètres suivants au fichier .pypirc. L'emplacement par défaut est pour le fichier de configuration pip par utilisateur est le suivant:

    • Linux et 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
    

    Remplacez les valeurs suivantes :

    • PYTHON-REPO-ID est un ID du dépôt que vous pouvez référencer avec des outils tels que Twine.
    • PROJECT est l'ID de projet. Si cette option est ignorée, le projet en cours ou par défaut est utilisé.
    • REPOSITORY est l'ID du dépôt. Si vous avez configuré un dépôt Artifact Registry par défaut, il est utilisé lorsque cette option est omise dans la commande.
    • LOCATION est l'emplacement régional ou multirégional du dépôt.
    • KEY est la clé encodée en base64 qui se trouve dans le fichier de clé de votre compte de service.
  5. Ajoutez votre dépôt au fichier de configuration pip. L'emplacement du fichier de configuration pip dépend de si vous souhaitez mettre à jour le fichier par utilisateur ou le fichier spécifique à un environnement virtuel que vous utilisez.

    Pour le fichier associé à l'utilisateur de votre système d'exploitation :

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

    Pour les environnements virtuels:

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

    Ajoutez la ligne suivante au fichier de configuration pip:

    [global]
    index-url = https://_json_key_base64:KEY@LOCATION-python.pkg.dev/PROJECT/REPOSITORY/simple/
    
    • KEY correspond à la clé privée figurant dans le fichier de clé de votre compte de service.
    • La chaîne /simple/ à la fin du chemin d'accès du dépôt indique que le dépôt implémente l'API Python Simple Repository.

Étape suivante