The standard identifiers a DLP policy engine matches against — PII, payment card BIN ranges, and the secret-token formats gitleaks, trufflehog, and every major vendor scan for.
MM/DD/YYYY only — DOB alone usually needs a nearby keyword ("DOB," "born") to be a useful signal.
$ dlp --pci
Payment Card (by BIN range)
Network
Pattern
Note
Visa
4[0-9]{12}(?:[0-9]{3})?
13 or 16 digits, starts with 4.
Mastercard
5[1-5][0-9]{14}
Older 51–55 range; the newer 2221–2720 range needs a second pattern.
Amex
3[47][0-9]{13}
15 digits, starts 34 or 37.
Discover
6(?:011|5[0-9]{2})[0-9]{12}
16 digits, starts 6011 or 65xx.
Format match ≠ valid card
All four only confirm the number is shaped like that network's cards.
A real DLP engine runs a Luhn checksum as a second pass to cut false
positives from any 16-digit number that happens to start with a 4.
$ dlp --secrets
Credentials & Tokens / same signatures gitleaks / trufflehog scan for
What
Pattern
Note
AWS Access Key ID
AKIA[0-9A-Z]{16}
Fixed prefix, easy true-positive win in any policy.
GitHub PAT (classic)
ghp_[A-Za-z0-9]{36}
Fine-grained tokens use a different prefix (github_pat_) — add both.
Slack token
xox[baprs]-[0-9A-Za-z-]+
The letter after xox identifies token type (bot, app, etc.).
Generic high-entropy string
(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).{32,}
Catches unlabeled secrets no vendor prefix will match — highest false-positive rate of anything here, use as a lower-confidence signal only.
$ dlp --tuning
Tuning Notes for Policy Review
Prefix-anchored patterns (AWS, GitHub, Slack) are cheap, high-confidence,
and should run first. Shape-only patterns (SSN, card numbers) need a second
validation pass (checksum, or a nearby keyword) before alerting — running
them unvalidated is the single fastest way to train a customer to ignore
DLP alerts entirely. The high-entropy fallback belongs in a lower-priority
queue, not the same alert tier as a matched AWS key.