Anda dapat memverifikasi pengesahan provenance build SLSA (Supply-chain Levels for Software Artifacts) untuk image OS kustom guna memastikan integritas supply chain software.
Saat Anda mengonfigurasi pipeline Image Builder untuk menghasilkan output ke Artifact Registry dan mengaktifkan opsi verifikasi, Cloud Build akan otomatis membuat pengesahan kriptografi yang menjelaskan kode sumber pipeline, konfigurasi, parameter eksekusi, dan image dasar yang digunakan selama kompilasi. Memverifikasi provenance build ini mengonfirmasi bahwa pipeline tepercaya membangun image Anda dengan aman tanpa gangguan yang tidak sah.
Sebelum memulai
- Selesaikan langkah-langkah penyiapan lingkungan di Menyiapkan lingkungan Anda.
-
Siapkan autentikasi jika Anda belum melakukannya.
Autentikasi memverifikasi identitas Anda untuk mengakses layanan Google Cloud dan API. Untuk menjalankan
kode atau sampel dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke
Compute Engine dengan memilih salah satu opsi berikut:
Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:
Konsol
Saat menggunakan konsol Google Cloud untuk mengakses layanan Google Cloud dan API, Anda tidak perlu menyiapkan autentikasi.
gcloud
-
Instal Google Cloud CLI. Setelah penginstalan, inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:
gcloud initJika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
- Tetapkan region dan zona default.
REST
Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.
Instal Google Cloud CLI.
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
Untuk mengetahui informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Google Cloud .
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk melihat dan memverifikasi pengesahan provenance build, minta administrator Anda untuk memberi Anda peran IAM berikut di project Anda:
- Pembaca Artifact Registry (
roles/artifactregistry.reader) - Pelihat Cloud Build (
roles/cloudbuild.builds.viewer)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Mengonfigurasi pembuatan provenance
Untuk membuat provenans build, pastikan Anda mengonfigurasi blok substitutions,
options, results, dan artifacts dalam file
cloudbuild.yaml
seperti yang ditunjukkan dalam cuplikan berikut:
substitutions:
# 1. Specify your output path and target Artifact Registry resource URI
_IMAGE_OUTPUT_PATH: 'image-builder/binaryOut'
_ARTIFACT_REGISTRY_RESOURCE_URI: 'projects/PROJECT_ID/locations/REGION/repositories/REPOSITORY_NAME/packages/PACKAGE_NAME/versions/v${BUILD_ID}'
steps:
# 2. Configure step results and base image attestations
- name: 'REGION-docker.pkg.dev/image-builder-official/release/builder:stable'
script: |
#!/usr/bin/env bash
/build
id: 'imagebuilder-customize'
results:
- name: image_builder_telemetry_metrics
- name: base_image
attestationType: "https://cloudbuild.googleapis.com/attestations/build_content_restrictions"
attestationContent: base_image
options:
# 3. Enable Cloud Logging and cryptographic provenance generation
logging: CLOUD_LOGGING_ONLY
requestedVerifyOption: VERIFIED
artifacts:
# 4. Upload generic image artifacts and provenance to Artifact Registry
generic_artifacts:
- folder: '${_IMAGE_OUTPUT_PATH}'
registry_path: '${_ARTIFACT_REGISTRY_RESOURCE_URI}'
Memverifikasi data asal
Anda dapat melihat dan memverifikasi data provenance build dan artefak eksekusi menggunakan konsol Google Cloud atau Google Cloud CLI:
Konsol (Cloud Build)
Untuk melihat provenance build dan artefak output melalui histori build Cloud Build:
Di konsol Google Cloud , buka halaman Cloud Build.
Klik Histori, lalu pilih Build ID untuk menjalankan pipeline gambar Anda. Halaman detail build menampilkan log untuk tiga langkah proses (
imagebuilder-customize,imagebuilder-validate, danimagebuilder-publish).Klik tab Build Artifacts untuk melihat image OS persis yang dibuat selama eksekusi.
Klik tab Lampiran untuk melihat file pengesahan asal SLSA yang ditandatangani dan file hasil. File hasil mencatat image dasar sumber yang digunakan selama eksekusi.
Konsol (Artifact Registry)
Untuk melihat provenance build langsung di Artifact Registry:
Di konsol Google Cloud , buka halaman Artifact Registry.
Di daftar repositori, klik nama repositori generik Anda.
Di daftar paket, klik nama paket image OS Anda.
Dalam daftar histori versi, klik ID versi (
v${BUILD_ID}) untuk operasi pipeline Anda.Klik tab Lampiran untuk melihat file pengesahan asal SLSA yang ditandatangani dan file hasil untuk versi gambar tersebut. File hasil mencatat gambar sumber dasar yang digunakan selama eksekusi.
gcloud
Artifact Registry menyimpan catatan asal sebagai file lampiran bersama dengan tarball image generik.
Karena pengesahan diformat sebagai Amplop Penandatanganan yang Sangat Sederhana (DSSE), payload pernyataan asal sebenarnya di dalam JSON dienkode base64. Untuk membaca detailnya, lakukan langkah-langkah berikut menggunakan
gcloud CLI dan utilitas jq:
Buat daftar versi paket Anda untuk menemukan versi ID build tertentu yang ingin Anda verifikasi dengan menjalankan perintah
gcloud artifacts versions list:gcloud artifacts versions list \ --package=PACKAGE_NAME \ --repository=REPOSITORY_NAME \ --location=REPOSITORY_LOCATION \ --project=PROJECT_IDGanti kode berikut:
PACKAGE_NAME: nama paket di repositori Artifact Registry Anda, misalnya,my-custom-image.REPOSITORY_NAME: nama repositori Artifact Registry generik Anda, misalnya,custom-os-images.REPOSITORY_LOCATION: region repositori Anda, misalnya,us-central1.PROJECT_ID: project ID Anda.
Buat kueri metadata lampiran yang cocok dengan versi paket target dengan menjalankan perintah
gcloud artifacts attachments list:gcloud artifacts attachments list \ --target=projects/PROJECT_ID/locations/REPOSITORY_LOCATION/repositories/REPOSITORY_NAME/packages/PACKAGE_NAME/versions/vBUILD_ID \ --repository=REPOSITORY_NAME \ --location=REPOSITORY_LOCATION \ --project=PROJECT_IDGanti
BUILD_IDdengan ID versi yang ditampilkan pada langkah 1, misalnya,12345.Dari output perintah, temukan entri lampiran yang kolom
name-nya berisibuild-result(dengantype: application/vnd.in-toto+json), lalu salin jalur yang tercantum di bagianfiles:, misalnya:projects/PROJECT_ID/locations/REPOSITORY_LOCATION/repositories/REPOSITORY_NAME/files/sha256:SHA256_HASHDownload payload lampiran metadata JSON dari repositori Anda dengan menjalankan perintah
gcloud artifacts files download:gcloud artifacts files download ATTACHMENT_FILE_ID \ --repository=REPOSITORY_NAME \ --location=REPOSITORY_LOCATION \ --project=PROJECT_ID \ --destination=./provenance.jsonGanti
ATTACHMENT_FILE_IDdengan jalur lampiranfiles:yang diambil pada langkah sebelumnya.Jalankan perintah berikut untuk mengisolasi, mendekode base64, dan memformat konten payload JSON:
cat ./provenance.json | jq -r '.payload' | base64 --decode | jq
Output berisi parameter format SLSA standar yang menyoroti pemicu build, detail repositori resep, image container yang digunakan, hash build, dan atribut image dasar.