De-identification validation
These checks sample masked or seed data files in your project and test whether individuals can still be re-identified from quasi-identifiers such as ZIP, birth date and gender.
vulkro-sf scan ./force-app
Files checked: CSVs under data/, testdata/, seeds/, sampledata/ (and their hyphenated forms), *.seed.json files and *.masked.* files. The data comes from your files; nothing is pulled from a live org.
Checks
| Rule ID | What it finds | Default threshold |
|---|---|---|
k-anonymity-violation | A combination of quasi-identifiers shared by fewer than k rows, so a record can be singled out. | k = 5 |
l-diversity-violation | A group sharing the same quasi-identifiers has fewer than l distinct sensitive values, so membership reveals the value. | l = 2 |
t-closeness-violation | A group's sensitive-value distribution differs from the overall distribution by more than t. | t = 0.40 |
l-diversity-violation and t-closeness-violation run only when the CSV has a sensitive-attribute column alongside the quasi-identifiers.
Each finding names the quasi-identifier set, the threshold, the measured value and the offending group. The l and t findings also name the sensitive attribute and its distribution.
Fixing
- k-anonymity: generalize quasi-identifiers (age ranges, 3-digit ZIP, coarser job titles) or drop rare records.
- l-diversity: regroup so each group spans at least l sensitive values, or drop groups that cannot.
- t-closeness: regroup or generalize so each group's distribution is close to the whole dataset's.
Re-run after any change to masking rules, schema or quasi-identifiers.
See also: NIST SP 800-188