Tags, classification and sensitivity labels
Why is label propagation the only scalable classification, and why must unlabelled data fail closed?
A sensitivity label marks a column, for example "contains personal data." The mechanism that matters is propagation: a label put on a source column flows along lineage to every column derived from it.
The reason is pure cost arithmetic:
- Manual labeling is O(columns), and columns grow without limit.
- Propagated labeling is O(sources), and sources grow slowly.
Propagation is the only model that scales, so every serious implementation uses it.
The uncomfortable conclusion
Propagated labels are read by access-control systems to enforce privacy rules, so the labels are load-bearing for privacy. But their accuracy is bounded by lineage completeness, and lineage is incomplete. So:
That gap is real and widely unacknowledged. The honest mitigation is defence in depth (several independent layers):
- propagation for coverage;
- independent content scanning to catch what propagation missed;
- default-deny on unclassified columns, so the absence of a label fails closed (access refused) rather than open (access allowed).
Three ways to classify
| Method | Cost | Weakness |
|---|---|---|
| Rule-based detection (patterns such as email shape) | cheap | many false positives on anything shaped like an identifier |
| Sampling-based statistical detection | costly | better recall (finds more), but probabilistic |
| Assertion (a person labels it) | human time | decays |
All three coexist for the same reason the two lineage methods do: they fail differently.
Label propagation is the only scalable classification, and it inherits lineage's incompleteness. So "unlabelled" must fail closed.