← Workflows

阅读中文版本

Analytics Data Anonymization Workflow

Strip and generalize identifiers before analytics ingestion, validate anonymity with re-identification tests, and document the transformation lineage.

advanced~40 mindata-pipelineprivacycompliance

Objective

Produce analytics datasets that cannot be traced back to individuals, verified by adversarial re-identification attempts rather than by good intentions.

Environment

  • Raw production data requiring analytics use
  • A transformation stage before the analytics store
  • A re-identification test methodology (k-anonymity or attack simulation)

Steps

1. Classify fields by identifiability

Label every field direct identifier, quasi-identifier, or sensitive attribute, since each class needs different treatment.

Expected state: A classification table covers every field entering analytics.

2. Transform by class

Drop or token-map direct identifiers, generalize quasi-identifiers (age bands, region coarsening), and bound sensitive attributes by aggregation where possible.

Expected state: The analytics store contains no direct identifiers and coarsened quasi-identifiers.

3. Run re-identification attacks on the output

Attempt known attacks: uniqueness of quasi-identifier combinations, linkage against public datasets, and sequence uniqueness in event streams.

Expected state: An attack report shows the minimum combination size needed for uniqueness, above the accepted threshold.

4. Validate on every schema change

Re-run the anonymity tests whenever fields are added or generalization changes, treating them as data-quality gates.

Expected state: Anonymity tests are part of the pipeline CI, failing on regression.

5. Document lineage and deletions

Record what transformation each field underwent and honor deletion requests by token mapping that allows key deletion without reidentification.

Expected state: The lineage doc answers any auditor question about how raw became anonymous.

Expected outcome

Analytics datasets with provable resistance to re-identification, tested continuously, with lineage that satisfies audits and deletion obligations.

Verification

The attack report shows uniqueness thresholds above policy; injecting a high-granularity field into the pipeline fails the anonymity gate in CI.

Anonymous means tested, not intended

Removing names is not anonymization: age plus postcode plus diagnosis uniquely identifies people in famous real cases. Classifying fields, generalizing quasi-identifiers, and running actual re-identification attacks is what earns the word anonymous.

field classification -> transform:
  user_email      direct    -> drop (token retained, keyed)
  user_id         direct    -> salted token (deletable)
  age             quasi     -> 5-year bands
  postal_code     quasi     -> first 2 chars
  diagnosis       sensitive -> keep (analysis needs it)
  event sequence  quasi     -> session-truncated, coarsened ts

attack report (quarterly):
  unique combos: min 3 quasi-ids needed (k=27)
  linkage vs public voter file: 0 matches at current grain
  sequence uniqueness: 0.3% rows unique -> coarsen ts +1

Quasi-identifiers are the leak

The dangerous fields are not names but the innocent-looking ones: birthdate, region, device model. Individually harmless, combined unique. Generalization has to target the combinations, which is what the uniqueness test measures directly.

Deletion needs the token bridge

Right-to-be-forgotten conflicts with truly anonymous data only if the mapping is destroyed. Keeping a keyed, access-controlled token map lets deletion requests remove a person’s rows from analytics without anyone being able to reverse the token.