By · Last updated 2026-05-29

Zpět na blogTechnické

Pipeline bezpečný pro GDPR: Anonymizace PII před uložením

Značky sloupců v dbt nejsou GDPR compliance. Surová zákaznická data přistávají ve vašem Snowflake skladu bez maskování ještě předtím, než se uplatní politiky na základě značek.

May 29, 20268 min čtení
data pipelinedbtSnowflakedata warehouseELT anonymizationGDPR engineering

Pipeline bezpečný pro GDPR: Anonymizujte PII před uložením

Aktualizováno pro rok 2026

Označili jste sloupce PII v dbt. Nastavili jste dynamické maskování ve Snowflake. Máte pocit souladu s GDPR.

Vaše zdrojový obsah stále přistává ve skladu bez maskování. Maskování probíhá při dotazu. Nemaskovaný obsah sedí ve vašem surovém schématu. Kdokoli s přístupem k surovému schématu ho může přečíst. Vaše dbt modely běžely ještě před existencí maskovacích politik. Staré importované tabulky nebyly nikdy maskovány.

Mezera mezi „máme maskovací politiky” a „náš pipeline je bezpečný” je tam, kde dochází k porušením GDPR.

Viz náš přehled compliance, jak anonym.legal podporuje GDPR.

Jak ELT pipeline vystavuje PII

Vzor Extract-Load-Transform (ELT) je nyní normou. Nejprve načte zdrojová data do skladu. Transformace přijdou později. Kroky vypadají takto:

  1. Extrakce: Zdrojové systémy exportují všechna pole. Salesforce CRM, Stripe platby, Intercom podpora — vše odchází.
  2. Načtení: Zdrojová data přistávají ve schématu pro příjem dat skladu. Snowflake, BigQuery, Redshift fungují stejně. Každé PII pole je zahrnuto.
  3. Transformace: dbt modely čistí a spojují data pro analytiku.

Vrstva příjmu dat obsahuje plné osobní informace. Jména, e-mailové adresy, telefonní čísla, platební údaje, text podpůrných lístků. V mnoha týmech mají inženýři a analytici přístup k surovému schématu. Mohou tyto tabulky kdykoli dotazovat.

Maskování na základě značek ve Snowflake pomáhá při dotazu. Ale pouze pro řádně nastavené modely následného zpracování. Nemaskovává staré importované tabulky. Neblokuje přímé dotazy na schéma. Každý model a dashboard musí být označen. Tato zátěž roste s růstem schématu.

Anonymizujte před načtením

Anonymizace PII na úrovni pipeline odstraňuje riziko v surové vrstvě. Proveďte ji ještě před tím, než obsah přistane ve skladu.

ETL přístup (anonymizace před načtením):

  1. Extrakce ze zdrojových systémů
  2. Průchod krokem anonymizace
  3. Načtení čistého výstupu do skladu

Sklad nikdy neobdrží nemaskované PII. Schéma příjmu dat obsahuje pouze čistý obsah. Modely následného zpracování, dashboardy a přímé dotazy pracují s čistým výstupem.

Máte dvě hlavní možnosti.

Možnost 1 — Integrace API:

Pro systémy s webhooky nebo streamovacími exporty směrujte záznamy nejprve přes API anonym.legal. Podpůrné lístky opouštějící Intercom procházejí přes API před sklady. Exporty Stripe fungují stejně.

POST /api/anonymize
{
  "text": "Zákazník Jan Novák (jnovak@example.com) nahlásil...",
  "entities": ["PERSON", "EMAIL_ADDRESS", "PHONE_NUMBER"],
  "method": "replace"
}

Možnost 2 — Dávkové předzpracování:

Pro denní nebo týdenní exporty souborů CSV/JSON spusťte soubory přes dávkové zpracování před načtením.

Struktura Airflow DAG:

extract_task >> anonymize_batch_task >> load_to_warehouse_task

Úloha anonymizace nahraje soubory a vrátí čisté verze. Úloha načtení se postará o zbytek.

Viz naše bezpečnostní postupy pro podrobnosti o dílčích zpracovatelích a datových tocích.

Co značky sloupců dbt dělají a nedělají

dbt umožňuje označovat sloupce PII:

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

Značky umožňují:

  • Dokumentovat, kde se PII nachází
  • Spouštět maskovací politiky v následném zpracování (vyžaduje nastavení na úrovni skladu)
  • Sledovat původ dat s nástroji jako Secoda

Značky nedělají:

  • Nemaskují importované tabulky v surovém schématu
  • Neblokují přímé dotazy na tabulky
  • Neanonymizují data při načtení
  • Retroaktivně nemaskují stará data

Značky sloupců dbt jsou nástrojem správy. Ukazují, kde se PII nachází. Neuplatňují „vhodná technická opatření”, která vyžaduje článek 32 GDPR.

Mezera maskování Snowflake

Dynamické maskování Snowflake skryje obsah sloupce před uživateli při dotazu. Jedná se o silnou kontrolu pro produkční použití. Má však jasná omezení.

Hlavní omezení:

  • Každý nový sloupec potřebuje explicitní politiku
  • Změny schématu mohou ponechat nové sloupce bez maskování, dokud politiky neaktualizujete
  • Role SYSADMIN a ACCOUNTADMIN mohou maskování obejít
  • Importní úlohy často běží s vysokými oprávněními, která maskování přeskočí
  • Stará data načtená před nastavením politik jsou uložena v otevřené formě — politiky běží při čtení, nikoli při zápisu

Maskování při dotazu nestačí. Data musí být čistá ještě před uložením.

Dokumentace compliance

Pravidlo odpovědnosti GDPR vyžaduje důkaz. Slova nestačí. Pro inženýrské týmy to znamená písemné záznamy.

Záznamy o činnostech zpracování (ROPA): Dokumentujte, že informace o zákaznících jsou anonymizovány před načtením do analytického skladu. Krok anonymizace je činností zpracování podle GDPR.

Poznámky k technickým zárukám: Zapište, na které typy entit se váš pipeline zaměřuje. Poznamenejte použitou metodu anonymizace. Protokoly dávkových spuštění vám to poskytnou automaticky.

Původ dat: Secoda nebo vestavěný lineage dbt může ukázat, že zdrojové tabulky procházejí krokem anonymizace před dosažením analytických modelů. To je váš auditní záznam.

Registr dodavatelů: Služba anonymizace je dílčím zpracovatelem. Jejich DPA a zásady ochrany osobních údajů musí být ve vašem registru dodavatelů.

Kroky implementace

Pro pipeline s dbt a Snowflake:

Krok 1: Auditujte svou surovou vrstvu

Najděte, které tabulky obsahují osobní informace. Dotazujte se na vaše dbt značky sloupců nebo katalog pro tabulky označené PII.

Krok 2: Nastavte rozsah anonymizace

Pro každou zdrojovou tabulku rozhodněte, které sloupce obsahují PII. Pak rozhodněte, které potřebují anonymizaci a které pseudonymizaci. Tělo podpůrného lístku: anonymizujte. ID objednávky: pseudonymizujte pro zachování klíčů pro spojení. Časové razítko: ponechte beze změny pro analýzu časových řad.

Krok 3: Zvolte cestu implementace

Malý tým s dávkovými exporty: použijte dávkové zpracování souborů před načtením. Dostupný inženýrský tým: vybudujte integraci API v Airflow nebo Prefect.

Krok 4: Testujte a ověřujte

Spusťte anonymizaci na vzorku před spuštěním v produkci. Zkontrolujte, zda dbt modely stále fungují. Některé modely se spojují přes e-mail. Ty potřebují konzistentní náhradní hodnoty. Pseudonymizace zachovává klíče pro spojení. Redakce je přeruší.

Krok 5: Zpracujte staré surové tabulky

Obsah načtený před zavedením anonymizace potřebuje retroaktivní zpracování. Exportujte, anonymizujte, znovu načtěte. Jedná se o jednorázový úkol pro každou tabulku.

Závěr

Maskování na základě značek vám ukazuje, kde se PII nachází. Nebrání uživatelům se přístupem ke schématu v jeho čtení. Pro skutečný soulad s GDPR musí být PII čisté ještě před dosažením skladu. To činí vrstvu příjmu dat stejně bezpečnou jako produkční vrstvu.

To je obtížnější než označování sloupců. Ale to je to, co „vhodná technická opatření” skutečně znamenají.

Zdroje

Připraveni chránit svá data?

Začněte anonymizovat PII s více než 285 typy entit ve 48 jazycích.

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.