gdpr
dsgvoauskunftsrechtartikel-15postgresql

DSGVO Auskunftsrecht (Artikel 15) in PostgreSQL umsetzen

DSGVO-Auskunftsersuchen in PostgreSQL bearbeiten. Personenbezogene Daten finden, exportieren und fristgerecht bereitstellen.

RL
Robert Langner
Managing Director, NILS Software GmbH · · 3 min read

Der typische Ablauf

Ein Auskunftsersuchen läuft in drei Phasen:

  1. Anfrage eingeht → Identität prüfen, Frist notieren (1 Monat)
  2. Daten zusammenstellen → Alle personenbezogenen Daten finden und exportieren
  3. Auskunft erteilen → Strukturiert bereitstellen, Zusatzinformationen nach Artikel 15(1) beifügen

Phase 2 ist der technisch aufwendige Teil. Ohne Tooling bedeutet das: jede Tabelle manuell durchsuchen, Ergebnisse zusammenführen, Daten formatieren. Bei einer Datenbank mit 20+ Tabellen dauert das Stunden.

Phase 2 automatisieren

Alle Daten einer Person finden

SELECT pgcomply.inspect('anna.schmidt@example.de');
 table_name | column_name | pii_type    | value
------------+-------------+-------------+--------------------------------
 users      | email       | email       | anna.schmidt@example.de
 users      | name        | person_name | Anna Schmidt
 users      | phone       | phone       | +49 170 1234567
 profiles   | address     | address     | Musterstraße 12, 24103 Kiel
 orders     | shipping_addr| address    | Musterstraße 12, 24103 Kiel
 newsletter | email       | email       | anna.schmidt@example.de
 sessions   | ip_address  | ip_address  | 192.168.1.42

Daten als JSON exportieren

SELECT pgcomply.export_user_data('anna.schmidt@example.de', 'json');

Das Ergebnis ist ein strukturiertes JSON-Dokument:

{
  "subject_id": "anna.schmidt@example.de",
  "exported_at": "2026-02-20T10:30:00Z",
  "tables": {
    "users": {
      "email": "anna.schmidt@example.de",
      "name": "Anna Schmidt",
      "phone": "+49 170 1234567"
    },
    "profiles": {
      "address": "Musterstraße 12, 24103 Kiel"
    },
    "orders": [
      {"order_id": "ORD-2025-4421", "shipping_addr": "Musterstraße 12, 24103 Kiel"},
      {"order_id": "ORD-2026-0089", "shipping_addr": "Musterstraße 12, 24103 Kiel"}
    ]
  }
}

Dieses JSON erfüllt gleichzeitig Artikel 15 (Auskunft) und Artikel 20 (Datenportabilität in maschinenlesbarem Format).

Zusatzinformationen nach Artikel 15(1)

Neben den Daten selbst müssen Sie folgende Informationen bereitstellen:

Verarbeitungszwecke

SELECT * FROM pgcomply.consent_purposes();
 purpose_key | description                  | legal_basis       | active_consents
-------------+------------------------------+-------------------+----------------
 account     | Benutzerkonto und Service    | contract          | 4,521
 newsletter  | Wöchentlicher Newsletter     | consent           | 1,203
 analytics   | Produktverbesserung          | legitimate_interest| 4,521

Empfänger

-- Drittanbieter, die Zugang zu Daten haben
SELECT * FROM pgcomply.get_tags('_data_recipients');

Speicherdauer

SELECT * FROM pgcomply.retention_policies();

Prozess in Ihre Anwendung integrieren

# Django-Beispiel: Auskunftsersuchen-Endpoint
def handle_sar_request(request, user_email):
    with connection.cursor() as cursor:
        # Daten exportieren
        cursor.execute(
            "SELECT pgcomply.export_user_data(%s, 'json')",
            [user_email]
        )
        user_data = cursor.fetchone()[0]
    
    # Antwort zusammenstellen
    response = {
        "betroffene_person": user_email,
        "datum": datetime.now().isoformat(),
        "personenbezogene_daten": user_data,
        "verarbeitungszwecke": get_purposes(),
        "speicherdauer": get_retention_info(),
        "ihre_rechte": {
            "berichtigung": "Artikel 16 DSGVO",
            "löschung": "Artikel 17 DSGVO",
            "einschränkung": "Artikel 18 DSGVO",
            "datenportabilität": "Artikel 20 DSGVO",
            "widerspruch": "Artikel 21 DSGVO",
            "beschwerde": "Landesbeauftragter für Datenschutz"
        }
    }
    
    return JsonResponse(response)

Zusammenfassung

Ein DSGVO-Auskunftsersuchen in PostgreSQL bearbeiten: inspect() findet alle Daten, export_user_data() exportiert sie als JSON. Zusammen mit den Zusatzinformationen aus consent_purposes() und retention_policies() haben Sie eine vollständige Artikel-15-Antwort — automatisiert statt manuell, in Sekunden statt Stunden.

Frequently Asked Questions

Wie schnell muss ich auf ein Auskunftsersuchen reagieren?
Artikel 12(3) DSGVO gibt Ihnen einen Monat ab Eingang der Anfrage. Bei besonders komplexen Anfragen kann die Frist um zwei weitere Monate verlängert werden, aber Sie müssen die betroffene Person innerhalb des ersten Monats über die Verlängerung informieren.
Muss ich die Identität des Anfragenden prüfen?
Ja. Sie müssen sicherstellen, dass die anfragende Person tatsächlich die betroffene Person ist. Bei begründeten Zweifeln können Sie zusätzliche Informationen zur Identitätsprüfung anfordern. Geben Sie niemals personenbezogene Daten an nicht verifizierte Anfragende heraus.
Kann ich ein Auskunftsersuchen ablehnen?
Nur wenn die Anfrage offensichtlich unbegründet oder exzessiv ist, insbesondere bei wiederholten Anfragen. Sie müssen die Ablehnung begründen und die betroffene Person über ihr Beschwerderecht bei der Aufsichtsbehörde informieren.
Was muss die Auskunft enthalten?
Artikel 15(1) DSGVO listet auf: Verarbeitungszwecke, Datenkategorien, Empfänger, geplante Speicherdauer, Hinweis auf Rechte (Berichtigung, Löschung, Einschränkung, Widerspruch), Beschwerderecht bei der Aufsichtsbehörde, und Herkunft der Daten (falls nicht beim Betroffenen erhoben).

Related Articles