Classification is only useful when each class implies concrete engineering
obligations rather than a label on a document.
class examples storage access
------------- -------------------------- ----------------- -------------------------
Public marketing site, docs, any unrestricted
published API reference
Internal runbooks, architecture, internal systems all employees
non-personal metrics only
Confidential customer PII, contracts, encrypted, in role-based, least
source code, salaries approved regions privilege, access logged
Restricted card data, health records, encrypted with named individuals only,
credentials, KYC evidence per-tenant keys, justification required,
WORM where approval per access,
mandated full audit trail
class transmission retention in a non-prod environment
------------- ------------------ ------------------ --------------------------
Public any indefinite yes
Internal TLS as useful yes
Confidential TLS, no third per schedule only if pseudonymised
party without DPA
Restricted TLS plus payload per schedule, never - synthetic data only
encryption enforced by job
The bottom-right cell is the one that changes daily engineering behaviour. Copying
production data into a test environment is the single most common way regulated
data escapes its controls, because the test environment has weaker access control,
no audit logging, wider network reach and a longer list of people with
credentials. Once classification exists, "restore production into staging to
reproduce the bug" is a policy violation with a named alternative rather than a
judgement call.
The second useful row is transmission for the restricted class. Payload
encryption on top of TLS matters because TLS terminates at your load balancer,
and everything downstream — the mesh, the queue, the log aggregator, the error
tracker — sees plaintext. Field-level encryption keeps the data opaque to systems
that never needed to read it, which shrinks the number of components in scope.
Third, the number of classes should be small. Four is common and workable;
teams that define seven find nobody can remember them, so everything defaults to
the middle class and the scheme stops distinguishing anything. Fewer classes with
genuinely different handling beats a fine-grained taxonomy nobody applies.
The engineering test of whether classification is real is mechanical enforcement.
If a restricted field can be logged, exported to a spreadsheet or copied to a
test database without anything stopping it, the table is aspirational — so the
useful work is tagging fields in code, blocking them at the log serialiser, and
failing a build when a new column has no classification.