skip to content

On SLSA's build track, where does a shared-account, script-driven gem release sit, and what one change moves it up?

level: seniorimportance: must knowfreq 60%

answer

  1. Grade the roles, not the steps
  2. Shared account means one hand writes both
  3. Who authors the description of the build
  4. Cheapest rung that changes who can lie
  5. Attestation nobody verifies is documentation

basics

~20 s

Almost certainly Build L1 — provenance exists, but the release script that controls the build also writes it. The highest-leverage single change is having the build platform generate and sign provenance under an identity the job cannot use.

solid answer

~50 s

Place it by asking who does what, not by reading the pipeline top to bottom. Concretely: an internal gem consumed by a payroll batch service, built by an in-house orchestrator, released by a hand-maintained script under a shared build account. If that script emits provenance and ships it alongside the gem, it is Build L1; if nothing is emitted, L0. The binding problem is the shared account — the same set of people who can change what gets built can change the document that describes it, and for a payroll consumer that insider path is the whole risk. The single change is to move provenance generation and signing out of the release script and into the orchestrator, under an identity build steps cannot use. That is the L1-to-L2 step, and it needs no re-platforming. And it is worth nothing until the payroll team actually verifies what it receives.

go deeper

for a junior

Know what to look for first: does provenance exist at all, and does it reach whoever installs the artifact. Those two answers separate the bottom two rungs.

for a middle

Be able to walk a real release path and say which rung it sits on, naming the author of the provenance and the holder of the signing identity as the deciding facts.

for a senior

Show sequencing judgment: identify the shared-account insider path as the binding constraint, pick the single change that removes it, and insist the consumer verifies before you call the work done.

for a principal

Own the trade-off across an estate: which artifacts justify platform-level attestation work, who funds the orchestrator changes, and how you stop teams from advertising a level their emergency release path contradicts.

## Place the pipeline by asking about roles, not steps The useful skill on the build track is not reciting rungs; it is looking at a real release path and saying where it sits and what the cheapest honest move up is. Five questions do it: 1. **Where does the build execute** — on a build service, or on somebody's machine? 2. **Is the build defined**, or partly a human running commands? 3. **Is provenance produced at all**, and does it reach the consumer? 4. **Who authors the provenance** — the build's own steps, or the platform around them? 5. **Who signs it, and can a build step reach that identity?** Everything else — how rich the document is, which fields are populated, whether it is stored beautifully — moves you between good and bad implementations of the same rung, not between rungs. ## The worked case An internal Ruby gem is consumed by a payroll batch service. It is built by an in-house orchestrator. Releases are cut by a hand-maintained script that runs under a shared build account several engineers can use, and that script publishes to the internal repository. Running the five questions: - The build executes on a service, not a laptop. Good — that part is not the blocker. - The build is scripted, so it is defined. - If the script emits provenance and publishes it beside the gem, provenance exists and is distributed: **Build L1**. If it does not, the release is **L0**, and "it's internal" is not an exemption — the consumer is another team, and the asset at stake is payroll money. - The provenance is authored by the release script — that is, by the build itself. - Any signing key is one the script reads. So: L1, and the reason it is stuck there has nothing to do with the document. ## Why the shared account is the crux The threat here is not an anonymous internet attacker. It is somebody with legitimate access to the build account: an engineer on the team, or anyone who has taken over their session. That person can alter what the gem contains and, in the same breath, alter the provenance that says what it contains and where it came from. Non-repudiation collapses because both sides of the story are written by the same hand. In a payroll path, where a small change to a batch job moves money, that is the risk that matters — and it is exactly the risk L1 does not touch. Second-order problem: a shared account means the provenance cannot even record a meaningful actor. Every release looks the same in the audit trail. ## The one change **Move provenance generation and signing out of the release script and into the orchestrator, using a signing identity the job cannot use.** That is the L1-to-L2 move and it is a platform configuration change, not a re-platforming: the orchestrator already knows the build definition, the source revision, the parameters and the resulting digests — it is better placed to describe the build than the build is. What that changes on day one: the description of the build is now made by a different principal from the one that produced it, so an insider with the build account can still publish a bad gem but can no longer make the record agree with them. The lie becomes detectable. Note the shape of this: "hosted build platform" does not mean a vendor's build service. An orchestrator you operate yourself qualifies. The requirement is about the platform having its own identity and doing the attesting, not about who owns the hardware. ## What you deliberately do not do first - **Do not chase the top of the ladder.** The rung above L2 is about hardening the platform itself — run isolation, keeping signing material away from user-defined steps. That is a platform roadmap item owned by whoever runs the orchestrator, and it does not land this quarter. Sequencing matters: take the rung that changes who can lie, then the rung that reduces who can forge. - **Do not enrich the document.** Adding fields to a self-authored statement is motion, not progress. - **Do not tighten source review instead.** It is a worthwhile control and a completely different track; it does not move you on this one. ## Levels are per-artifact and per-build path One last trap when placing a pipeline: the level describes a specific artifact produced by a specific path, not an organisation. If the gem has a documented release job and an emergency hand-publish route, you have to grade the route that produced the artifact you are holding. Teams routinely report the level of the pipeline they wish were used. ## And the claim is worthless unverified Signing without verification changes nothing. If the payroll team installs the gem without checking the signature against the expected builder identity, and without checking the source repository named in the provenance, you have added a step to a release job and nothing else. The change lands when the consumer's install path rejects an artifact whose provenance does not verify — that is the point at which the rung starts paying.

  • The team wants to skip straight to the top of the build track. What do you tell them?
    That the top rung is a property of the build platform rather than of their release job, so it is a platform roadmap item with a different owner and timeline. The L1-to-L2 move is a configuration change that removes the insider forgery path immediately. Take the rung that makes the record independent first, then let the platform team harden underneath it.
  • The consumer is another internal team. Does a level claim mean anything inside one company?
    It means exactly as much as the consuming team's verification does. Internal boundaries are where the insider threat lives, and a payroll service installing an internal gem is a real trust decision. If their install path checks the signature and the recorded source repository, the claim has teeth; if it does not, you have produced documentation.
  • How do you handle the emergency hand-publish path the team keeps for outages?
    Grade it honestly: artifacts published that way are at whatever rung that path supports, usually L0 or L1, and the level you advertise cannot exceed the weakest path that can publish. Either bring the emergency route onto the platform or make it produce artifacts that are visibly distinguishable and short-lived, so a consumer can refuse them.

saying these in an interview costs you the question

  • Grades the intended pipeline rather than the path that shipped
  • Says internal artifacts do not need a level
  • Proposes richer provenance fields as the way up
  • Jumps to platform hardening before fixing the attestor
  • Assumes a self-operated build service cannot qualify

context