The professional minimum
Every production data engineer eventually deals with PII (personally identifiable information). The minimum bar is: know what's PII in your tables, control who can read it, log who reads it, and handle deletion requests when they come. The exact regulations differ by region (GDPR in the EU, CCPA in California, K-Personal Information Protection Act in Korea), but the underlying engineering shape is similar.
The four engineering controls
- Tagging. Every column is tagged as PII / sensitive / public in a metadata catalog or in dbt's
schema.yml. - Masking. Non-privileged users see hashed or redacted values; privileged users see the real values, and access is logged.
- Row-level security. The same table can be filtered differently for different roles (each region's analyst sees only their region).
- Right-to-be-forgotten propagation. When a user requests deletion, the deletion has to flow through every derived table. If you don't know where their data is, you can't honestly say it's deleted.
What every analyst should not be able to do
Bulk-export a table containing PII to a personal laptop. Production warehouses (Snowflake, BigQuery, Postgres with row-level security) all support policies that prevent this. The default for a new analyst account should be: read-only on aggregated marts, no PII, no export-to-CSV without an explicit approval workflow. Tightening permissions later is a thousand times harder than tightening them by default.