Workloads can call the tagging API to label themselves and policy trusts it — how do you fix issuance, and what does running it cost?
answer
- two label spaces, two lists of writers
- the workload must not promote itself
- the label needs provenance, not just existence
- compare the claim against the deploy record
- the work moved, it did not disappear
basics
~20 sMove the write off the workload: policy-relevant labels are set by the deployment path from a reviewed declaration, never by the workload's own credential. Then reconcile against drift and staff it - issuance is now a service with an owner.
solid answer
~50 sSplit the label space first: a small set of policy-relevant labels, separate from free-form descriptive tags anyone may set. Then make the writer the deployment path, not the workload — a compromised instance must not be able to promote itself out of its segment, and denying self-assignment removes the cheapest attack. Scope write permission per label so a team can set its own tier but not `env=prod`. Log every write with the principal, and alert on writes that did not come from the pipeline. Finally, reconcile: compare the labels workloads claim against what the deployment record says was launched, because drift accumulates through manual fixes and incidents. The cost is real — an issuance service with an owner and on-call, a review path for label changes that is as slow as a firewall ticket, an exception queue, and a reconciliation job whose false positives someone has to work.
go deeper
Know that a label only means something if something controls who may write it, and that letting a workload label itself hands an attacker the label's access as soon as they own the workload.
Explain the write path: policy-relevant labels set by the deployment pipeline from a reviewed declaration, per-label write scoping, and an audit record naming the principal behind every write.
Show the operational picture — reconciliation against the deployment record, alerting on writes outside the pipeline, and an honest account of what reconciliation does and does not prove.
Be able to name the running cost: an owner, on-call, a review path with latency teams will resent, and an exception queue with expiry — and to defend the trade against the address-rule decay it replaced.
## What is actually broken Attribute-keyed segmentation makes a label a grant. If any workload can write its own policy-relevant labels, then compromising any workload is equivalent to being granted whatever the most privileged label reaches. The control did not fail; it was told a lie by a party permitted to speak. This is a design defect in issuance, and no amount of network-side enforcement fixes it, because the enforcement is doing exactly what it was told. The fix has four parts, and an interviewer wants all four plus the bill. ## 1. Split the label namespace Tags began as descriptive metadata — owner, cost centre, application name — and permission to write them was scoped accordingly: broadly, casually, to nearly everyone. The moment policy keys on an attribute, that attribute stops being metadata. So carve out a **restricted set of policy-relevant labels** (`tier`, `env`, `data-class`, whatever your rules name) and treat the rest as free-form. Two label spaces, two very different lists of writers. Without this split every hardening step you take collides with the legitimate, high-volume, low-risk tagging that teams do all day. ## 2. Deny self-assignment The workload's own runtime credential must not be able to write its own policy-relevant labels. This is the single highest-value rule, because it converts "compromise one workload" back into "compromise the deployment path", which is a much harder and much better-watched target. It also removes an entire class of accident: a script that re-tags its own host on startup and quietly grants itself database reach. ## 3. Make the deployment path the writer, from a declaration Labels are set at creation, by the pipeline, from a declaration that a human reviewed — the same review that gates the code. Two properties follow. First, the label has *provenance*: there is a record of who asked for it and who approved it, not merely a record that it exists. Second, the label change becomes visible in the same place as every other change to that service, so a request to move a workload into a more privileged tier gets read by the same reviewer who reads its dependencies. Scope write permission per label value where you can: a team may set its own service tier, but not `env=prod`, and not the label that grants ledger-database reach. ## 4. Reconcile, because drift is normal The gap between what a label claims and what the workload is does not stay closed. It opens through emergency changes made by hand during an incident, through workloads rebuilt outside the pipeline, through labels that were true when written and became false when the service changed shape. So run a reconciliation: for every workload, compare its current policy-relevant labels against what the deployment record says was launched, and report the differences. Treat unexplained differences as findings, not noise. Be honest in interview about what reconciliation proves. It proves the label matches the *deployment record*. It does not prove the workload is running what it should — that is a different problem with different machinery and it does not belong to the issuance path. ## What it costs, which is the half candidates skip The question asks what you now operate, and the answer is a service: - **An owner and on-call.** If the issuance path is down, nothing deploys with correct labels, and the workaround under pressure is a manual write — the exact thing you just forbade. So the failure mode of issuance must be designed, and someone must carry the pager. - **A review path with real latency.** Label changes now move at the speed of change review. Teams will discover that a five-second tag edit became a two-day ticket, and they will be unhappy, and some of them are right. - **An exception queue.** There are always legitimate cases — a migration, a test fleet, a vendor appliance nobody can put through the pipeline. Exceptions need an expiry date and a review, or they become the policy. - **Reconciliation toil.** The job will produce differences that are benign, and someone must work the list. A reconciliation nobody reads is worse than none, because it is cited as evidence. - **A permission review nobody scheduled.** The list of principals that may write policy-relevant labels has to be re-examined on a cadence, exactly like a firewall rule base. ## The framing that lands The honest sentence is: attribute-keyed segmentation does not remove work, it relocates it. You stopped maintaining address rules that decayed under churn, and you started running an issuance control with an owner, a queue and a review burden. That trade is usually right in an estate where addresses last hours — but a candidate who presents label-keying as pure simplification has not operated one.
- Why is denying self-assignment worth more than any other single control here?Because it changes what one compromised workload is worth. With self-assignment, owning any instance means owning the most privileged label it can write; without it, the attacker must reach the deployment path, which is a smaller, better-audited target with change review in front of it. It is one rule and it removes the cheapest version of the attack.
- What does reconciliation against the deployment record actually prove?Only that a workload's policy-relevant labels match what the deployment record says was launched. That catches hand-edits, out-of-band rebuilds and stale labels, which is most real drift. It proves nothing about what the workload is running now, and presenting it as evidence of workload integrity is overclaiming.
- Teams complain a tag edit now takes two days. What do you do?Separate the two label spaces properly so the complaint mostly disappears — descriptive tags stay instant, and only policy-relevant labels take the review. For the remainder, make the fast path a pipeline change rather than a ticket, and give exceptions an expiry. If everything still needs review, your policy-relevant set is too large and should be narrowed to the labels rules actually key on.
saying these in an interview costs you the question
- Leaves the workload's own credential able to write its labels
- Treats all tags as one namespace with one permission set
- Presents label-keying as pure simplification with no new operation
- Claims reconciliation proves what the workload is running
- Grants exceptions with no expiry, so they become the policy