skip to content

Refusing an Artifact

Verification counts only where something refuses to run: an admission check, a deploy gate, or a pull-time policy that fails closed. Most estates sign and never check, and interviewers know it.

on this pageshow

explore

questions

13

Your pipeline signs every container image but nothing verifies the signature — what does that buy you?

level: juniorimportance: must knowfreq 62%

answer

  1. evidence versus enforcement
  2. a claim nobody reads
  3. the refusal is the control
  4. something must fail closed
  5. gate, admission, or pull time

basics

~20 s

Almost nothing on its own. A signature is only a claim until something refuses an artifact whose signature is missing or wrong. The value appears at the enforcement point: a pipeline gate, admission, or pull-time policy.

solid answer

~40 s

By itself, very little. Signing produces a verifiable claim — this artifact, from this identity — bound to the image digest, but a claim nobody reads changes no behaviour: an attacker who swaps an image is stopped only by something that refuses the swap. The security event is the refusal, so the real question is where the refusal lives. There are three seats: a gate in the delivery pipeline before promotion, an admission check when a workload tries to start, and a policy in the container runtime at pull time. Each sees a different slice of what actually runs. Signing first is still correct — it is a cheap prerequisite — but treat the work as unfinished until at least one choke point fails closed on a bad or missing signature.

go deeper

for a junior

Be ready to say plainly that a signature is only a claim, and that some system has to check it and refuse before anything is protected. Know that the check can live in the pipeline, at admission, or at image pull.

for a middle

Explain the split between producing evidence and consuming it, and why the consuming side is the harder half — it sits in someone's path and can block real work. Be able to distinguish a detective report from an enforcing refusal.

for a senior

Expect to be asked which seat you would turn on first in a specific estate and what would break. Show that you would inventory what currently fails before making any check mandatory.

for a principal

Own the argument for why the evidence-producing half spreads easily and the enforcing half stalls, and how you fund and staff the second half rather than declaring victory on the first.

## What a signature is, and what it is not Signing an artifact produces a detached, cryptographically verifiable statement: *some identity vouches for the content with this digest*. It says **who vouches for it**. It does not say what is inside the artifact (that is an SBOM's job) and it does not say how the artifact was produced (that is provenance's job). And crucially, producing that statement changes nothing about what any machine will run. A signature is evidence, and evidence only matters when someone checks it. This is the single most common gap in real estates. A team turns on signing in the build pipeline, sees signatures appear next to every image in the registry, and reports the control as done. Nothing in the path from registry to running process ever looks at them. An attacker who pushes a mutated image under a tag your deployment references, or who convinces a deployment to point somewhere else, is not inconvenienced in the slightest — nothing on that path is reading the evidence. ## The control is the refusal So the useful mental model is: signing produces the evidence, and a separate thing — an **enforcement point**, or choke point — consumes it and refuses. The refusal is the control. Everything else is preparation. There are three places that refusal can live, and they are genuinely different controls: | Seat | When it runs | What it can refuse | |---|---|---| | Pipeline gate | Before an artifact is promoted or a deployment is applied | The promotion or the deploy action | | Admission | When a workload is created in the orchestrator | The workload object, before anything schedules | | Pull-time runtime policy | When the host fetches the image | The image pull on that host | A fourth thing that looks like enforcement but is not: a **report**. A dashboard listing which running images have no valid signature is a detective control — useful, but it does not stop anything. If your answer to *where is verification enforced* is a weekly report, verification is not enforced. ## Why signing first is still the right order None of this means signing is wasted. You cannot verify what was never signed, so signing is the strictly earlier step, and it is the cheap half: it happens once, in a build system you already own, and it does not sit in anybody's availability path. Enforcement is the expensive half, because a check that refuses things is a thing that can refuse the wrong thing at the wrong moment. That asymmetry is exactly why so many estates stop after the cheap half. Recognising that state — signatures everywhere, no verifier anywhere — and being able to say what it is worth is a normal interview screen in this area. ## Related failure modes worth knowing - **Verification exists but is advisory.** A check that logs a warning and lets the deploy through is the same as no check, with extra logs. - **Verification runs somewhere nothing bypasses is the whole point.** If the check lives in a pipeline anyone can edit or skip, the party being constrained controls the constraint. - **A tag is not content.** A signature covers a digest. If verification resolves a mutable tag and checks whatever it resolves to right now, you have verified something, but not necessarily the thing that will run later. - **Signing the wrong subject.** Signing a release archive while deploying an image built from it means the deployed thing carries no covered claim at all. ## What good looks like At minimum: builds sign, the registry stores the signatures, and at least one seat between the registry and a running process fails closed when the signature is missing, malformed, or made by an identity that is not on the accepted list. Which seat you choose is a real design decision with real coverage and availability trade-offs — but choosing none of them is not a design, it is an unfinished rollout.

  • Name the places that refusal could live, and say which one sees the most of what actually runs.
    Three: a gate in the delivery pipeline before promotion or deploy, an admission check when a workload is created in the orchestrator, and a pull-time policy in the container runtime on the host. Admission sees the most of what actually starts, because it evaluates everything that reaches the orchestrator regardless of which pipeline, chart, operator or human created it. The pipeline gate only ever sees artifacts that flowed through that pipeline.
  • A dashboard flags running workloads whose images have no valid signature. Is that enforcement?
    No, it is detection. It tells you the bad thing is already running, which is valuable for inventory and for finding the gaps in your enforcement coverage, but nothing was refused. Detection and enforcement answer different questions: detection tells you what got through, enforcement determines what gets through. If the dashboard is your only control, an attacker's image runs until a human reads a list.
  • If the check has to go in somewhere first, and signing is already done, what do you need before you can turn one on?
    An honest inventory of what is running and who signed it, and a decision about which identities are acceptable. Turning on refusal without knowing what currently fails means finding out in production. You also need the verification material — trust roots and any accepted-identity list — reachable and current at the seat you chose, because that becomes a live dependency the moment the check is mandatory.

A signed visitor badge printed at reception protects nothing if no door ever checks it. The badge is evidence; the locked door is the control.

saying these in an interview costs you the question

  • Claims signing alone makes the supply chain tamper-proof
  • Assumes registries verify signatures on push automatically
  • Cannot name a single place where a check could refuse
  • Treats a report of unsigned images as enforcement
  • Says a warning-only check counts as verification

context

open as a page

Why turn on image signature enforcement in audit mode before it starts blocking deploys?

level: juniorimportance: must knowfreq 66%

basics

~20 s

Audit mode records which images would have been rejected without rejecting anything. That record is the blast radius: it exposes unsigned images, registries nobody documented and workloads with no owner, before a blocking rule takes production down.

open as a page

What does an image-signature verifier such as cosign or Notation need before it can verify anything?

level: juniorimportance: must knowfreq 55%

basics

~20 s

A reference to the artifact, ideally its digest, plus a trust anchor: a public key, an accepted keyless identity and issuer, or an x.509 trust store. Without one, a verifier can only report that some signature exists.

open as a page

What does an image verification gate in CI never see that an admission-time check does?

level: middleimportance: must knowfreq 48%

basics

~20 s

Everything reaching the cluster without passing that pipeline: manifests applied from a laptop, images inside vendor charts, operator-installed sidecars and DaemonSets, and any team that forked the template. Admission sees what tries to start, whoever created it.

open as a page

Which can test an attestation's predicate body: policy-controller's ClusterImagePolicy, Kyverno verifyImages, or a Notation trust policy?

level: middleimportance: should knowfreq 40%

basics

~20 s

The first two. A ClusterImagePolicy attaches a CUE or Rego policy to a named predicate type, and Kyverno evaluates conditions over predicate fields. A Notation trust policy verifies signatures only and has no language for predicate contents.

open as a page

Your image verifier cannot reach its transparency log at 03:00 — how does that fail at each choke point?

level: seniorimportance: should knowfreq 41%

basics

~20 s

In a pipeline gate it fails a merge or promotion: delivery stops, nothing running is affected. At admission it fails every workload creation, so autoscaling, rescheduling and node replacement stop — the failure lands in your recovery path.

open as a page

Your image-signing path is down mid-incident and the fix cannot be signed — what break-glass do you want in place?

level: seniorimportance: should knowfreq 41%

basics

~10 s

A pre-authorised bypass scoped to one workload and digest, expiring by itself, emitting an attributable record that alerts in real time. Without one, the real break-glass is someone disabling enforcement cluster-wide at 02:00.

open as a page

How do you scope an enforcement exception for an unsigned vendor agent that must run cluster-wide?

level: seniorimportance: should knowfreq 46%

basics

~10 s

Narrow it along every axis available: that registry, that repository, ideally that digest, in the namespaces that actually run it — never a blanket allow-unsigned. Attach an owner, a review date, and compensating controls.

open as a page

Your admission check verified an image by tag; what makes the node pull exactly the bytes that were verified?

level: seniorimportance: should knowfreq 45%

basics

~20 s

Nothing, unless the verifier rewrites the reference to the digest it checked. A tag is a mutable pointer, so the registry can resolve it to different bytes between the admission check and the node's pull.

open as a page

Signature verification can be staffed at only one choke point across forty clusters — which do you pick?

level: principalimportance: should knowfreq 34%

basics

~20 s

Pick the seat closest to execution: admission. It is the only one that sees everything which actually tries to start, whoever created it. Accept that feedback moves to deploy time and that build context must travel in signed attestations.

open as a page

Signing-enforcement exceptions granted 'for two sprints' are still live three years on — how do you shrink the set?

level: principalimportance: should knowfreq 34%

basics

~20 s

Change the defaults instead of chasing rows: every new namespace enforces from birth so the set can only shrink, lapsing happens without a reminder, remaining entries are batched by root cause, and each has a named owner.

open as a page

Image verification on in-store appliances with no cluster control plane — where does the check run?

level: seniorimportance: nice to knowfreq 24%

basics

~20 s

The only seat left is a pull-time policy in the device's own container runtime. That stops a tampered registry or a network attacker, but not whoever holds the box — they control the enforcement point too.

open as a page

How do you verify images from one vendor signing with its own x.509 CA and another signing keylessly?

level: seniorimportance: nice to knowfreq 30%

basics

~10 s

Two trust models means two policy entries, scoped per repository. Notation matches an x.509 trust store and permitted certificate subjects; Sigstore-style verification matches an OIDC issuer and identity. Kyverno's verifyImages can express both styles.

open as a page