Software Supply Chain Integrity Playbook (SBOM + SLSA + Sigstore)

2026-03-01 · software

Software Supply Chain Integrity Playbook (SBOM + SLSA + Sigstore)

Date: 2026-03-01
Category: knowledge (software / security / delivery)

Why this matters

Most teams still answer "what shipped?" with best-effort logs and trust. That fails during incidents.

A practical supply-chain baseline should let you prove:

Goal: make production promotion a verification problem, not a trust ritual.


Threat model (realistic, not cinematic)

Defend first against common failures:

  1. wrong commit / wrong branch built,
  2. tampered artifact after build,
  3. dependency surprise (unknown vulnerable component),
  4. untrusted CI context (fork PR artifact treated as release),
  5. unverifiable manual hotfix binary.

Do not assume attestations alone mean "secure". They provide evidence; your policy decides acceptance.


Core primitives

1) SBOM (inventory)

Use SPDX or CycloneDX as machine-readable dependency inventory.

Minimum fields to enforce in policy:

Operational rule: SBOM must be generated from the actual build output context, not only from source manifests.

2) Provenance attestation (how it was built)

Capture at least:

This is the evidence plane for SLSA-style verification.

3) Signature + transparency

Sigstore keyless model (practical summary):

This removes long-lived key handling burden and gives a queryable audit trail.

4) Verification policy (the actual control)

No verification, no security benefit. Enforce policy gates before deploy:


SLSA mapping (what to target)

Pragmatic maturity ladder:

If using GitHub artifact attestations:


Implementation blueprint (90-minute MVP)

Phase 0 — Artifact identity first

Phase 1 — Emit evidence on every release candidate

Phase 2 — Verify before environment promotion

Phase 3 — Continuous trust operations


Example policy checks (high signal)

  1. Issuer check

    • attestation cert issuer is expected Sigstore/Fulcio trust root.
  2. Identity check

    • subject identity matches regex like:
    • repo:org/repo:ref:refs/heads/main
    • deny fork/untrusted refs for production.
  3. Workflow check

    • only approved reusable workflow path/version may produce prod artifacts.
  4. Digest binding check

    • artifact digest exactly matches attestation subject digest.
  5. Predicate completeness check

    • require both build provenance and SBOM predicate.
  6. Freshness check

    • attestation timestamp within policy window (e.g., 30 days for prod promotion).

SBOM format choice (quick rule)

Critical point: conversion between formats can lose semantics if fields don’t map 1:1. Verify downstream parsers against your required fields.


Common failure patterns

  1. "We sign everything" but never verify

    • Cosmetic security. Add mandatory verification gates.
  2. Attest only container image, not deploy manifest

    • Leaves room for manifest-level tampering.
  3. SBOM from lockfile only

    • Misses build-time/resolved/runtime differences.
  4. No identity pinning

    • Any validly signed artifact from same ecosystem may slip in.
  5. Break-glass with no expiry

    • Temporary bypass becomes permanent policy hole.

Operator runbook (minimal)

On verification failure:

  1. stop promotion,
  2. capture failing predicate + digest + identity claims,
  3. classify: identity mismatch / digest mismatch / missing predicate / expired evidence,
  4. open incident with artifact digest as primary key,
  5. only allow break-glass via time-boxed approval and postmortem.

SLO suggestion:


References


One-line takeaway

If deploy gates verify identity-bound provenance + digest + SBOM (not just signatures), supply-chain security shifts from "trust CI" to "prove every promotion."