Python-Pakete mit direktem Repositoryzugriff herunterladen

Nachdem Sie Assured OSS in Security Command Center integriert haben, werden Assured Open Source Software-Pakete in einem Artifact Registry-Repository gehostet, das in einem Projekt erstellt wird, das Sie verwalten.

Auf dieser Seite wird erläutert, wie Sie eine Verbindung zum Artifact Registry-Repository für Assured OSS herstellen, um direkt auf die Python-Pakete zuzugreifen und sie herunterzuladen.

Dieses Dokument gilt nur für die Premium-Version von Assured OSS. Informationen zum kostenlosen Abo finden Sie unter Python-Pakete mit direktem Repository-Zugriff für das kostenlose Abo herunterladen.

Hinweise

  1. Assured OSS in Security Command Center einbinden

  2. Verbindung zu Assured OSS validieren für die angeforderten Dienstkonten.

  3. Installieren Sie die aktuelle Version der Google Cloud CLI.

  4. Wenn Sie die Google Cloud CLI bereits installiert haben, prüfen Sie, ob Sie die neueste Version haben. Führen Sie dazu den folgenden Befehl aus:

    gcloud components update
    

Authentifizierung einrichten

Sie können sich mit einer der folgenden Methoden im Assured OSS-Repository für Python-Pakete authentifizieren:

  • Mit einem Schlüsselbund authentifizieren
  • Mit einem Dienstkontoschlüssel authentifizieren

In den folgenden Abschnitten wird beschrieben, wie Sie diese Authentifizierungsmethoden einrichten.

Mit Schlüsselbund authentifizieren

Informationen zur Authentifizierung bei Artifact Registry mit dem Python-keyring finden Sie unter Authentifizierung mit Keyring und in den Informationen zur Reihenfolge der Suche nach Anmeldedaten. Wir empfehlen, für die Authentifizierung den Python-Schlüsselbund zu verwenden.

So richten Sie das Schlüsselbund für die Authentifizierung ein:

  1. Installieren Sie die keyring-Bibliothek:

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

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

    keyring --list-backends
    

    Die Liste sollte Folgendes enthalten:

    • ChainerBackend(priority:10)
    • GooglePythonAuth(priority:9)
  4. Informationen zum Einrichten von Standardanmeldedaten für Anwendungen finden Sie unter Authentifizierung einrichten.

    So wird sichergestellt, dass die Assured OSS-Credential Helper Ihren Schlüssel beim Herstellen einer Verbindung zu den Repositories abrufen können.

Mit einem Dienstkontoschlüssel authentifizieren

Authentifizieren Sie sich mit einem Dienstkontoschlüssel, wenn für die Anwendung eine Authentifizierung mit einem Nutzernamen und einem Passwort erforderlich ist.

Ersetzen Sie die Paket-Repository-URL https://us-python.pkg.dev/PROJECT_ID/assuredoss-python/simple durch die URL https://_json_key_base64:$BASE64_KEY@us-python.pkg.dev/PROJECT_ID/assuredoss-python/simple.

Ersetzen Sie PROJECT_ID durch die ID des Projekts, das Sie beim Einrichten von Assured Open Source Software ausgewählt haben.

Pakete installieren

Bei der folgenden Anleitung wird davon ausgegangen, dass Sie PyPI als Repository zum Herunterladen Ihrer Abhängigkeiten verwenden. Wenn Sie ein anderes Repository verwenden, müssen Sie die Abhängigkeiten anders herunterladen.

Pakete installieren, die in Assured OSS vorhanden sind

Erstellen Sie zwei requirements.txt-Dateien, um die Assured OSS-Python-Pakete anzugeben, die Sie herunterladen möchten. Die Beispieldateien sind:

  • 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.
    

Führen Sie die folgenden Befehle aus, um die Pakete herunterzuladen:

  • Führen Sie den folgenden Befehl aus, um die erforderlichen Pakete herunterzuladen, die in der Artifact Registry für Assured OSS vorhanden sind:

     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
    

    Berücksichtige Folgendes:

    • --require-hashes ist optional. Wenn sie enthalten sind, werden Hashes für alle Pakete und für alle Paketversionen in der Datei requirements.txt angegeben.
    • -v ist optional. Wenn angegeben, gibt der Befehl mehr Ausgabe aus.
  • Führen Sie den folgenden Befehl aus, um die erforderlichen Pakete herunterzuladen, die nicht in der Artifact Registry für Assured OSS vorhanden sind:

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

    Mit diesem Befehl werden auch die fehlenden Abhängigkeiten der Pakete heruntergeladen, die Sie mit dem vorherigen Befehl heruntergeladen haben.

Alle in Assured OSS verfügbaren Python-Pakete auflisten

Wenn Sie eine API verwenden möchten, um eine Liste aller Python-Pakete im Artifact Registry-Repository abzurufen, lesen Sie den Abschnitt Alle in Assured OSS verfügbaren Python-Pakete auflisten.

requirements-google.txt-Datei generieren

In diesem Abschnitt finden Sie zusätzliche Informationen zum Generieren der requirements-google.txt-Datei, die Sie zum Herunterladen der Python-Pakete benötigen. Sie haben zwei Möglichkeiten, den Hash herunterzuladen und die Datei requirements-google.txt für Ihre Umgebung zu generieren:

  • Verwenden Sie ein Skript, um eine einzelne Datei mit Anforderungen für alle Artefakte zu generieren.

  • Laden Sie für jedes Artefakt eine separate Datei mit Anforderungen herunter.

In den folgenden Abschnitten finden Sie weitere Informationen zu diesen Optionen.

Option 1: Skript zum Generieren einer einzelnen Datei mit Anforderungen für alle Artefakte verwenden

Verwenden Sie das generator.sh-Skript, um eine einzelne requirements-google.txt-Datei für alle Python-Pakete (mit ihren Hashes) zu generieren, die mit Assured OSS für das Linux-Betriebssystem verfügbar sind. Die Pakete müssen Einschränkungen wie Python-Version, Maschinenarchitektur und Betriebssystem erfüllen. Anschließend können Sie die Paketversionen löschen, die Sie nicht benötigen, und die resultierende Datei verwenden.

Das Skript generator.sh hilft auf zwei Arten:

  • Es wird die aktuelle Liste der Python-Paketversionen generiert, die mit Assured OSS verfügbar sind und erfolgreich auf Ihrem System installiert werden können.
  • Dadurch wird die Datei requirements-google.txt zusammen mit allen Hashwerten generiert.

Das erforderliche Skript und die zugehörige README.md-Datei sind in einem Cloud Storage-Bucket (gs://cloud-aoss/utils/python-requirements-txt/v1.0) verfügbar, der mit der Google Cloud CLI heruntergeladen werden kann.

So laden Sie das Skript und die README.md-Datei herunter:

  1. Authentifizieren Sie sich mit dem Dienstkonto, um mit dem folgenden Befehl auf den Cloud Storage-Bucket zuzugreifen:

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

    Ersetzen Sie KEY_FILE durch den Pfad zur Datei mit den Anmeldedaten des Dienstkontos, die bei der Einrichtung angegeben wurden.

  2. Laden Sie die generator.sh mit dem folgenden Befehl auf Ihren Computer herunter:

    gcloud storage cp gs://cloud-aoss/utils/python-requirements-txt/v1.0/generator.sh PATH_TO_LOCAL_STORE --recursive
    

    Ersetzen Sie PATH_TO_LOCAL_STORE durch den lokalen Pfad, unter dem Sie die heruntergeladene Datei speichern möchten.

  3. Laden Sie die Datei README.md mit dem folgenden Befehl herunter:

    gcloud storage cp gs://cloud-aoss/utils/python-requirements-txt/v1.0/README.md PATH_TO_LOCAL_STORE --recursive
    

    Ersetzen Sie PATH_TO_LOCAL_STORE durch den lokalen Pfad, unter dem Sie die heruntergeladene Datei speichern möchten. Die Datei README.md enthält eine Anleitung zur Verwendung des Skripts.

Verwenden Sie die folgenden Befehle, um das Skript auszuführen:

  • Führen Sie den folgenden Befehl aus, um die Datei requirements-google.txt zu generieren:

     chmod +x generator.sh
     ./generator.sh
    
  • Führen Sie den folgenden Befehl aus, um die Informationen des Pakets in einer CSV-Datei abzurufen:

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

Option 2: requirements.txt für jedes erforderliche Artefakt herunterladen

Sie können auch für jedes Python-Artefakt eine separate requirements.txt-Datei (mit dem Hash) herunterladen und sie dann in einer einzelnen requirements.txt-Datei zusammenführen.

Artifact-Hashes sind in einem Cloud Storage-Bucket verfügbar, der mit der gcloud CLI heruntergeladen werden kann. Hashes für jedes Paket und eine Version befinden sich im Cloud Storage-Bucket unter gs://cloud-aoss/python/PACKAGE_NAME/VERSION.

So laden Sie die Datei requirements.txt herunter:

  1. Authentifizieren Sie sich mit dem Dienstkonto, um mit dem folgenden Befehl auf den Cloud Storage-Bucket zuzugreifen:

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

    Ersetzen Sie KEY_FILE durch den Pfad zur Datei mit den Anmeldedaten für das Dienstkonto.

  2. Laden Sie die requirements.txt eines bestimmten Pakets und einer bestimmten Version mit dem folgenden Befehl auf Ihren lokalen Computer herunter:

    gcloud storage cp gs://cloud-aoss/python/PACKAGE_NAME/VERSION PATH_TO_LOCAL_STORE --recursive
    

    Ersetzen Sie Folgendes:

    • PACKAGE_NAME: der Paketname
    • VERSION: die Version des Pakets
    • PATH_TO_LOCAL_STORE: der lokale Pfad, in den Sie die Datei herunterladen möchten

    Beispielbefehl:

    gcloud storage cp gs://cloud-aoss/python/bleach/5.0.0 /tmp/bleach --recursive

    Beispieldatei requirements.txt:

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

    Der Inhalt jeder requirements.txt-Datei kann in einer einzelnen requirements-google.txt-Datei zusammengefasst werden.

Nächste Schritte