Skip to content

Signing

Supply-chain signing for release artifacts and images. Two concerns kept separate on purpose: the operational switch (signing.enabled / signing.auto_provision — may StageFreight sign, and may it provision an identity) and the trust profiles (signing.profiles — an id→profile map defining what class of key each profile requires). A publish target references a profile via signing_profile: <id>.

signing

Operational signing configuration (distinct from signing.profiles). Governs whether StageFreight may sign, whether it may create/manage a Tier-0 software identity on your behalf, and where that identity persists. enabled and auto_provision are deliberately separate — "signing is encouraged" and "the system minted an identity for me" are not the same thing.

signing:
  enabled: false   # nil/true = signing allowed; false = all signing off
  auto_provision: false   # explicit consent to create/manage a Tier-0 identity
  state_dir:   # where persistent signing material lives
    type: <string>   # "volume" | "host_path"
    name: <string>   # volume name (type: volume)
    path: <string>   # absolute path (type: host_path)
  profiles:   # id→profile map
    <id>:   # entry key = the unique id
      requires: [<string>]   # trust class(es); v1 enforces exactly one · one of: hardware, key, kms, oidc · required
      key:   # Class reference blocks — at most one, matching the declared class.
        ref: <string>   # required
      oidc:
        issuer: <string>
        identity: <string>
      kms:
        ref: <string>   # required
      pkcs11:   # hardware transport selector (optional; absent = FIDO2 --sk)
        ref: <string>   # required
      physical_presence: <string>   # Assurance properties (hardware-class ONLY; enforced in validation). The value is the keyword…
      non_exportable: <string>
      transparency_log: false   # TransparencyLog overrides the per-class default (on for oidc, off otherwise).
      attestation: false   # Attestation also emits a provenance attestation alongside the signature.
      enforce: false   # Enforce makes a signing failure fatal to the phase (default: best-effort — warn + record a failed…
      allow_fallback: false   # AllowFallback permits an explicitly-configured signer that fails to resolve to fall back to the…

enabled: false disables ALL signing regardless of profiles/keys. auto_provision: true requires a state_dir — with no durable storage an ephemeral key would break trust continuity every run. With auto_provision: false (default), StageFreight never creates key material — it signs only with an explicit COSIGN_KEY/profile. Opinionated always-on belongs in a runner/distribution config, not core. The Tier-0 identity is created once and NEVER silently regenerated: drift, partial state, or an orphan key is fatal. The state_dir must live outside the repository (a key there could be committed, baked into an image, or published).