Mengakses metadata menggunakan Cloud Storage

Assured OSS menyediakan metadata keamanan untuk setiap paket yang tersedia. Setiap versi paket memiliki metadatanya sendiri. Halaman ini menjelaskan informasi apa yang diberikan sebagai bagian dari metadata dan cara Anda mengakses metadata ini.

Anda dapat mengakses metadata keamanan menggunakan salah satu opsi berikut:

  • Artifact Analysis API
  • Cloud Storage

Halaman ini hanya berlaku untuk paket gratis.

File metadata keamanan

Metadata keamanan untuk setiap versi paket OSS Tepercaya didistribusikan di empat file berikut dalam bucket Cloud Storage:

  • buildinfo.zip: File ini berisi metadata tentang informasi build paket. Metadata ini akan berubah dalam skenario yang sangat jarang terjadi seperti membangun ulang paket, rotasi sertifikat, dan penambahan kolom baru.
  • vexinfo.zip: File ini berisi informasi kerentanan untuk paket dalam format CycloneDX 1.4. Nilai ini diperkirakan akan berubah setiap kali ada informasi tentang kerentanan paket.
  • healthinfo.zip: File ini berisi detail tentang pengujian yang dilakukan pada paket. Nilai ini dapat berubah jika status pengujian paket dimodifikasi. Misalnya, jika pengujian keamanan baru dilakukan atau jika hasil cakupan berubah.
  • licenseinfo.zip: File ini berisi metadata yang berkaitan dengan informasi lisensi paket. Informasi lisensi paket dapat berubah jika penerbit paket mengubah informasi tersebut.

Setiap file ZIP berisi dua file berikut:

  • File JSON yang berisi data.
  • File signature.zip yang berisi tanda tangan untuk data tersebut.

Struktur file JSON

Struktur untuk file JSON dijelaskan di bagian berikut:

buildInfo.json

  • creationTime: waktu pembuatan dokumen ini dalam format string RFC 3339.
  • creator: pemilik dokumen. Detail berikut diberikan:
    • name: nama organisasi yang membuat dokumen ini.
    • email: alamat email organisasi jika ada pertanyaan atau keluhan.
  • buildDetails: detail yang terkait dengan pembuatan biner. Detail berikut diberikan:
    • packageFileName: nama file yang detail build-nya berlaku.
    • buildProvenance: string yang merepresentasikan asal build paket dalam format SLSA v0.2. Ini dihasilkan oleh Cloud Build.
    • envelope: string yang merepresentasikan envelope DSSE yang dapat digunakan untuk memverifikasi integritas dokumen asal. Hal ini juga dihasilkan oleh Cloud Build.
    • slsaLevel: Ini menunjukkan tingkat SLSA yang dipatuhi oleh sistem build.
    • buildTool: Nama alat yang digunakan untuk membangun paket, yaitu Cloud Build. Untuk mengetahui informasi selengkapnya, lihat Cloud Build.
    • transitiveClosureState: Ini adalah ENUM yang menunjukkan apakah semua dependensi build untuk paket (langsung atau tidak langsung) juga ada dalam portofolio Assured OSS atau tidak. Properti ini dapat memiliki dua nilai:
      • OPEN: Jika nol atau hanya dependensi transitif parsial yang didukung oleh Assured OSS.
      • CLOSED: Jika semua dependensi transitif didukung oleh Assured OSS.
  • sourceInfo: informasi tentang kode sumber yang digunakan untuk membangun paket. Detail berikut diberikan:
    • sourceUrl: string URL GitHub.
    • commitHash: string hash commit yang dilampirkan ke rilis.
    • tag: tag rilis yang terkait dengan versi paket.
    • host: nama sistem yang menghosting kode sumber di GitHub.
    • commitTime: waktu commit dalam format string RFC 3339.
  • sbom - String SBOM dalam format SPDX 2.3.

vexInfo.json

  • creationTime: waktu pembuatan dokumen ini dalam format string RFC 3339.
  • creator: pemilik dokumen. Detail berikut diberikan:
    • name: nama organisasi yang membuat dokumen ini.
    • email: alamat email organisasi jika ada pertanyaan atau keluhan.
  • vexData: String Vulnerability Exploitability eXchange (VEX) dalam format CycloneDX 1.4.

healthInfo.json

  • creationTime: waktu pembuatan dokumen ini dalam format string RFC 3339.
  • creator: pemilik dokumen. Detail berikut diberikan:
    • name: nama organisasi yang membuat dokumen ini.
    • email: alamat email organisasi jika ada pertanyaan atau keluhan.
  • testingData: detail tentang pengujian keamanan yang dilakukan pada paket. Detail berikut diberikan:
    • testType: jenis pengujian yang dilakukan. Contoh, FUZZ.
    • tool: nama alat yang digunakan untuk melakukan pengujian.
    • testStatus: status pengujian. Statusnya dapat berupa salah satu dari berikut:
      • TESTED: pengujian dijalankan.
      • NOT_REQUIRED: pengujian tidak diperlukan untuk paket. Misalnya, pengujian fuzz tidak diperlukan pada paket yang hanya berisi antarmuka.
      • UNTESTED: paket tidak diuji.

licenseInfo.json

  • package_name: Nama paket dalam format string.
  • package_version: Versi paket.
  • license_info: Lisensi yang terkait dengan paket.

Mengakses metadata keamanan dari Cloud Storage

Untuk mengakses metadata keamanan dari Cloud Storage, ikuti langkah-langkah berikut:

Langkah 1 - Siapkan autentikasi

Untuk mengetahui informasi tentang cara menyiapkan autentikasi, lihat Menyiapkan autentikasi.

Langkah 2 - Buat URL

Anda dapat menggunakan perintah gcloud storage atau curl untuk mendownload metadata. Buat URL untuk keduanya menggunakan informasi berikut:

  • Bahasa: java atau python. Nilai harus dalam huruf kecil.
  • Package_ID: untuk Java, ini adalah groupId:artifactId dan untuk Python, ini adalah packageName. Nilai harus dalam huruf kecil.
  • Versi: versi paket.
  • Metadata_Type: pilih antara buildinfo.zip, vexinfo.zip, dan healthinfo.zip.

URL harus memiliki format berikut:

gcloud

gs://cloud-aoss-metadata/<language>/<package_id>/<version>/<metadata_type>

Perhatikan bahwa URL harus dalam huruf kecil.

Contoh URL Python: gs://cloud-aoss-metadata/python/cryptography/37.0.4/buildinfo.zip

Contoh URL Java: gs://cloud-aoss-metadata/java/com.google.errorprone:error_prone_annotations/2.15.0/buildinfo.zip

curl

https://storage.googleapis.com/cloud-aoss-metadata/<language>/<package_id>/<version>/<metadata_type>

Perhatikan bahwa URL harus dalam huruf kecil.

Contoh URL Python: https://storage.googleapis.com/cloud-aoss-metadata/python/cryptography/37.0.4/buildinfo.zip

Contoh URL Java: https://storage.googleapis.com/cloud-aoss-metadata/java/com.google.errorprone:error_prone_annotations/2.15.0/buildinfo.zip

Langkah 3 - Download metadata

Gunakan perintah berikut untuk mendownload metadata:

gcloud

gcloud storage cp  "gs://cloud-aoss-metadata/<language>/<package_id>/<version>/<metadata_type>" outputFolderLocation

Untuk mendownload semua jenis metadata seperti informasi build, informasi kesehatan, dan informasi VEX secara bersamaan untuk paket dan versi tertentu, gunakan perintah berikut:

gcloud storage cp "gs://cloud-aoss-metadata/<language>/<package_id>/<version>" outputFolderLocation --recursive

Metadata didistribusikan di tiga file ZIP (buildinfo.zip, healthinfo.zip, vexinfo.zip) dan didownload ke folder output.

curl

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -L https://storage.googleapis.com/cloud-aoss-metadata/<language>/<package_id>/<version>/<metadata_type> -o output.zip

Langkah 4 - Ekstrak metadata

Ekstrak file ZIP. Di macOS atau Linux, gunakan perintah unzip: unzip input.zip -d outputFolder. Setiap file ZIP berisi file JSON dan file signature.zip. File JSON berisi metadata keamanan sebenarnya dan file signature.zip berisi file untuk memverifikasi tanda tangan Google pada JSON.

Download informasi lisensi

Informasi lisensi untuk semua paket Assured OSS tersedia dalam satu file JSON. Untuk mendownload file ini, jalankan perintah berikut:

gcloud

gcloud storage cp  "gs://cloud-aoss/info/LicenseInfo.json" outputFolderLocation

curl

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -L https://storage.googleapis.com/cloud-aoss/info/LicenseInfo.json

Untuk mendownload tanda tangan file metadata lisensi, jalankan perintah berikut:

gcloud

gcloud storage cp "gs://cloud-aoss/info/LicenseInfo.json-sig.zip" outputFolderLocation

curl

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -L https://storage.googleapis.com/cloud-aoss/info/LicenseInfo.json-sig.zip -o output.zip

Langkah berikutnya