Dokumen ini menjelaskan cara mengakses metadata keamanan dari bucket Cloud Storage assuredoss-metadata. Untuk mengetahui deskripsi metadata keamanan, lihat Kolom metadata keamanan.
Dokumen ini hanya berlaku untuk tingkat premium Assured OSS. Untuk paket gratis, lihat Memverifikasi tanda tangan di paket gratis Assured OSS.
Sebelum memulai
- Mengintegrasikan Assured OSS dengan Security Command Center. 
- Validasi konektivitas ke Assured OSS untuk akun layanan yang diminta. 
Mengekstrak metadata
Anda dapat menggunakan perintah gcloud atau curl untuk mendownload metadata.
Buat URL untuk keduanya menggunakan informasi berikut:
- Bahasa: java,python,golang, ataujavascript. Nilai harus berupa huruf kecil.
- Package_ID: salah satu dari berikut ini: - Java: groupId:artifactId
- Python: packageName
- JavaScript: salah satu dari
@org-name/package-name,@username/package-name, ataupackage-name
- Go: packageName
 - Nilai harus huruf kecil. 
- Java: 
- Versi: versi paket. 
URL harus memiliki format berikut:
gcloud
gs://assuredoss-metadata/language/package_id/version/metadata.json
URL harus dalam huruf kecil.
Contoh URL mencakup:
- Contoh URL Python: - gs://assuredoss-metadata/python/blessed/1.20.0/metadata.json
- Contoh URL Java: - gs://assuredoss-metadata/java/org.apache.logging.log4j:log4j-core/2.17.1/metadata.json
- Contoh URL JavaScript: - gs://assuredoss-metadata/javascript/@stoplight/spectral-core/0.0.0/metadata.json
- Contoh URL Go: - gs://assuredoss-metadata/golang/github.com/rs/zerolog/1.9.1/metadata.json
curl
https://storage.googleapis.com/assuredoss-metadata/language/package_id/version/metadata.json
URL harus berupa huruf kecil.
Contoh URL mencakup:
- Contoh URL Python: - https://storage.googleapis.com/assuredoss-metadata/python/blessed/1.20.0/metadata.json
- Contoh URL Java: - https://storage.googleapis.com/assuredoss-metadata/java/org.apache.logging.log4j:log4j-core/2.17.1/metadata.json
- Contoh URL JavaScript: - https://storage.googleapis.com/assuredoss-metadata/javascript/@stoplight/spectral-core/0.0.0/metadata.json
- Contoh URL Go: - https://storage.googleapis.com/assuredoss-metadata/golang/github.com/rs/zerolog/1.9.1/metadata.json
- Download metadata:
gcloud
gcloud storage cp "gs://assuredoss-metadata/language/package_id/version/metadata.json" outputFolderLocation
curl
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -L https://storage.googleapis.com/assuredoss-metadata/language/package_id/version/metadata.json -o metadata.json
Sekarang Anda dapat memverifikasi tanda tangan. Ada dua opsi:
- Memverifikasi tanda tangan menggunakan alat aoss-verifier
- Memverifikasi tanda tangan paket yang didownload secara manual
Verifikasi tanda tangan paket yang didownload menggunakan alat aoss-verifier
Gunakan alat aoss-verifier untuk memverifikasi metadata paket.
Sebelum menggunakan alat ini, instal Go.
- Instal alat aoss-verifier. 
- Ekspor - $(go env GOPATH)/bin.
- Jalankan perintah - aoss-verifier verify-metadata.- aoss-verifier verify-metadata \ --metadata_type TYPE \ --language LANGUAGE \ --package_id PACKAGE_ID \ --version VERSION \ [--disable_certificate_verification] \ [--temp_downloads_path TEMP_DOWNLOADS_DIR_PATH] \ [--disable_deletes]- Ganti kode berikut: - TYPE: Nilai yang mungkin adalah- premiuminfo.
- LANGUAGE: Bahasa paket. Nilai harus dalam huruf kecil.
- PACKAGE_ID: Untuk Java, formatnya adalah- groupId:artifactId. Untuk Python dan Go, formatnya adalah- packageName. Nilai harus dalam huruf kecil.
- VERSION: Versi paket.
 - --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 tidak ditetapkan, file akan didownload ke folder- tmp_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 README.
Memverifikasi tanda tangan paket yang didownload secara manual
Anda hanya dapat memverifikasi tanda tangan artefak untuk biner yang dibuat secara aman oleh Assured OSS, bukan yang disediakan oleh Assured OSS melalui proxy.
Untuk memverifikasi tanda tangan secara manual, Anda dapat menggunakan berbagai alat. Langkah-langkah berikut menggunakan gcloud CLI, OpenSSL (versi 3.0.1 atau yang lebih tinggi), dan jq (1.7.1 atau yang lebih tinggi) untuk memverifikasi tanda tangan di Linux.
- Download file metadata. Seperti yang dijelaskan dalam Kolom metadata keamanan, file metadata berisi kolom - SBOMdi dalam kolom- buildInfo. SBOM berisi artefak (misalnya, file JAR atau EGG) yang dibuat bersama dengan anotasi yang merepresentasikan tanda tangan. Artefak ini memungkinkan Anda menentukan ID SPDX.- Misalnya, jika nama artefaknya adalah - artifact_name,- spdx_id-nya adalah- SPDXRef-Package-artifact_name. Untuk memvalidasi paket yang diberi nama- gradio-3.30.0-py3-none-any.whl,- spdx_idadalah- SPDXRef-Package-gradio-3.30.0-py3-none-any.whl.
- Ekstrak ringkasan SHA-256 dari file metadata: - cat METADATA_FILENAME | jq -rj '.buildInfo' | jq -rj '.sbom' | jq -rj '.packages' | jq '.[] | select(.SPDXID=="SPDX_ID")' | jq -rj '.annotations[0].comment' | jq -rj '.digest[0].digest' | cut -d ' ' -f1 > expectedDigest.txt - Ganti kode berikut: - METADATA_FILENAME: Nama file metadata keamanan Anda.
- SPDX_ID: ID SPDX.
 
- Hitung ringkasan artefak: - sha256sum ARTIFACT_FILE | cut -d ' ' -f1 > actualDigest.txt - Ganti - ARTIFACT_FILEdengan nama file artefak.
- Periksa apakah ada perbedaan antara keduanya: - diff actualDigest.txt expectedDigest.txt - Jika tidak ada perbedaan, tidak ada output. 
- Ekstrak ringkasan kolom ke file - .bin:- cat METADATA_FILENAME | jq -rj '.buildInfo' | jq -rj '.sbom' | jq -rj '.packages' | jq '.[] | select(.SPDXID=="SPDX_ID")' | jq -rj '.annotations[0].comment' | jq -rj '.digest[0].digest' | cut -d ':' -f2 | xxd -r -p > digest.bin 
- Ekstrak tanda tangan ringkasan ke file - .sig:- cat METADATA_FILENAME | jq -rj '.buildInfo' | jq -rj '.sbom' | jq -rj '.packages' | jq '.[] | select(.SPDXID=="SPDX_ID")' | jq -rj '.annotations[0].comment' | jq -rj '.signature[0].signature' | xxd -r -p > sig.sig 
- Ekstrak kunci publik dari sertifikat publik ke file - .pem:- cat METADATA_FILENAME | jq -rj '.buildInfo' | jq -rj '.sbom' | jq -rj '.packages' | jq '.[] | select(.SPDXID=="SPDX_ID")' | jq -rj '.annotations[0].comment' | jq -rj '.certInfo.cert' | openssl x509 -pubkey -noout > pubKey.pem 
- Verifikasi tanda tangan ringkasan menggunakan kunci publik yang diekstrak: - openssl pkeyutl -in digest.bin -inkey pubKey.pem -pubin -verify -sigfile sig.sig - Jika berhasil, perintah ini akan menampilkan - Signature Verified Successfully. Sekarang Anda dapat memverifikasi sertifikat.
- Ekstrak sertifikat publik ke file - .pem:- cat METADATA_FILENAME | jq -rj '.buildInfo' | jq -rj '.sbom' | jq -rj '.packages' | jq '.[] | select(.SPDXID=="SPDX_ID")' | jq -rj '.annotations[0].comment' | jq -rj '.certInfo.cert' > cert.pem 
- Download sertifikat root ( - ca.crtdalam perintah berikut):- curl -o ca.crt https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt 
- Verifikasi sertifikat menggunakan sertifikat yang diekstrak dan root certificate: - openssl verify -verbose -CAfile ca.crt cert.pem - Jika berhasil, perintah ini akan menampilkan - cert.pem: OK.
Memverifikasi tanda tangan untuk kolom metadata keamanan
Anda dapat memverifikasi tanda tangan kolom berikut dalam file metadata keamanan secara terpisah:
- buildInfo
- vexInfo
- healthInfo(jika ada)
Data di dalam kolom di-hash menggunakan SHA-256, lalu hash ditandatangani menggunakan algoritma ECDSAP256_DER. Sertifikat dan rantai sertifikat disediakan di dalam metadata sehingga Anda dapat memverifikasi tanda tangan. Gunakan sertifikat root berikut untuk memverifikasi rantai sertifikat:
https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt
Anda dapat memverifikasi tanda tangan secara manual atau menggunakan Alat Verifikasi OSS Terjamin.
Langkah-langkah berikut menjelaskan cara memverifikasi tanda tangan kolom buildInfo secara manual dalam file metadata.json. Anda dapat menggunakan langkah-langkah serupa untuk
memverifikasi tanda tangan kolom vexInfo atau kolom healthInfo.
Anda dapat memverifikasi tanda tangan menggunakan berbagai alat. Contoh berikut menggunakan gcloud CLI, OpenSSL (versi 3.0.1 atau yang lebih baru), dan jq (1.7.1 atau yang lebih baru) untuk memverifikasi tanda tangan pada sistem Linux.
- Buat ringkasan SHA-256 kolom: - cat metadata.json | jq -rj '.buildInfo' | sha256sum | cut -d ' ' -f1 > actualDigest.txt 
- Ekstrak ringkasan kolom yang disediakan dalam file - metadata.json:- cat metadata.json | jq -rj '.buildInfoSignature.digest[0].digest' | cut -d ':' -f2 > expectedDigest.txt 
- Periksa apakah ada perbedaan antara kedua ringkasan: - diff actualDigest.txt expectedDigest.txt - Jika tidak ada perbedaan, tidak akan ada output, yang merupakan kasus ideal. Sekarang Anda dapat memverifikasi tanda tangan. 
- Ekstrak ringkasan kolom ke file - .bin:- cat metadata.json | jq -rj '.buildInfoSignature.digest[0].digest' | cut -d ':' -f2 | xxd -r -p > digest.bin 
- Ekstrak tanda tangan ringkasan ke file - .sig:- cat metadata.json | jq -rj '.buildInfoSignature.signature[0].signature' | xxd -r -p > sig.sig 
- Ekstrak kunci publik dari sertifikat publik ke file - .pem:- cat metadata.json | jq -rj '.buildInfoSignature.certInfo.cert' | openssl x509 -pubkey -noout > pubKey.pem 
- Verifikasi tanda tangan ringkasan menggunakan kunci publik yang diekstrak: - openssl pkeyutl -in digest.bin -inkey pubKey.pem -pubin -verify -sigfile sig.sig - Jika verifikasi berhasil, perintah ini akan menampilkan - Signature Verified Successfully. Sekarang Anda dapat memverifikasi sertifikat.
- Ekstrak sertifikat publik ke file - .pem:- cat metadata.json | jq -rj '.buildInfoSignature.certInfo.cert' > cert.pem 
- Download sertifikat root, yang diberi nama - ca.crtdalam perintah berikut:- curl -o ca.crt https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt 
- Verifikasi sertifikat menggunakan sertifikat yang diekstrak dan root certificate: - openssl verify -verbose -CAfile ca.crt cert.pem - Jika berhasil, perintah akan menampilkan - cert.pem: OK.