Télécharger des packages Python via l'accès direct au dépôt

Une fois que vous avez intégré Assured OSS à Security Command Center, les packages Assured Open Source Software sont hébergés dans un dépôt Artifact Registry créé dans un projet que vous contrôlez.

Cette page explique comment vous connecter au dépôt Artifact Registry pour Assured OSS afin d'accéder directement aux packages Python et de les télécharger.

Ce document ne s'applique qu'au niveau payant Assured OSS. Pour la version gratuite, consultez la section Télécharger des packages Python à l'aide d'un accès direct au dépôt pour la version gratuite.

Avant de commencer

  1. Intégrez Assured OSS à Security Command Center.

  2. Validez la connectivité à Assured OSS pour les comptes de service demandés.

  3. Installez la dernière version de la Google Cloud CLI.

  4. Si vous avez déjà installé la Google Cloud CLI, assurez-vous de disposer de la dernière version en exécutant la commande suivante:

    gcloud components update
    

Configurer l'authentification

Vous pouvez vous authentifier auprès du dépôt de packages Python Assured OSS à l'aide de l'une des méthodes suivantes:

  • S'authentifier avec un trousseau de clés
  • S'authentifier avec une clé de compte de service

Les sections suivantes décrivent comment configurer ces méthodes d'authentification.

S'authentifier avec un trousseau

Pour savoir comment utiliser le trousseau de clés Python afin de vous authentifier auprès d'Artifact Registry, consultez la section S'authentifier à l'aide d'un trousseau et les informations sur l'ordre de recherche d'identifiants. Nous vous recommandons d'utiliser le trousseau de clés Python pour l'authentification.

Pour configurer le trousseau pour l'authentification, procédez comme suit:

  1. Installez la bibliothèque keyring:

    pip install keyring
    
  2. Installez le backend Artifact Registry:

    pip install keyrings.google-artifactregistry-auth
    
  3. Affichez la liste des backends pour confirmer l'installation:

    keyring --list-backends
    

    Cette liste doit inclure les éléments suivants:

    • ChainerBackend(priority:10)
    • GooglePythonAuth(priority:9)
  4. Pour en savoir plus sur la configuration des identifiants par défaut de l'application, consultez Configurer l'authentification.

    Cette étape garantit que l'assistant d'identification Assured OSS obtient votre clé lors de la connexion aux dépôts.

S'authentifier avec une clé de compte de service

Authentifiez-vous avec une clé de compte de service lorsque l'application nécessite une authentification avec un nom d'utilisateur et un mot de passe.

Remplacez l'URL du dépôt de packages https://us-python.pkg.dev/PROJECT_ID/assuredoss-python/simple par l'URL https://_json_key_base64:BASE64_KEY@us-python.pkg.dev/PROJECT_ID/assuredoss-python/simple.

Remplacez les éléments suivants :

  • Remplacez PROJECT_ID par l'ID du projet que vous avez sélectionné lors de la configuration d'Assured Open Source Software.
  • Remplacez BASE64_KEY par l'encodage en base64 de l'intégralité du fichier de clé JSON du compte de service. Pour convertir l'intégralité du fichier de clé JSON du compte de service en encodage base64, utilisez la commande suivante:

    BASE64_KEY=$(cat KEY_FILE_LOCATION | base64)
    

    Remplacez KEY_FILE_LOCATION par l'emplacement du fichier de clé JSON du compte de service.

Installer les packages

Les instructions suivantes supposent que vous utilisez PyPI comme dépôt pour télécharger vos dépendances. Si vous utilisez un autre dépôt, vous devez suivre des étapes différentes pour télécharger les dépendances.

Installer les packages existants dans Assured OSS

Pour spécifier les packages Python Assured OSS que vous souhaitez télécharger, créez deux fichiers requirements.txt. Les exemples de fichiers sont les suivants:

  • requirements-google.txt

    # Packages present in Google's Artifact Registry
    
    urllib3==1.26.11 --hash=sha256:1cffe1aa066363a75c856f261c8fce62d87f7c40ce0f46453ea12bf652b12a13
    jsonschema==4.13.0 --hash=sha256:29895bfe55b93b75552fbdd1e09aa0c82b7c1c9395d4f267e10c7d43cd31a74e
    
  • requirements-pypi.txt

    # Packages present in Google's Artifact Registry are mentioned here so that pip
    # downloads their dependencies from PyPI.
    
    urllib3==1.26.11
    jsonschema==4.13.0
    
    # Below this comment, add any package version which you need but is NOT
    # present in Google's Artifact Registry and therefore needs to be downloaded from
    # PyPI.
    

Pour télécharger les packages, exécutez les commandes suivantes:

  • Pour télécharger les packages requis présents dans Artifact Registry pour Assured OSS, exécutez la commande suivante:

     pip install --require-hashes --requirement=requirements-google.txt --index-url https://_json_key_base64:BASE64_KEY@us-python.pkg.dev/PROJECT_ID/assuredoss-python repo/simple  -v --no-deps
    

    Réfléchissez aux éléments suivants :

    • --require-hashes est facultatif. S'ils sont inclus, des hachages sont spécifiés pour tous les packages et toutes les versions de package dans le fichier requirements.txt.
    • -v est facultatif. Si elle est spécifiée, la commande fournit plus de résultats.
  • Pour télécharger les packages requis qui ne figurent pas dans Artifact Registry pour Assured OSS, exécutez la commande suivante:

     pip install --requirement=requirements-pypi.txt --index-url https://pypi.org/simple -v
    

    Cette commande télécharge également les dépendances manquantes des packages que vous avez téléchargés à l'aide de la commande précédente.

Répertorier tous les packages Python disponibles dans Assured OSS

Pour utiliser une API afin d'obtenir la liste de tous les packages Python dans le dépôt Artifact Registry, consultez Répertorier tous les packages Python disponibles dans Assured OSS.

Générer le fichier requirements-google.txt

Cette section fournit des informations supplémentaires sur la génération du fichier requirements-google.txt dont vous avez besoin pour télécharger les packages Python. Pour télécharger le hachage et générer le fichier requirements-google.txt pour votre environnement, vous pouvez utiliser l'une des deux options suivantes:

  • Utilisez un script afin de générer un seul fichier d'exigences pour tous les artefacts.

  • Téléchargez un fichier d'exigences distinct pour chaque artefact.

Les sections suivantes fournissent plus d'informations sur ces options.

Option 1: Utiliser un script afin de générer un seul fichier d'exigences pour tous les artefacts

Utilisez le script generator.sh afin de générer un seul fichier requirements-google.txt pour tous les packages Python (avec leurs hachages) disponibles avec Assured OSS pour le système d'exploitation Linux. Les packages doivent respecter des contraintes telles que la version de Python, l'architecture de la machine et le système d'exploitation. Vous pouvez ensuite supprimer les versions de package dont vous n'avez pas besoin et utiliser le fichier obtenu.

Le script generator.sh vous aide à atteindre les deux niveaux suivants:

  • Il génère la liste la plus récente des versions de package Python disponibles avec Assured OSS et pouvant être installées sur votre système.
  • Elle génère le fichier requirements-google.txt avec tous les hachages.

Le script requis et son fichier README.md sont disponibles dans un bucket Cloud Storage (gs://cloud-aoss/utils/python-requirements-txt/v1.0), qui peut être téléchargé à l'aide de l'outil de ligne de commande gsutil.

Pour télécharger le script et le fichier README.md, procédez comme suit:

  1. Authentifiez-vous auprès du compte de service pour accéder au bucket Cloud Storage à l'aide de la commande suivante:

    gcloud auth activate-service-account --key-file KEY_FILE
    

    Remplacez KEY_FILE par le chemin d'accès au fichier contenant les identifiants du compte de service fourni lors de la configuration.

  2. Téléchargez le fichier generator.sh sur votre ordinateur à l'aide de la commande suivante:

    gsutil cp -r gs://cloud-aoss/utils/python-requirements-txt/v1.0/generator.sh PATH_TO_LOCAL_STORE
    

    Remplacez PATH_TO_LOCAL_STORE par le chemin d'accès local où vous souhaitez enregistrer le fichier téléchargé.

  3. Téléchargez le fichier README.md à l'aide de la commande suivante:

    gsutil cp -r gs://cloud-aoss/utils/python-requirements-txt/v1.0/README.md PATH_TO_LOCAL_STORE
    

    Remplacez PATH_TO_LOCAL_STORE par le chemin d'accès local où vous souhaitez enregistrer le fichier téléchargé. Le fichier README.md contient des instructions sur l'utilisation du script.

Pour exécuter le script, utilisez les commandes suivantes:

  • Pour générer le fichier requirements-google.txt, exécutez la commande suivante:

     chmod +x generator.sh
     ./generator.sh
    
  • Pour obtenir les informations sur le package dans un fichier CSV, exécutez la commande suivante:

    chmod +x generator.sh
    ./generator.sh -i
    

Option 2: Télécharger requirements.txt pour chaque artefact requis

Vous pouvez également télécharger un fichier requirements.txt distinct (contenant le hachage) pour chaque artefact Python, puis les combiner en un seul fichier requirements.txt.

Les hachages d'artefacts sont disponibles dans un bucket Cloud Storage qui peut être téléchargé à l'aide de l'outil de ligne de commande gsutil. Les hachages de chaque package et de chaque version se trouvent à l'emplacement du bucket Cloud Storage gs://cloud-aoss/python/PACKAGE_NAME/VERSION.

Pour télécharger le fichier requirements.txt, procédez comme suit:

  1. Authentifiez-vous auprès du compte de service pour accéder au bucket Cloud Storage à l'aide de la commande suivante:

    gcloud auth activate-service-account --key-file KEY_FILE
    

    Remplacez KEY_FILE par le chemin d'accès au fichier contenant les identifiants du compte de service.

  2. Téléchargez le fichier requirements.txt d'un package et d'une version spécifiques sur votre ordinateur local à l'aide de la commande suivante:

    gsutil cp -r gs://cloud-aoss/python/PACKAGE_NAME/VERSION PATH_TO_LOCAL_STORE
    

    Remplacez les éléments suivants :

    • PACKAGE_NAME: nom du package
    • VERSION: version du package.
    • PATH_TO_LOCAL_STORE: chemin d'accès local où vous souhaitez télécharger le fichier

    Exemple de commande:

    gsutil cp -r gs://cloud-aoss/python/bleach/5.0.0 /tmp/bleach

    Exemple de fichier requirements.txt :

    bleach==5.0.0 \
     --hash=sha256:6d286e765bfd3e309209cfa1d063e4d46afa966dea8cb97431c02b1e3067d812
    

    Le contenu de chaque fichier requirements.txt de ce type peut être combiné en un seul fichier requirements-google.txt.

Étapes suivantes