Python-Pakete mit direktem Repository-Zugriff herunterladen

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

Auf dieser Seite wird erläutert, wie Sie eine Verbindung zum Artifact Registry-Repository herstellen, damit Assured OSS direkt auf die Python-Pakete zugreifen und diese herunterladen kann.

Dieses Dokument gilt nur für die kostenpflichtige Assured OSS-Stufe. Informationen zur kostenlosen Stufe finden Sie unter Python-Pakete mit direktem Repository-Zugriff für die kostenlose Stufe herunterladen.

Hinweise

  1. Binden Sie Assured OSS in Security Command Center ein.

  2. Prüfen Sie die Verbindung zu Assured OSS für die angeforderten Dienstkonten.

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

  4. Wenn Sie die Google Cloud CLI bereits installiert haben, prüfen Sie mit dem folgenden Befehl, ob Sie die neueste Version haben:

    gcloud components update
    

Authentifizierung einrichten

Sie können sich mit einer der folgenden Methoden beim Assured OSS Python-Paket-Repository 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 Verwendung des Python-Schlüsselbunds zur Authentifizierung bei Artifact Registry finden Sie unter Mit Schlüsselbund authentifizieren und in der Reihenfolge der Anmeldedatensuche. Wir empfehlen, für die Authentifizierung den Python-Schlüsselbund zu verwenden.

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

  1. Installieren Sie die keyring-Bibliothek:

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

    pip install keyrings.google-artifactregistry-auth
    
  3. 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.

    Mit diesem Schritt wird sichergestellt, dass der Assured OSS Credential Helper Ihren Schlüssel erhält, wenn eine Verbindung zu den Repositories hergestellt wird.

Mit einem Dienstkontoschlüssel authentifizieren

Authentifizieren Sie sich mit einem Dienstkontoschlüssel, wenn die Anwendung eine Authentifizierung mit einem Nutzernamen und einem Passwort erfordert.

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 Folgendes:

  • Ersetzen Sie PROJECT_ID durch die ID des Projekts, das Sie beim Einrichten von Assured Open Source Software ausgewählt haben.
  • Ersetzen Sie BASE64_KEY durch die base64-Codierung der gesamten JSON-Schlüsseldatei des Dienstkontos. Verwenden Sie den folgenden Befehl, um die gesamte JSON-Schlüsseldatei des Dienstkontos in die base64-Codierung zu konvertieren:

    BASE64_KEY=$(cat KEY_FILE_LOCATION | base64)
    

    Ersetzen Sie KEY_FILE_LOCATION durch den Speicherort der JSON-Schlüsseldatei des Dienstkontos.

Pakete installieren

In 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 zum Herunterladen von Abhängigkeiten andere Schritte ausführen.

In Assured OSS vorhandene Pakete installieren

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 folgenden Befehl aus, um die erforderlichen Pakete herunterzuladen, die in 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
    

    Beachten Sie dabei Folgendes:

    • --require-hashes ist optional. Falls enthalten, werden Hashes für alle Pakete und für alle Paketversionen in der Datei requirements.txt angegeben.
    • -v ist optional. Wenn angegeben, liefert der Befehl mehr output.
  • Führen Sie folgenden Befehl aus, um die erforderlichen Pakete herunterzuladen, die in Artifact Registry für Assured OSS nicht 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

Informationen zum Abrufen einer Liste aller Python-Pakete im Artifact Registry-Repository API finden Sie unter Alle in Assured OSS verfügbaren Python-Pakete auflisten.

Datei requirements-google.txt wird generiert

Dieser Abschnitt enthält zusätzliche Informationen zum Generieren der Datei requirements-google.txt, 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 Script, um eine einzelne Anforderungsdatei für alle Artefakte zu generieren.

  • Laden Sie für jedes Artefakt eine separate Anforderungsdatei herunter.

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

Option 1: Ein Skript verwenden, um eine einzelne Anforderungsdatei für alle Artefakte zu generieren

Verwenden Sie das Skript generator.sh, um eine einzelne requirements-google.txt-Datei für alle Python-Pakete (zusammen 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 nicht benötigten Paketversionen löschen und die resultierende Datei verwenden.

Das Skript generator.sh ist auf zwei Arten hilfreich:

  • Damit wird die neueste Liste der mit Assured OSS verfügbaren Python-Paketversionen generiert, die erfolgreich auf Ihrem System installiert werden können.
  • Dabei wird die Datei requirements-google.txt zusammen mit allen Hashes generiert.

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

So laden Sie das Skript und die Datei README.md 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, die die Anmeldedaten des bei der Einrichtung angegebenen Dienstkontos enthält.

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

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

    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:

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

    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:

  • Generieren Sie die Datei requirements-google.txt mit dem folgenden Befehl:

     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 diese dann in einer einzigen requirements.txt-Datei kombinieren.

Artefakt-Hashes sind in einem Cloud Storage-Bucket verfügbar, der mit dem gsutil-Befehlszeilentool heruntergeladen werden kann. Hashes für jedes Paket und eine Version befinden sich am Speicherort des Cloud Storage-Bucket 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 zu der Datei, die die Anmeldedaten des Dienstkontos enthält.

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

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

    Ersetzen Sie Folgendes:

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

    Beispielbefehl:

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

    Beispieldatei requirements.txt:

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

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

Nächste Schritte