A build alert gives you a token id, an image digest and a source address — which pivot runs first?
answer
- What would change the next decision?
- Count the value before you search it
- Content address beats mutable pointer
- Predict the result, then run it
- One pivot at a time, chained
basics
~20 sThe one whose result would change your next decision, weighted by how selective it is. In a build-infrastructure intrusion that is normally the image digest, then the token id; a shared or NAT'd source address answers least and usually runs last.
solid answer
~50 sAs incident lead I rank pivots on two axes multiplied together: **decision value** — what would I do differently depending on the answer — and **selectivity** — how few and how specific the results will be. The image digest is a content address, so "where else did this exact artefact run" comes back small and directly bounds blast radius; that usually wins. The token id answers "what else did this credential do", which is nearly as good when tokens are per-job and weak when one token serves everything. A source address in a NAT'd, ephemeral estate answers least and rots fastest. Before running anything I estimate the value's cardinality over a short window — thousands of rows means it is a filter, not a pivot — and I state the expected result, so a null is informative. Then I run one pivot, not all three.
go deeper
Know that pivots are chosen, not exhausted, and that a value shared by everything in the estate cannot connect two specific events.
Be ready to compare candidate pivots by how many things carry the value and what question each one actually answers.
Show the working: decision value times selectivity, a cardinality check before the query, a predicted result, and one pivot at a time rather than a fan-out.
Own how the team decides under a clock: the standard for committing scarce analyst time, and how a well-reasoned pivot that dead-ends is reviewed on its reasoning rather than its outcome.
## The twenty-minute problem With a live intruder you do not get to run every pivot. You get one question at a time, and each answer arrives late enough that the choice matters. Interviewers ask this because the wrong instinct — "run them all, see what sticks" — is common and produces a pile of records nobody can reason about. ## Two axes, multiplied **Decision value.** Before choosing, name the decision you are trying to unblock. Usually it is one of: do we widen containment, do we stand this down, or do we escalate to a declaration. Then ask of each candidate pivot: *does the answer, in either direction, change that decision?* A pivot whose every possible result leaves you doing the same thing is not worth twenty minutes no matter how interesting it looks. **Selectivity.** How many things in the estate carry this value? - An **image digest** is a content address: a fixed digest names byte-identical content, so hits are exact and few. "Which other clusters, namespaces or nodes pulled this digest" bounds where the artefact reached. - A **token or session id** is selective when credentials are minted per job, and nearly worthless when one long-lived token serves the whole estate — check which world you are in before betting the clock on it. - A **source address** is the weakest in this environment: ephemeral pod addresses are reassigned, and egress passes through a shared NAT so the address describes the estate, not the actor. Multiply the two. A highly selective pivot whose answer changes nothing loses to a moderately selective one that decides containment. ## Estimate cardinality before you commit Cheap discipline: count the value's frequency over a short window before you pull the full result. If `runner-egress-nat` appears forty thousand times an hour, you have learned in ten seconds that it is a **filter** — something you add to narrow another query — and not a **link**. This one habit prevents most twenty-minute losses. ## Predict the result first Write down what you expect: "I expect this digest to appear only in the `ci` namespace on the two runner nodes; anything outside that widens the incident." Two benefits. A null result becomes evidence — you ruled something out — instead of feeling like wasted time. And you cannot quietly retro-fit the finding to the story you already believed, which is the failure mode where the analyst finds exactly what they went looking for. ## Sequence, do not fan out Run one pivot, read it, choose again. Fanning out three searches at once is tempting because it feels parallel, but the results arrive together and you have no chain of reasoning connecting them — and in a live incident the second pivot should usually be chosen *because* of what the first returned. The exception is a slow query you can start in the background while you run a fast one, which is a scheduling decision, not a strategy. ## Defending a choice that turned out wrong Sometimes the pivot dead-ends and forty minutes are gone. The defence is not that it worked; it is that the reasoning was sound on the information available: - the decision it would have unblocked, and how each possible result mapped to an action; - the expected result you stated in advance; - the cardinality estimate showing it was a link, not a filter; - what the null result *did* rule out. What is not defensible is picking the pivot because it was the easiest query to type, because the tool had a button for it, or because it was the field the alert happened to put first. Those are the answers interviewers listen for. ## The pivot everyone under-values Your own case history. Pivoting an entity through closed alerts and past cases costs seconds and occasionally returns the single most valuable result available — an event a week old that another analyst closed, which the new entity now connects. Cheap, fast, and it changes the decision when it hits, which is exactly the profile the two axes reward.
- Your chosen pivot dead-ended and forty minutes are gone. How do you defend it?On the information available, not the outcome: name the decision it would have unblocked, the expected result you stated in advance, and the cardinality check that showed it was a link rather than a filter. Then say what the null actually ruled out. A pivot chosen because it was the easiest query to run has no defence.
- Why prefer a container image digest over the image tag as a pivot?A digest is a content address computed over the manifest, so identical digests mean identical content and the match is exact. A tag is a mutable pointer that can be repointed at will, so pivoting on it silently merges different artefacts across time and can be moved by whoever compromised the pipeline.
- A pivot on the shared egress address returns 40,000 events. What do you do with it?Demote it from link to filter. Combine it with a selective predicate — a rare destination, an unusual user agent, a specific hour — so it narrows another search rather than defining one. On its own it describes the estate's normal egress and cannot connect two events to a single actor.
Twenty minutes buys one question. Ask the one whose answer sends you left or right, not the one that is merely interesting.
saying these in an interview costs you the question
- Fires every available pivot at once
- Chooses the pivot that is easiest to query
- Pivots on a mutable tag instead of a digest
- Never states what result would change the verdict
- Treats a null result as no information at all