Paket Assured Open Source Software (Assured OSS) mematuhi Supply-chain Levels for Software Artifacts (SLSA) Level 2, yang memerlukan provenance build sebagai bagian dari metadata keamanan. Untuk mengonfirmasi integritas paket, Anda dapat memverifikasi metadata provenance build.
Dokumen ini berlaku untuk paket gratis. Untuk mengetahui informasi tentang provenance build di paket premium, lihat Mengakses metadata keamanan dan memverifikasi paket.
Sebelum memulai
- Instal cosign untuk memverifikasi tanda tangan dalam provenance build.
Menyiapkan autentikasi
Untuk mengetahui informasi tentang cara menyiapkan autentikasi, lihat Menyiapkan autentikasi.
Memverifikasi provenance build
Provenance build ditandatangani menggunakan pengesahan in-toto yang pada gilirannya menggunakan format amplop dsse. Artinya, tanda tangan yang dihasilkan berisi tanda tangan yang digabungkan dan data mentah.
Menggunakan alat aoss-verifier
Untuk memverifikasi provenance build, instal alat aoss-verifier.
Ekspor
$(go env GOPATH)/bin, dan jalankan perintahaoss-verifier verify-packagedengan flag--verify_build_provenance.aoss-verifier verify-package \ --language LANGUAGE \ --package_id PACKAGE_ID \ --version VERSION \ --artifact_path ARTIFACT_PATH \ --verify_build_provenance \ [--disable_certificate_verification] \ [--temp_downloads_path TEMP_DOWNLOADS_DIR_PATH] \ [--disable_deletes]Ganti kode berikut:
- LANGUAGE: Bahasa paket. Nilai harus dalam huruf kecil.
- PACKAGE_ID: Untuk Java, formatnya adalah groupId:artifactId. Untuk Python, formatnya adalah packageName. Nilai harus dalam huruf kecil.
- VERSION: Versi paket.
- ARTIFACT_PATH: Jalur ke file data di direktori lokal yang ingin Anda verifikasi. Gunakan ekstensi nama file berikut:
- Ekstensi file
jaruntuk paket Java - Ekstensi file
whluntuk paket Python
- Ekstensi file
--disable_certificate_verificationadalah flag opsional yang melewati pencocokan sertifikat entitas akhir dengan root certificate melalui rantai sertifikat, jika digunakan.--temp_downloads_pathadalah flag opsional untuk menetapkan jalur tempat Anda ingin mendownload file. Ganti TEMP_DOWNLOADS_DIR_PATH. Jika flag ini tidak ditetapkan, file akan didownload ke foldertmp_downloadsdi direktori saat ini.--disable_deletesadalah flag opsional yang menyimpan file yang didownload. Secara default, alat ini akan membersihkan semua file yang didownload.
Untuk mengetahui informasi selengkapnya, lihat file README alat.
Verifikasi manual
Untuk memverifikasi provenance build, lakukan hal berikut:
Mengambil provenance build.
Bergantung pada cara Anda mengakses metadata keamanan, provenance build diakses secara berbeda.
- Jika Anda mengakses metadata keamanan menggunakan Cloud Storage, provenance build tersedia sebagai bagian dari metadata
Build Informationdi kolombuildDetails.
Untuk informasi selengkapnya, lihat contoh cuplikan metadata berikut:
{ "creationTime": "2023-03-25T05:32:23Z", "buildDetails": [ { "packageFileName": "jackson-databind-2.13.3.jar", "envelope": { "payload": "eyJfdHlwZSI6Imh0d……………", "payloadType": "application/vnd.in-toto+json", "signatures": [ "sig": "eyJwYXlsb2FkVHlwZSI6Im……", "keyid": "gcpkms://projects/cloud-aoss/locations/global/keyRings/cloud-aoss-ring/cryptoKeys/tekton-chains" } ] }, "buildProvenance": "{\"_type\":\"https://in-toto.io/Statement/v0.1…" .....- Jika Anda mengakses metadata keamanan menggunakan Artifact Analysis API,
provenance build disimpan di bagian
BuildOccurrencepada metadata keamanan.
Contoh cuplikan metadata:
{'BuildOccurrence': name: "projects/cloud-aoss/occurrences/06c514bb-1069-4cde-8d68-b1306f19535a" resource_uri: "jackson-databind-2.13.3.jar@sha256:4c01a14673bc1cd4a2df337a3b4e695af0a6ed8ac6be19c9e4077377fb8adf92" note_name: "projects/cloud-aoss/notes/tekton-cloudbuild-intoto" kind: BUILD create_time { seconds: 1665556616 nanos: 891004000 } …… …… } envelope { payload: "{\"_type\":\"https://in-toto.io/Statement/v0.1\", ….." payload_type: "application/vnd.in-toto+json" signatures { sig: "{\"payloadType\":\"application/vnd.in-toto+json\",....." keyid: "gcpkms://projects/cloud-aoss/locations/global/keyRings/cloud-aoss-ring/cryptoKeys/tekton-chains" } } , …- Jika Anda mengakses metadata keamanan menggunakan Cloud Storage, provenance build tersedia sebagai bagian dari metadata
Mengambil tanda tangan provenance build.
Provenance build berisi bagian bernama Envelope yang berisi tanda tangan sebagai EnvelopeSignature. Untuk mengambil tanda tangan, ikuti langkah-langkah berikut:
- Simpan data
sigdalam file bernamasignature.txt. Periksa apakah metadata didownload menggunakan skrip metadata.
Jika metadata didownload menggunakan skrip metadata, ubah tanda tangan dan simpan di file lain bernama
signature.sig.Untuk mengubah tanda tangan, jalankan perintah berikut:
cat signature.txt | sed -e 's/\\"/"/g' > signature.sigJika metadata tidak didownload menggunakan skrip metadata, dekode tanda tangan dan simpan dalam file lain bernama
signature.sig.Untuk mendekode tanda tangan, gunakan perintah berikut:
cat signature.txt | tr '\-_' '+/' | base64 -d > signature.sig
- Simpan data
Ambil kunci publik provenance build.
Bagian EnvelopeSignature dalam provenance build berisi referensi ke kunci yang digunakan untuk menandatangani provenance build. Kunci disimpan dalam salah satu format berikut:
gcpkms://projects/cloud-aoss/locations/global/keyRings/cloud-aoss-ring/cryptoKeys/KEY_NAMEgcpkms://projects/cloud-aoss/locations/global/keyRings/cloud-aoss-ring/cryptoKeys/KEY_NAME/cryptoKeyVersions/KEY_VERSIONDengan KEY_NAME dan KEY_VERSION adalah nama dan versi kunci Cloud Key Management Service.
Kunci publik disimpan di bucket Cloud Storage yang dimiliki oleh Assured OSS.
Ambil kunci publik menggunakan Google Cloud CLI. Gunakan salah satu perintah berikut:
Jika hanya KEY_NAME yang ada:
gcloud storage cp gs://cloud-aoss/keys/KEY_NAME-public.pem PATH_TO_LOCAL_STOREJika KEY_NAME dan KEY_VERSION ada:
gcloud storage cp gs://cloud-aoss/keys/KEY_NAME-KEY_VERSION-public.pem PATH_TO_LOCAL_STORE
Ganti kode berikut :
- KEY_NAME dengan nama kunci Cloud Key Management Service.
- KEY_VERSION dengan versi kunci Cloud Key Management Service.
- PATH_TO_LOCAL_STORE dengan nama jalur lokal untuk menyimpan kunci publik.
Memverifikasi tanda tangan provenance.
Untuk memverifikasi tanda tangan, jalankan perintah berikut:
cosign verify-blob-attestation --insecure-ignore-tlog --key KEY_REF --signature signature.sig --type slsaprovenance --check-claims=false /dev/nullGanti kode berikut:
- KEY_REF: Jalur ke kunci publik yang Anda download di langkah sebelumnya.
- signature.sig: File yang berisi tanda tangan yang diambil pada langkah sebelumnya.
Output berikut ditampilkan setelah perintah berhasil dijalankan:
Verified OKUntuk juga memverifikasi hash artefak yang terkait dengan provenance, gunakan perintah berikut:
cosign verify-blob-attestation --insecure-ignore-tlog --key KEY_REF --signature signature.sig --type slsaprovenance --check-claims=true ARTIFACT_PATHGanti kode berikut:
- KEY_REF: Jalur ke kunci publik yang Anda download di langkah sebelumnya.
- signature.sig: File yang berisi tanda tangan yang diambil pada langkah sebelumnya.
- ARTIFACT_PATH: Jalur ke artefak.
Output berikut ditampilkan setelah perintah berhasil dijalankan:
Verified OK