Mendownload paket Python menggunakan akses repositori langsung

Setelah Anda mengintegrasikan Assured OSS dengan Security Command Center, paket Assured Open Source Software dihosting di repositori Artifact Registry yang dibuat dalam project yang Anda kontrol.

Halaman ini menjelaskan cara menghubungkan ke repositori Artifact Registry untuk Assured OSS guna mengakses dan mendownload paket Python secara langsung.

Dokumen ini hanya berlaku untuk tingkat premium Assured OSS. Untuk paket gratis, lihat Mendownload paket Python menggunakan akses repositori langsung untuk paket gratis.

Sebelum memulai

  1. Mengintegrasikan Assured OSS dengan Security Command Center.

  2. Validasi konektivitas ke Assured OSS untuk akun layanan yang diminta.

  3. Instal Google Cloud CLI versi terbaru.

  4. Jika Anda telah menginstal Google Cloud CLI sebelumnya, pastikan Anda memiliki versi terbaru dengan menjalankan perintah:

    gcloud components update
    

Menyiapkan autentikasi

Anda dapat mengautentikasi ke repositori paket Python OSS Terjamin menggunakan salah satu metode berikut:

  • Mengautentikasi dengan ring kunci
  • Melakukan autentikasi dengan kunci akun layanan

Bagian berikut menjelaskan cara menyiapkan metode autentikasi ini.

Mengautentikasi dengan keyring

Untuk menggunakan keyring Python guna melakukan autentikasi ke Artifact Registry, lihat melakukan autentikasi dengan keyring dan informasi tentang urutan penelusuran kredensial. Sebaiknya Anda menggunakan keyring Python untuk autentikasi.

Untuk menyiapkan ring kunci untuk autentikasi, lakukan langkah berikut:

  1. Instal library keyring:

    pip install keyring
    
  2. Instal backend Artifact Registry:

    pip install keyrings.google-artifactregistry-auth
    
  3. Cantumkan backend untuk mengonfirmasi penginstalan:

    keyring --list-backends
    

    Daftar harus menyertakan hal berikut:

    • ChainerBackend(priority:10)
    • GooglePythonAuth(priority:9)
  4. Untuk mengetahui informasi tentang cara menyiapkan Kredensial Default Aplikasi, lihat Menyiapkan autentikasi.

    Langkah ini memastikan bahwa helper kredensial OSS Terjamin mendapatkan kunci Anda saat terhubung dengan repositori.

Melakukan autentikasi dengan kunci akun layanan

Lakukan autentikasi dengan kunci akun layanan saat aplikasi memerlukan autentikasi dengan nama pengguna dan sandi.

Ganti URL repositori paket https://us-python.pkg.dev/PROJECT_ID/assuredoss-python/simple dengan URL https://_json_key_base64:BASE64_KEY@us-python.pkg.dev/PROJECT_ID/assuredoss-python/simple

Ganti kode berikut:

  • Ganti PROJECT_ID dengan ID project yang Anda pilih saat menyiapkan Software Open Source Terjamin.
  • Ganti BASE64_KEY dengan file kunci JSON akun layanan berenkode base64. Untuk mengonversi seluruh file kunci JSON akun layanan ke enkode base64, gunakan perintah berikut:

    BASE64_KEY=$(cat KEY_FILE_LOCATION | base64 -w 0)
    

    Ganti KEY_FILE_LOCATION dengan lokasi file kunci JSON akun layanan.

Menginstal paket

Petunjuk berikut mengasumsikan bahwa Anda menggunakan PyPI sebagai repositori untuk mendownload dependensi. Jika menggunakan repositori lain, Anda harus menggunakan langkah yang berbeda untuk mendownload dependensi.

Menginstal paket yang ada di Assured OSS

Untuk menentukan paket Python Assured OSS yang ingin Anda download, buat dua file requirements.txt. File contohnya adalah sebagai berikut:

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

Untuk mendownload paket, jalankan perintah berikut:

  • Untuk mendownload paket yang diperlukan yang ada di Artifact Registry untuk Assured OSS, jalankan perintah berikut:

     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
    

    Pertimbangkan hal berikut:

    • --require-hashes bersifat opsional. Jika disertakan, hash ditentukan untuk semua paket dan untuk semua versi paket dalam file requirements.txt.
    • Ganti BASE64_KEY dengan file JSON akun layanan yang dienkode base64.
    • -v bersifat opsional. Jika ditentukan, perintah akan memberikan lebih banyak output.
  • Untuk mendownload paket yang diperlukan yang tidak ada di Artifact Registry untuk Assured OSS, jalankan perintah berikut:

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

    Perintah ini juga mendownload dependensi paket yang tidak ada yang telah Anda download menggunakan perintah sebelumnya.

Mencantumkan semua paket Python yang tersedia di Assured OSS

Untuk menggunakan API guna mendapatkan daftar semua paket Python di repositori Artifact Registry, lihat Mencantumkan semua paket Python yang tersedia di Assured OSS.

Membuat file requirements-google.txt

Bagian ini memberikan informasi tambahan tentang cara membuat file requirements-google.txt yang Anda perlukan untuk mendownload paket Python. Untuk mendownload hash dan membuat file requirements-google.txt untuk lingkungan Anda, Anda dapat menggunakan salah satu dari dua opsi berikut:

  • Gunakan skrip untuk membuat satu file persyaratan untuk semua artefak.

  • Download file persyaratan terpisah untuk setiap artefak.

Bagian berikut memberikan informasi selengkapnya tentang opsi ini.

Opsi 1: Gunakan skrip untuk membuat satu file persyaratan untuk semua artefak

Gunakan skrip generator.sh untuk membuat satu file requirements-google.txt untuk semua paket Python (beserta hash-nya) yang tersedia dengan Assured OSS untuk sistem operasi Linux. Paket harus memenuhi batasan seperti versi Python, arsitektur mesin, dan sistem operasi. Kemudian, Anda dapat menghapus versi paket yang tidak diperlukan dan menggunakan file yang dihasilkan.

Skrip generator.sh membantu dalam dua cara berikut:

  • Skrip ini menghasilkan daftar terbaru versi paket Python yang tersedia dengan Assured OSS yang berhasil diinstal di sistem Anda.
  • Tindakan ini akan menghasilkan file requirements-google.txt beserta semua hash.

Skrip yang diperlukan dan file README.md-nya tersedia di bucket Cloud Storage (gs://cloud-aoss/utils/python-requirements-txt/v1.0) yang dapat didownload menggunakan Google Cloud CLI.

Untuk mendownload skrip dan file README.md, ikuti langkah-langkah berikut:

  1. Lakukan autentikasi dengan akun layanan untuk mengakses bucket Cloud Storage menggunakan perintah berikut:

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

    Ganti KEY_FILE dengan jalur ke file yang berisi kredensial akun layanan yang diberikan selama penyiapan.

  2. Download generator.sh ke komputer Anda menggunakan perintah berikut:

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

    Ganti PATH_TO_LOCAL_STORE dengan jalur lokal tempat Anda ingin menyimpan file yang didownload.

  3. Download file README.md menggunakan perintah berikut:

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

    Ganti PATH_TO_LOCAL_STORE dengan jalur lokal tempat Anda ingin menyimpan file yang didownload. File README.md berisi petunjuk cara menggunakan skrip.

Untuk menjalankan skrip, gunakan perintah berikut:

  • Untuk membuat file requirements-google.txt, jalankan perintah berikut:

     chmod +x generator.sh
     ./generator.sh
    
  • Untuk mendapatkan informasi paket dalam file CSV, jalankan perintah berikut:

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

Opsi 2: Download requirements.txt untuk setiap artefak yang diperlukan

Anda juga dapat mendownload file requirements.txt terpisah (berisi hash) untuk setiap artefak Python, lalu menggabungkannya menjadi satu file requirements.txt.

Hash artefak tersedia di bucket Cloud Storage yang dapat didownload menggunakan gcloud CLI. Hash untuk setiap paket dan versi berada di lokasi bucket Cloud Storage gs://cloud-aoss/python/PACKAGE_NAME/VERSION.

Untuk mendownload file requirements.txt, ikuti langkah-langkah berikut:

  1. Lakukan autentikasi dengan akun layanan untuk mengakses bucket Cloud Storage menggunakan perintah berikut:

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

    Ganti KEY_FILE dengan jalur ke file yang berisi kredensial akun layanan.

  2. Download requirements.txt dari paket dan versi tertentu ke mesin lokal Anda menggunakan perintah berikut:

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

    Ganti kode berikut:

    • PACKAGE_NAME: nama paket
    • VERSION: versi paket
    • PATH_TO_LOCAL_STORE: jalur lokal tempat Anda ingin mendownload file

    Contoh perintah:

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

    Contoh file requirements.txt:

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

    Konten setiap file requirements.txt tersebut dapat digabungkan menjadi satu file requirements-google.txt.

Langkah selanjutnya