By · Last updated 2026-05-29

Zurück zum BlogTechnisch

Aufbau einer GDPR-sicheren Datenpipeline...

dbt-Spalten-Tags sind nicht GDPR-konform. Rohkundendaten gelangen unmaskiert in Ihr Snowflake-Warehouse...

May 29, 20268 min Lesezeit
data pipelinedbtSnowflakedata warehouseELT anonymizationGDPR engineering

DSGVO-sichere Pipeline: PII vor der Speicherung anonymisieren

Aktualisiert für 2026

Sie haben Ihre PII-Spalten in dbt getaggt. Sie haben dynamisches Masking in Snowflake eingerichtet. Sie fühlen sich DSGVO-konform.

Ihre Quelldaten landen trotzdem unverschleiert im Warehouse. Masking greift erst zur Abfragezeit. Der unverschleierte Inhalt liegt in Ihrem Raw-Schema. Jeder mit Zugriff darauf kann ihn lesen. Ihre dbt-Modelle liefen, bevor Masking-Richtlinien existierten. Alte eingespeiste Tabellen wurden nie maskiert.

Die Lücke zwischen „wir haben Masking-Richtlinien" und „unsere Pipeline ist sicher" ist der Ort, an dem DSGVO-Verstöße entstehen.

Mehr dazu, wie anonym.legal DSGVO-Pflichten unterstützt, lesen Sie in unserer Compliance-Übersicht.

Wie ELT-Pipelines PII offenlegen

Das Extract-Load-Transform (ELT)-Muster ist heute der Standard. Es lädt Quelldaten zuerst in das Warehouse. Transformationen kommen später. Die Schritte sehen so aus:

  1. Extraktion: Quellsysteme exportieren alle Felder. Salesforce CRM, Stripe-Zahlungen, Intercom-Support — alles wird ausgeleitet.
  2. Laden: Quelldaten landen im Ingestion-Schema des Warehouses. Snowflake, BigQuery, Redshift funktionieren alle gleich. Jedes PII-Feld ist enthalten.
  3. Transformation: dbt-Modelle bereinigen und verbinden die Daten für Analytics.

Die Ingestion-Schicht enthält vollständige personenbezogene Informationen. Namen, E-Mail-Adressen, Telefonnummern, Zahlungsdetails, Support-Ticket-Texte. In vielen Teams haben Ingenieure und Analysten Zugriff auf das Raw-Schema. Sie können diese Tabellen jederzeit abfragen.

Tag-basiertes Masking in Snowflake hilft zur Abfragezeit — aber nur für korrekt konfigurierte nachgelagerte Modelle. Es maskiert alte eingespeiste Tabellen nicht. Es blockiert keine direkten Schema-Abfragen. Jedes Modell und Dashboard muss getaggt sein. Diese Last wächst mit dem Schema.

Vor dem Laden anonymisieren

PII auf Pipeline-Ebene zu anonymisieren beseitigt das Risiko auf der Ingestion-Schicht. Tun Sie es, bevor Inhalte ins Warehouse gelangen.

ETL-Ansatz (Pre-Load-Anonymisierung):

  1. Aus Quellsystemen extrahieren
  2. Durch einen Anonymisierungsschritt führen
  3. Saubere Ausgabe ins Warehouse laden

Das Warehouse erhält nie unmaskiertes PII. Das Ingestion-Schema enthält nur sauberen Inhalt. Nachgelagerte Modelle, Dashboards und direkte Abfragen arbeiten alle mit sauberer Ausgabe.

Sie haben zwei Hauptpfade.

Option 1 — API-Integration:

Für Systeme mit Webhooks oder Streaming-Exporten leiten Sie Einträge zuerst durch die anonym.legal API. Support-Tickets aus Intercom gehen vor dem Warehouse durch die API. Stripe-Exporte ebenso.

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

Option 2 — Batch-Vorverarbeitung:

Für tägliche oder wöchentliche CSV/JSON-Dateiexporte führen Sie Dateien durch Batch-Verarbeitung, bevor Sie laden.

Airflow DAG-Struktur:

extract_task >> anonymize_batch_task >> load_to_warehouse_task

Der Anonymisierungs-Task lädt Dateien hoch und erhält saubere Versionen zurück. Der Lade-Task erledigt den Rest.

Informationen zu Sub-Prozessoren und Datenflüssen finden Sie auf unserer Sicherheitsseite.

Was dbt-Spalten-Tags tun und nicht tun

dbt ermöglicht das Taggen von PII-Spalten:

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

Tags ermöglichen:

  • Dokumentation des PII-Standorts
  • Auslösen nachgelagerter Masking-Richtlinien (erfordert Warehouse-Konfiguration)
  • Lineage-Tracking mit Tools wie Secoda

Tags ermöglichen nicht:

  • Maskierung eingespeister Tabellen im Raw-Schema
  • Blockierung direkter Tabellenabfragen
  • Anonymisierung beim Laden
  • Nachträgliche Maskierung alter Daten

dbt-Spalten-Tags sind ein Governance-Werkzeug. Sie zeigen, wo PII existiert. Sie wenden nicht die „geeigneten technischen Maßnahmen" an, die DSGVO Artikel 32 verlangt.

Die Snowflake-Masking-Lücke

Das dynamische Masking von Snowflake verbirgt Spalteninhalte vor Nutzern zur Abfragezeit. Es ist eine starke Kontrolle für Produktionsanwendungen. Aber es hat klare Grenzen.

Wesentliche Grenzen:

  • Jede neue Spalte benötigt eine explizite Richtlinie
  • Schemaänderungen können neue Spalten unmaskiert lassen, bis Richtlinien aktualisiert werden
  • SYSADMIN- und ACCOUNTADMIN-Rollen können Masking umgehen
  • Import-Jobs laufen oft mit erhöhten Berechtigungen, die Masking überspringen
  • Alte Daten, die vor der Einrichtung von Richtlinien geladen wurden, sind im Klartext gespeichert — Richtlinien greifen beim Lesen, nicht beim Schreiben

Masking zur Abfragezeit reicht nicht aus. Daten müssen vor der Speicherung bereinigt werden.

Compliance-Dokumentation

Die Rechenschaftspflicht der DSGVO erfordert Nachweise. Worte genügen nicht. Für Entwicklungsteams bedeutet das schriftliche Aufzeichnungen.

Verzeichnis von Verarbeitungstätigkeiten (VVT): Dokumentieren Sie, dass Kundendaten vor dem Laden ins Analytics-Warehouse anonymisiert werden. Der Anonymisierungsschritt ist eine Verarbeitungstätigkeit nach DSGVO.

Technische Schutzmaßnahmen: Notieren Sie, welche Entitätstypen Ihre Pipeline verarbeitet. Notieren Sie die verwendete Anonymisierungsmethode. Batch-Protokolle liefern dies automatisch.

Daten-Lineage: Secoda oder dbt's integriertes Lineage kann zeigen, dass Quelltabellen durch einen Anonymisierungsschritt fließen, bevor sie Analytics-Modelle erreichen. Das ist Ihr Prüfpfad.

Anbieterregister: Der Anonymisierungsdienst ist ein Sub-Prozessor. Ihr DPA und Datenschutzrichtlinie müssen in Ihrem Anbieterregister stehen.

Implementierungsschritte

Für eine dbt- und Snowflake-Pipeline:

Schritt 1: Raw-Schicht prüfen

Finden Sie, welche Tabellen personenbezogene Informationen enthalten. Fragen Sie Ihre dbt-Spalten-Tags oder Ihren Katalog nach PII-getaggten Tabellen ab.

Schritt 2: Anonymisierungsumfang festlegen

Entscheiden Sie für jede Quelltabelle, welche Spalten PII enthalten. Legen Sie dann fest, welche anonymisiert und welche pseudonymisiert werden müssen. Support-Ticket-Text: anonymisieren. Bestell-ID: pseudonymisieren, um Join-Keys beizubehalten. Zeitstempel: für Zeitreihenanalysen unverändert lassen.

Schritt 3: Implementierungspfad wählen

Kleines Team mit Batch-Exporten: Batch-Dateiverarbeitung vor dem Laden. Engineering-Team verfügbar: API-Integration in Airflow oder Prefect bauen.

Schritt 4: Testen und validieren

Anonymisierung an einer Stichprobe vor dem Go-Live testen. Prüfen, ob dbt-Modelle noch funktionieren. Einige Modelle verbinden sich über E-Mail. Diese brauchen konsistente Ersatzwerte. Pseudonymisierung erhält Join-Keys. Schwärzung bricht sie.

Schritt 5: Alte Tabellen verarbeiten

Inhalte, die vor der Anonymisierung geladen wurden, müssen rückwirkend verarbeitet werden. Exportieren, anonymisieren, neu laden. Das ist ein einmaliger Vorgang pro Tabelle.

Fazit

Tag-basiertes Masking zeigt Ihnen, wo PII lebt. Es hält Nutzer mit Schema-Zugriff nicht davon ab, es zu lesen. Für echte DSGVO-Konformität muss PII bereinigt sein, bevor es das Warehouse erreicht. Das macht die Ingestion-Schicht so sicher wie die Produktionsschicht.

Das ist schwieriger als Spalten-Tagging. Aber das ist das, was „geeignete technische Maßnahmen" tatsächlich bedeutet.

Quellen

Bereit, Ihre Daten zu schützen?

Beginnen Sie mit der Anonymisierung von PII mit über 285 Entitätstypen in 48 Sprachen.

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.