Paket OSS terjamin dibuat dengan kepatuhan SLSA Level 2. Provenans build disediakan sebagai bagian dari metadata keamanan. Halaman ini menjelaskan cara memverifikasi metadata asal build.
Dokumen ini berlaku untuk paket gratis. Untuk mengetahui informasi tentang asal build di tingkat premium, lihat Mengakses metadata keamanan dan memverifikasi paket.
Sebelum memulai
- Instal cosign untuk memverifikasi tanda tangan dalam provenans build.
Menyiapkan autentikasi
Untuk mengetahui informasi tentang cara menyiapkan autentikasi, lihat Menyiapkan autentikasi.
Memverifikasi provenance build
Provenans build ditandatangani menggunakan pengesahan in-toto yang pada gilirannya menggunakan format envelope DSSE. Artinya, tanda tangan yang dihasilkan berisi tanda tangan yang di-wrap dan data mentah.
Menggunakan alat aoss-verifier
Untuk memverifikasi asal build, instal alat aoss-verifier.
Ekspor
$(go env GOPATH)/bin, lalu 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 tanda opsional yang melewati pencocokan sertifikat leaf dengan sertifikat root melalui rantai sertifikat, jika digunakan.--temp_downloads_pathadalah tanda opsional untuk menetapkan jalur tempat Anda ingin mendownload file. Ganti TEMP_DOWNLOADS_DIR_PATH. Jika tanda ini tidak ditetapkan, file akan didownload ke foldertmp_downloadsdi direktori saat ini.--disable_deletesadalah tanda 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 asal build, lakukan hal berikut:
Mengambil provenance build.
Bergantung pada cara Anda mengakses metadata keamanan, asal build diakses secara berbeda.
- Jika Anda mengakses metadata keamanan menggunakan Cloud Storage, provenance build tersedia sebagai bagian dari
metadata
Build Informationdi kolombuildDetails.
Untuk mengetahui informasi selengkapnya, lihat cuplikan metadata contoh 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, asal build disimpan di bagian
BuildOccurrencemetadata 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 asal build.
Provenans 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 yang disebut
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 di file lain yang disebut
signature.sig.Untuk mendekode tanda tangan, gunakan perintah berikut:
cat signature.txt | tr '\-_' '+/' | base64 -d > signature.sig
- Simpan data
Mengambil kunci publik provenance build.
Bagian EnvelopeSignature dalam provenans build berisi referensi ke kunci yang digunakan untuk menandatangani provenans 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 item 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.
Verifikasi tanda tangan asal.
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 pada langkah sebelumnya.
- signature.sig: File yang berisi tanda tangan yang diambil pada langkah sebelumnya.
Output berikut akan ditampilkan setelah perintah berhasil dijalankan:
Verified OKUntuk memverifikasi hash artefak yang terkait dengan asal-usul, 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 pada langkah sebelumnya.
- signature.sig: File yang berisi tanda tangan yang diambil pada langkah sebelumnya.
- ARTIFACT_PATH: Jalur ke artefak.
Output berikut akan ditampilkan setelah perintah berhasil dijalankan:
Verified OK