Membangun kepercayaan terhadap rantai pasok ML: SLSA levels untuk provenance, model signing dan verifikasi dengan cosign, SBOM untuk dependensi model, serta menjadikan supply-chain checks sebagai gate di CI/CD

Setelah episode 19 mengamankan secrets dan data, ada satu pertanyaan yang jarang ditanyakan tapi sangat menentukan: bagaimana kalian tahu bahwa model yang berjalan di produksi benar-benar model yang kalian build? Bukan versi yang di-modify, bukan image yang disusupi, bukan dependensi yang sudah dibajak.
Mengapa supply chain penting? Karena serangan rantai pasok — seperti insiden xz-utils dan SolarWinds — menunjukkan bahwa attacker tidak perlu menembus kalian; cukup menyusup di salah satu komponen yang kalian percaya: base image, library, atau model artifact. Untuk ML, rantainya lebih panjang: kode, dependensi Python, base image, dataset, dan model artifact itu sendiri. Episode ini membangun kepercayaan di seluruh rantai itu.
Rantai pasok ML tidak berhenti di binary. Satu model produksi bergantung pada:
Setiap tautan adalah permukaan serangan. Kepercayaan harus dibangun di seluruh tautan, bukan hanya di kode.
SLSA (Supply-chain Levels for Software Artifacts) memberi level kematangan 0-4:
| Level | Arti | Contoh praktik |
|---|---|---|
| 0 | Tanpa proteksi | Build manual, tanpa dokumentasi |
| 1 | Provenance ada | Build script menghasilkan bukti asal-usul |
| 2 | Provenance terverifikasi | Build di-hosting; bukti ditandatangani |
| 3 | Hardened build | Isolasi build, tidak ada akses manual |
| 4 | Full reproducibility | Build bisa diverifikasi dari source |
Untuk ML, target realistis tim baru adalah SLSA level 2: build di CI, provenance otomatis, dan ditandatangani.
Signing menjawab pertanyaan: "apakah artifact ini benar-benar dari tim kami, dan tidak berubah sejak ditandatangani?" Alat yang umum adalah cosign dari Sigstore.
cosign sign --key cosign.key \
registry.example/ml/churn-model@sha256:abc123
cosign verify --key cosign.pub \
registry.example/ml/churn-model@sha256:abc123Tanda tangan digital melekat pada hash artifact: siapa pun yang mengubah model, tanda tangan menjadi tidak valid. Signing berlaku untuk image container, model artifact di registry, dan bahkan dataset.
SBOM (Software Bill of Materials) adalah daftar inventaris semua komponen yang membentuk artifact. Untuk ML, SBOM mencakup: versi library, base image, tooling, dan — jika memungkinkan — dataset yang dipakai training.
syft registry.example/ml/train:2.4.0 \
-o cyclonedx-json > sbom.jsonSBOM yang baik memungkinkan tim menjawab cepat ketika CVE ditemukan: "apakah kita terkena?" — tanpa harus menelusuri dokumentasi yang tidak ada. Format standar: CycloneDX dan SPDX.
Provenance mencatat siapa membuat apa, dari apa. in-toto memperluas ini menjadi attestation yang bisa diverifikasi dalam pipeline: setiap langkah (build → test → sign → deploy) menyatakan dengan jelas masukan dan keluarannya.
attestation (in-toto):
predicate_type: SLSA-Provenance-v1
subject: registry.example/ml/churn-model@sha256:abc123
build_definition: github.com/ml-team/churn/.github/workflows/train.yml
builder: GitHub Actions
materials:
- src: git+https://github.com/ml-team/churn@8f3d2a1
- data: dvc://s3/mlops-bucket/datasets/v2026-08-01-abcAttestation menjadikan seluruh riwayat build bisa dipertanggungjawabkan — dan bisa diverifikasi otomatis sebelum deploy.
Kunci implementasi: verifikasi sebagai gate, bukan sebagai laporan. Di GitHub Actions, tambahkan job supply chain yang memblokir pipeline bila gagal:
jobs:
supply-chain:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Verify model signature
run: cosign verify --key cosign.pub model@sha256:abc123
- name: Generate SBOM
run: syft dir:./model -o cyclonedx-json > sbom.json
- name: Scan vulnerabilities
run: trivy fs --severity HIGH,CRITICAL .Alur lengkap yang disarankan:
Build → Sign artifact → Attest provenance → Verify di pipeline → Scan SBOM → DeploySetiap langkah "verify" yang gagal menghentikan pipeline sebelum model mencapai produksi.
Note
Model trust adalah sistem, bukan satu alat: signature tanpa provenance tidak lengkap, SBOM tanpa kebijakan verifikasi tidak berfungsi. Bangun rantai yang utuh — build, sign, attest, verify, deploy — dan jadikan verification sebagai gate pipeline (episode 8), bukan dokumen yang hanya disimpan.
Pada episode 20 ini, kalian telah membangun kepercayaan rantai pasok ML.
Inti yang harus dibawa pulang:
Di episode 21 selanjutnya kita akan membahas LLMOps & GenAI platforms — fine-tuning dengan LoRA, infrastruktur RAG, vector database, dan manajemen prompt untuk model bahasa besar. Sampai jumpa di episode 21!