By · Last updated 2026-05-29

Bumalik sa BlogTeknikal

GDPR Pipeline: Mag-Anonymize Bago Mag-Imbak

Ang mga tag ng column ng dbt ay hindi GDPR compliance. Ang raw na datos ng customer ay pumupunta sa iyong Snowflake warehouse nang hindi naka-mask bago mag-apply ang mga patakaran batay sa tag.

May 29, 20268 min basahin
data pipelinedbtSnowflakedata warehouseELT anonymizationGDPR engineering

GDPR-Safe Pipeline: Mag-Anonymize ng PII Bago Mag-Imbak

Ina-update para sa 2026

Ni-tag mo na ang iyong mga PII column sa dbt. Nag-set up ka ng dynamic masking sa Snowflake. Nararamdaman mo na sumunod ka sa GDPR.

Ang iyong source content ay dumadating pa rin sa warehouse nang hindi naka-mask. Ang masking ay tumatakbo sa oras ng query. Ang hindi naka-mask na content ay nasa iyong raw schema. Sinuman na may access sa raw schema ay maaaring basahin ito. Ang iyong mga modelo ng dbt ay tumakbo bago may mga masking policy. Ang mga lumang na-ingest na talahanayan ay hindi kailanman na-mask.

Ang agwat sa pagitan ng "mayroon kaming mga masking policy" at "ligtas ang aming pipeline" ay kung saan nangyayari ang mga paglabag sa GDPR.

Tingnan ang aming compliance overview para sa kung paano sinusuportahan ng anonym.legal ang GDPR.

Paano Inilalantad ng ELT Pipelines ang PII

Ang pattern na Extract-Load-Transform (ELT) ay ang pamantayan na ngayon. Ini-load nito ang source data sa warehouse una. Ang mga transform ay sumusunod mamaya. Ganito ang mga hakbang:

  1. Extract: Ang mga source system ay nag-e-export ng lahat ng field. Salesforce CRM, Stripe payments, Intercom support - lahat ay lumalabas.
  2. Load: Ang source data ay nananatili sa schema ng ingestion ng warehouse. Ang Snowflake, BigQuery, Redshift ay gumagana sa parehong paraan. Bawat field ng PII ay kasama.
  3. Transform: Ang mga modelo ng dbt ay naglilinis at nag-jojoin ng datos para sa analytics.

Ang layer ng ingestion ay nagtataglay ng buong personal na impormasyon. Mga pangalan, email address, numero ng telepono, mga detalye ng pagbabayad, teksto ng tiket ng suporta. Sa maraming team, ang mga inhinyero at analyst ay may access sa raw schema. Maaari silang mag-query ng mga talahanayang ito anumang oras.

Ang masking batay sa tag sa Snowflake ay nakakatulong sa oras ng query. Ngunit para lamang sa mga downstream na modelo na may wastong setup. Hindi nito nima-mask ang mga lumang na-ingest na talahanayan. Hindi nito hina-harang ang mga direktang query sa schema. Bawat modelo at dashboard ay kailangang ma-tag. Ang pasanin na iyon ay lumalaki habang lumalaki ang schema.

Mag-Anonymize Bago Mag-Load

Ang pag-anonymize ng PII sa antas ng pipeline ay nag-aalis ng panganib sa raw layer. Gawin ito bago pumunta ang content sa warehouse.

ETL approach (pre-load anonymization):

  1. I-extract mula sa mga source system
  2. Patakbuhin sa pamamagitan ng isang hakbang ng anonymization
  3. I-load ang malinis na output sa warehouse

Ang warehouse ay hindi kailanman tumatanggap ng hindi naka-mask na PII. Ang schema ng ingestion ay naglalaman lamang ng malinis na content. Ang mga downstream na modelo, dashboard, at direktang mga query ay gumagana sa malinis na output.

Mayroon kang dalawang pangunahing landas.

Opsyon 1 - Integrasyon ng API:

Para sa mga sistema na may mga webhook o streaming export, i-route ang mga entry sa pamamagitan ng anonym.legal API una. Ang mga tiket ng suporta na lumalabas mula sa Intercom ay dumadaan sa API bago ang warehouse. Ang mga Stripe export ay gawin din ang parehong bagay.

POST /api/anonymize
{
  "text": "Customer John Smith (john@example.com) reported...",
  "entities": ["PERSON", "EMAIL_ADDRESS", "PHONE_NUMBER"],
  "method": "replace"
}

Opsyon 2 - Batch preprocessing:

Para sa mga araw-araw o lingguhang CSV/JSON file export, patakbuhin ang mga file sa pamamagitan ng batch processing bago mag-loading.

Istruktura ng Airflow DAG:

extract_task >> anonymize_batch_task >> load_to_warehouse_task

Ang anonymize task ay nag-u-upload ng mga file at nakakakuha ng malinis na bersyon. Ang load task ay humahawak sa natitira.

Tingnan ang aming pahina ng security practices para sa mga detalye ng sub-processor at daloy ng datos.

Ano ang Ginagawa at Hindi Ginagawa ng mga Column Tag ng dbt

Hinihintulutan ka ng dbt na mag-tag ng mga PII column:

models:
  - name: stg_customers
    columns:
      - name: email
        tags: ['pii', 'email']
      - name: full_name
        tags: ['pii', 'personal_data']

Hinihintulutan ka ng mga tag na:

  • Idokumento kung saan nakatira ang PII
  • Mag-trigger ng mga downstream masking policy (nangangailangan ng setup sa antas ng warehouse)
  • Subaybayan ang lineage gamit ang mga tool tulad ng Secoda

Hindi ginagawa ng mga tag:

  • Mag-mask ng mga na-ingest na talahanayan sa raw schema
  • Harangin ang mga direktang query sa talahanayan
  • Mag-anonymize ng datos sa oras ng load
  • Retroaktibong mag-mask ng lumang datos

Ang mga column tag ng dbt ay isang tool ng governance. Ipinapakita nila sa iyo kung saan naroroon ang PII. Hindi nila inilalapat ang "naaangkop na mga teknikal na hakbain" na kinakailangan ng GDPR Article 32.

Ang Masking Gap ng Snowflake

Ang dynamic masking ng Snowflake ay nagtatago ng content ng column mula sa mga gumagamit sa oras ng query. Ito ay isang malakas na kontrol para sa paggamit sa produksyon. Ngunit mayroon itong malinaw na mga limitasyon.

Mga pangunahing limitasyon:

  • Bawat bagong column ay nangangailangan ng eksplisitong patakaran
  • Ang mga pagbabago sa schema ay maaaring mag-iwan ng mga bagong column na hindi naka-mask hanggang ma-update mo ang mga patakaran
  • Ang mga papel na SYSADMIN at ACCOUNTADMIN ay maaaring laktawan ang masking
  • Ang mga trabaho ng import ay madalas na tumatakbo na may mataas na mga pribilehiyo na lumalaktaw sa masking
  • Ang lumang datos na na-load bago itakda ang mga patakaran ay nakaimbak sa simpleng anyo - ang mga patakaran ay tumatakbo sa oras ng pagbasa, hindi oras ng pagsulat

Ang masking sa oras ng query ay hindi sapat. Ang datos ay dapat malinis bago ito maiimbak.

Dokumentasyon ng Compliance

Ang accountability rule ng GDPR ay nangangailangan ng katibayan. Ang mga salita ay hindi sapat. Para sa mga engineering team nangangahulugan ito ng mga nakasulat na rekord.

Mga Records of Processing Activities (ROPA): Idokumento na ang impormasyon ng customer ay ini-anonymize bago ito ma-load sa analytics warehouse. Ang hakbang ng anonymization ay isang aktibidad sa pagproseso sa ilalim ng GDPR.

Mga tala ng teknikal na safeguard: Isulat ang mga uri ng entity na tina-target ng iyong pipeline. Tandaan ang paraan ng anonymization na ginamit. Ang mga log ng batch run ay nagbibigay sa iyo ng ito nang libre.

Lineage ng datos: Ang Secoda o ang built-in na lineage ng dbt ay maaaring magpakita na ang mga source table ay dumadaan sa isang hakbang ng anonymization bago maabot ang mga modelo ng analytics. Ito ang iyong audit trail.

Register ng vendor: Ang serbisyo ng anonymization ay isang sub-processor. Ang kanilang DPA at patakaran sa privacy ay dapat nasa iyong register ng vendor.

Mga Hakbang sa Pagpapatupad

Para sa isang pipeline ng dbt at Snowflake:

Hakbang 1: I-audit ang iyong raw layer

Hanapin kung aling mga talahanayan ang nagtataglay ng personal na impormasyon. I-query ang iyong mga column tag ng dbt o ang iyong catalog para sa mga talahanayang may tag na PII.

Hakbang 2: Itakda ang scope ng anonymization

Para sa bawat source table, magdesisyon kung aling mga column ang nagtataglay ng PII. Pagkatapos magdesisyon kung alin ang kailangan ng anonymization at kung alin ang kailangan ng pseudonymization. Katawan ng tiket ng suporta: i-anonymize. Order ID: i-pseudonymize upang mapanatiling buo ang mga join key. Timestamp: panatilihin tulad ng dati para sa time-series analysis.

Hakbang 3: Pumili ng landas ng pagpapatupad

Maliit na team na may mga batch export: gamitin ang batch file processing bago mag-load. Engineering team na available: bumuo ng integrasyon ng API sa Airflow o Prefect.

Hakbang 4: Subukan at i-validate

Patakbuhin ang anonymization sa isang sample bago maging live. Suriin na ang mga modelo ng dbt ay gumagana pa rin. Ilang modelo ay nag-jojoin sa email. Ang mga iyon ay nangangailangan ng mga konsistenteng halaga ng pagpapalit. Pinapanatili ng pseudonymization ang mga join key. Sinisisira sila ng redaction.

Hakbang 5: Hawakan ang mga lumang raw na talahanayan

Ang content na na-load bago mailagay ang anonymization ay kailangan ng retroactive na pagproseso. I-export, i-anonymize, i-reload. Ito ay isang beses na gawain sa bawat talahanayan.

Konklusyon

Ang masking batay sa tag ay nagpapakita sa iyo kung saan naroroon ang PII. Hindi nito pinipigilan ang mga gumagamit na may access sa schema mula sa pagbabasa nito. Para sa tunay na GDPR compliance, ang PII ay dapat malinis bago maabot ang warehouse. Ginagawa nitong kasing ligtas ang layer ng ingestion tulad ng layer ng produksyon.

Ito ay mas mahirap kaysa sa column tagging. Ngunit iyon ang tunay na ibig sabihin ng "naaangkop na mga teknikal na hakbain".

Mga Sanggunian

Handa nang protektahan ang iyong data?

Simulan ang anonymization ng PII gamit ang 285+ uri ng entidad sa 48 wika.

About this page

We update this page when our platform or the law changes.

Read our founder note for how we work.

Each change shows up in the timestamp at the top.

Related reading

We follow these rules

  • GDPR (EU 2016/679).
  • ISO/IEC 27001:2022.
  • NIS2 (EU 2022/2555).
  • HIPAA safe harbor under 45 CFR § 164.514(b)(2).

Our promise

We do not sell your data.

We do not train models on your text.

We store your files in Germany.

You can delete your account at any time.

You own your work.

Where we run

Our servers live in Falkenstein, Germany.

We use Hetzner. They hold ISO 27001 certification.

All data stays in the EU.

Backups run every day.

Need help?

Email support@anonym.legal.

We reply within one business day.

How we test

We run a full check suite on every release.

Each surface gets its own sweep script and report.

Human reviewers spot-check the output each week.

We track recall and precision on a labelled set.

Bad runs block the deploy.

What we never do

  • We never sell your information to third parties.
  • We never train models on what you upload.
  • We never keep your work after you delete it.
  • We never share keys with any outside firm.
  • We never run ads inside the product.

Plans in plain words

We sell credits, not seats.

One credit covers one short job.

Long jobs use a few credits each.

You can top up at any time.

Unused credits roll over each month.

Read the plans page for current rates.

Who built this

A small team of engineers and lawyers built this.

We ship from Europe and work in the open.

Our founder note spells out why we started.

Where to start

How the parts fit

A browser add-on cleans text inside Chrome.

A Word plug-in handles drafts in Office.

A small desktop tool works on whole folders.

An agent protocol link feeds large models safely.

All four share one core engine and one rule set.

Words from our team

We started this work after a lunch about cookies.

One friend kept getting odd ads on her phone.

We asked why a court file leaked through a draft.

We sketched the first build on a napkin that week.

By month three we had a tiny demo for a friend.

She used it on her first case the next day.

Common questions we hear

Can the tool read scanned PDFs? Yes, with OCR.

Does it work on long files? Yes, in small chunks.

Can I roll my own rule set? Yes, save it as a preset.

Does it run offline? The desktop build runs offline.

Do you keep my files? No, the cloud build wipes after each run.

Will it learn from my work? No, we never train on inputs.

A short tour of the workflow

Upload a file or paste a snippet of prose.

Pick the entities you want gone from the draft.

Choose a method: replace, mask, hash, encrypt, or redact.

Press run and watch the side panel show each hit.

Skim the result and tweak any rule that misfired.

Save the cleaned file or send it to a teammate.