Memverifikasi asal gambar

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

    1. Instal Google Cloud CLI. Setelah penginstalan, inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:

      gcloud init

      Jika 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:

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:

  1. Di konsol Google Cloud , buka halaman Cloud Build.

    Buka Cloud Build

  2. Klik Histori, lalu pilih Build ID untuk menjalankan pipeline gambar Anda. Halaman detail build menampilkan log untuk tiga langkah proses (imagebuilder-customize, imagebuilder-validate, dan imagebuilder-publish).

  3. Klik tab Build Artifacts untuk melihat image OS persis yang dibuat selama eksekusi.

  4. 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:

  1. Di konsol Google Cloud , buka halaman Artifact Registry.

    Buka Artifact Registry

  2. Di daftar repositori, klik nama repositori generik Anda.

  3. Di daftar paket, klik nama paket image OS Anda.

  4. Dalam daftar histori versi, klik ID versi (v${BUILD_ID}) untuk operasi pipeline Anda.

  5. 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:

  1. 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_ID
    

    Ganti 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.
  2. 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_ID
    

    Ganti BUILD_ID dengan ID versi yang ditampilkan pada langkah 1, misalnya, 12345.

    Dari output perintah, temukan entri lampiran yang kolom name-nya berisi build-result (dengan type: application/vnd.in-toto+json), lalu salin jalur yang tercantum di bagian files:, misalnya:

    projects/PROJECT_ID/locations/REPOSITORY_LOCATION/repositories/REPOSITORY_NAME/files/sha256:SHA256_HASH

  3. Download 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.json
    

    Ganti ATTACHMENT_FILE_ID dengan jalur lampiran files: yang diambil pada langkah sebelumnya.

  4. 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.