Image verification on in-store appliances with no cluster control plane — where does the check run?
answer
- no control plane, no admission seat
- runtime pull-time policy on the device
- enforcement the adversary can edit
- anchor the decision in a remote service
- refuse updates rather than startups
basics
~20 sThe 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.
solid answer
~50 sWith no orchestrator in the path, the only place a refusal can happen is the device's own runtime at image pull, so that is where the policy and the trust root live. Be precise about what that buys: it stops a mutated image from a compromised registry or an on-path network attacker, and it stops shipping an unsigned build to the fleet. It does not stop the person holding the appliance, because an enforcement point running on hardware the adversary controls is not a boundary against that adversary — they can edit the policy, replace the root, or bypass the runtime entirely. To get a claim back, anchor it outside their reach: a trust root protected by verified boot or hardware-backed storage, and a remote service that refuses credentials to a device that cannot attest its state. Also decide the offline failure mode — a terminal that will not start is an outage you caused.
go deeper
Know that when there is no orchestrator, the only place a check can refuse is the runtime on the device itself, and that it happens when the image is pulled.
Explain what a local check does and does not close: it stops registry-side and network tampering, but the party holding the device also controls the checker. Mention the offline constraint on verification material.
Show you would move the consequential decision to a remote service gated on device attestation, anchor the trust root in hardware-protected storage, and choose a failure mode that does not kill a store terminal.
Own the trade between long-lived offline material and slow revocation, and decide what the fleet is allowed to do while trust in a device is being withdrawn.
## When there is no seat, you do not get to choose one The usual discussion assumes an orchestrator whose creation path you can hook. Retail appliances, kiosks, industrial gateways and similar fleets frequently have no control plane in the path at all: an update mechanism pushes images, a local runtime pulls and starts them, and the device may be offline for hours or days. That removes two of the three seats. A pipeline gate still exists upstream and still catches mistakes, but it is far from execution and covers only what your pipeline shipped. The only enforcement point between a bad image and a running process is the **runtime's own pull-time policy on the device**. ## What that seat genuinely gives you It is worth having, and it is worth being exact about the threat it closes: - **A tampered or substituted image** served by a compromised registry, a mirror, or an on-path attacker on the store network is refused, because the content will not match a signature made by an accepted identity. - **Operational mistakes** — an unsigned build, an image from an unexpected source, a stale artifact promoted by accident — are refused close to the point of harm. - It works **offline**, which matters here, provided the material it needs is local. ## What it cannot give you, and why An enforcement point is only a boundary against parties who cannot modify it. On a device somebody can open, that condition fails for the person holding it: they can edit the policy file, install their own trust root, downgrade the runtime configuration, or bypass the runtime and start a process directly. Nothing cryptographic repairs this, because the cryptography is being evaluated by software the adversary controls. This is the single most important thing to say in an interview about edge enforcement, and the most common thing to get wrong. Local verification protects the device's owner from a **remote** attacker. It does not protect the owner from the **holder** of the device. ## Where the real boundary goes instead Since a local check cannot constrain a local adversary, move the consequential decision to something the adversary does not control — a service: - **Attestation-gated credentials.** The device proves its state (measured boot, expected runtime configuration, expected image identity) to a remote service, and the service issues short-lived credentials or unlocks a sensitive scope only if that proof holds. Now the refusal happens somewhere the holder cannot edit, and the local check becomes an input to it rather than the boundary itself. - **Anchoring the root in hardware.** A trust root in hardware-backed or verified-boot-protected storage raises the effort of tampering from editing a file to defeating the platform's boot chain. It does not make the device tamper-proof; it makes tampering expensive and, ideally, detectable. - **Blast-radius reduction.** Device-scoped credentials, no shared keys across the fleet, no ability for one appliance to affect another, and sensitive functions kept behind the service rather than on the box. A compromised appliance should cost you that appliance. - **Detection.** Fleet inventory of what image digest each device is actually running, reported centrally, so a device that quietly stopped matching the fleet is visible. This is detective, not preventive, and here it does much of the useful work. ## The failure mode you own On this fleet, refusal has a business cost that outweighs the theoretical one. A payment terminal that will not start because a check could not be satisfied is an outage in a store with customers in it, caused by you rather than by an attacker. Two design choices follow: - **Refuse updates, not startups.** Enforce hard on *installing* a new image, where a refusal means the device keeps running the last good version. Be far more conservative about a check that blocks starting software that is already installed and previously verified. - **Plan for long-lived material.** Devices that are offline for days cannot fetch fresh revocation or identity data, so the material must be long-lived — and long-lived material is exactly what makes revocation slow. That tension is real and does not have a clean answer: you buy back some of it with an update channel that can be reached reliably and with attestation-gated access on the service side, so that a device you can no longer trust loses its ability to do anything valuable even if it keeps running. ## What a good answer sounds like Name the seat (runtime, at pull), name the threat it closes (remote and registry-side tampering), name the one it does not (the holder), then move the consequential boundary to a service via attestation, and finish with the availability decision about what the device does when verification cannot be satisfied. That sequence shows you understand that a choke point is only as strong as the party who controls it.
- How do you get any enforceable claim about a device you cannot physically control?Move the decision to something the holder does not control. The device proves its state to a remote service — boot measurements, running image identity, expected configuration — and the service grants short-lived credentials or a sensitive scope only if the proof holds. Local verification becomes an input to that proof rather than the boundary itself, so a tampered device keeps running but stops being able to do anything that matters.
- Why is revocation especially awkward on devices that are offline for days?Verification material has to be long-lived enough to work without a network, and long-lived material is precisely what makes withdrawing trust slow. You cannot rely on a device fetching a fresh revocation or identity list before it acts. The practical compromise is short-lived credentials issued by a service the device must reach for anything consequential, so that the slow-to-revoke local material only ever gates the low-value case.
- Should the device refuse to start an already-installed image whose signature no longer validates?Usually no, and this is a business decision rather than a security one. Refusing an update is cheap: the device keeps running the last known-good version. Refusing to start what is already installed turns an expired root or a missing file into a dead terminal in a store full of customers. Enforce hard at install, alarm loudly at start, and make the fleet inventory the mechanism that gets a bad version off the estate.
A lock fitted on the inside of a door, with the key hanging beside it, keeps strangers out and the room's occupant in no way constrained.
saying these in an interview costs you the question
- Claims local signature checks stop a physical attacker
- Assumes an admission-style hook exists on every platform
- Ignores that the device holder can replace the trust root
- Forgets offline devices cannot fetch revocation data
- Blocks startup on verification failure in a payment path