DSGVO Betroffenenrechte technisch umsetzen – Auskunft, Löschung & mehr | Enjyn Gruppe
Hallo Welt
Hallo Welt
Original Lingva Deutsch
Übersetzung wird vorbereitet...
Dieser Vorgang kann bis zu 60 Sekunden dauern.
Diese Seite wird erstmalig übersetzt und dann für alle Besucher gespeichert.
0%
DE Zurück zu Deutsch
Übersetzung durch Lingva Translate

303 Dokumentationen verfügbar

Wissensdatenbank

DSGVO Betroffenenrechte Technisch Umsetzen

Zuletzt aktualisiert: 05.04.2026 um 19:42 Uhr

DSGVO Betroffenenrechte technisch umsetzen – Auskunft, Löschung & mehr

Die DSGVO räumt betroffenen Personen acht umfassende Rechte ein. Unternehmen müssen diese Rechte nicht nur kennen, sondern auch technisch in ihre Systeme implementieren. Dieser Leitfaden zeigt, wie Sie jedes Betroffenenrecht korrekt und praktikabel umsetzt.

Die 8 Betroffenenrechte nach der DSGVO

Recht Artikel Bedeutung
Auskunftspflicht Art. 15 Betroffene erhalten Auskunft über ihre Daten
Berichtigung Art. 16 Unrichtige Daten können korrigiert werden
Löschung (Recht auf Vergessenwerden) Art. 17 Daten können unter Bedingungen gelöscht werden
Einschränkung der Verarbeitung Art. 18 Verarbeitung von Daten kann eingeschränkt werden
Datenübertragbarkeit Art. 20 Daten in strukturiertem Format exportieren
Widerspruch Art. 21 Widerspruch gegen Verarbeitung möglich
Kein automatisiertes Decision Making Art. 22 Schutz vor reinen Automatentscheidungen
Widerruf der Einwilligung Art. 7 Einmal erteilte Einwilligung kann widerrufen werden

1. Recht auf Auskunft (Artikel 15 DSGVO)

Was bedeutet es?

Jede betroffene Person hat das Recht, vom Verantwortlichen eine Bestätigung darüber zu erhalten, ob personenbezogene Daten sie betreffend verarbeitet werden, und wenn dies der Fall ist, Zugang zu diesen Daten zu erhalten.

Was muss offengelegt werden?

  • Verarbeitungszwecke
  • Kategorien personenbezogener Daten
  • Empfänger der Daten
  • Speicherdauer
  • Existieren betroffenenrechte (Berichtigung, Löschung, Widerspruch)?
  • Quelle der Daten (falls nicht von betroffener Person stammend)
  • Automatisierte Entscheidungslogik (falls zutreffend)

Technische Umsetzung

Anforderungen:

  • Benutzer-Interface für Dateneinsicht (z. B. Account-Portal)
  • Query-Funktion, um alle zu einer Person gehörigen Daten abzurufen
  • Export in lesbarem Format (z. B. PDF, HTML)
  • Verifiziertes Identitätsmanagement (E-Mail-Bestätigung, OAuth)
-- Beispiel-SQL-Query für Auskunftserteilung
SELECT
  u.user_id,
  u.email,
  u.full_name,
  u.phone,
  u.created_at,
  o.order_id,
  o.amount,
  o.order_date,
  lp.log_type,
  lp.log_date
FROM users u
LEFT JOIN orders o ON u.user_id = o.user_id
LEFT JOIN logs_processing lp ON u.user_id = lp.user_id
WHERE u.email = ? AND u.deleted_at IS NULL
ORDER BY o.order_date DESC;

Abläuf:

  1. Benutzer meldet sich an oder verifiziert E-Mail-Adresse
  2. System führt Query durch und sammelt alle Daten
  3. Export in strukturiertes Format (PDF, CSV, JSON)
  4. Bereitstellung zum Download oder per E-Mail
  5. Protokollierung der Anfrage (wann, von wem)

Zeitfrist: Antwort innerhalb von 1 Monat (verlängerbar um 2 Monate bei komplexen Anfragen).

2. Recht auf Berichtigung (Artikel 16 DSGVO)

Was bedeutet es?

Betroffene können unrichtige personenbezogene Daten berichtigen lassen.

Praktische Implementierung

  • Self-Service-Portal, in dem Benutzer ihre Daten editieren können (Name, E-Mail, Adresse)
  • Validierung der Eingaben (z. B. E-Mail-Format, Postleitzahl)
  • Audit-Log für alle Änderungen
  • Manueller Review bei kritischen Daten (z. B. Zahlungsdaten)
-- Beispiel-Audit-Logging für Berichtigungen
INSERT INTO audit_log (user_id, action, field_name, old_value, new_value, timestamp)
VALUES (123, 'UPDATE', 'email', 'old@example.com', 'new@example.com', NOW());

3. Recht auf Löschung (Artikel 17 DSGVO)

Was bedeutet es?

Betroffene können unter bestimmten Bedingungen die Löschung ihrer Daten fordern („Recht auf Vergessenwerden").

Wann können Daten gelöscht werden?

  • Daten sind nicht mehr notwendig (ursprünglicher Zweck erfüllt)
  • Betroffene widerruft Einwilligung
  • Betroffene legt Widerspruch ein
  • Daten wurden rechtswidrig verarbeitet
  • Löschung ist gesetzlich verpflichtend

Wann ist Löschung NICHT möglich?

  • Vertragliche Verpflichtungen (z. B. Rechnungslegung, Verträge)
  • Rechtliche Aufbewahrungspflichten (z. B. Handelsbücher für 10 Jahre)
  • Öffentliche Interessen
  • Geltendmachung, Ausübung oder Verteidigung von Rechtsansprüchen

Technische Implementierung

Zwei Strategien:

1. Echte Löschung (Hard Delete)

-- Harte Löschung nach Überprüfung der Aufbewahrungsfrist
DELETE FROM users
WHERE user_id = ?
  AND deleted_request_date < DATE_SUB(NOW(), INTERVAL 90 DAY)
  AND no_legal_holds = TRUE;

-- Löschung verknüpfter Daten
DELETE FROM orders WHERE user_id = ?;
DELETE FROM user_preferences WHERE user_id = ?;
DELETE FROM activity_logs WHERE user_id = ?;

2. Anonymisierung (Soft Delete)

Besser für Daten, die aufbewahrt werden müssen:

-- Anonymisierung statt Löschung
UPDATE users
SET
  email = CONCAT('anonymized_', MD5(email), '@example.com'),
  full_name = 'Anonyme Person',
  phone = NULL,
  address = NULL,
  deleted_at = NOW()
WHERE user_id = ? AND can_be_deleted = TRUE;

Workflow für Löschanfragen

Schritt Aktion Verantwortlich
1. Anfrage Betroffene fordert Löschung an Betroffene
2. Validierung Identität verifizieren, Aufbewahrungspflichten prüfen Datenschutz-Team
3. Genehmigung Überprüfung durch DPO oder Datenschutz-Verantwortlicher DPO/Datenschutz
4. Löschung Hard Delete oder Anonymisierung durchführen IT/Datenbank-Admin
5. Bestätigung Betroffene erhält schriftliche Bestätigung der Löschung Datenschutz-Team

Zeitfrist: Antwort innerhalb von 1 Monat (verlängerbar um 2 Monate).

4. Recht auf Einschränkung der Verarbeitung (Artikel 18 DSGVO)

Was bedeutet es?

Betroffene können die Verarbeitung einschränken lassen. Dies bedeutet, dass Daten nicht gelöscht, aber nicht mehr verarbeitet werden (außer Speicherung).

Wann ist Einschränkung möglich?

  • Betroffene bestreitet die Richtigkeit der Daten
  • Verarbeitung ist rechtswidrig, aber Betroffene möchte keine Löschung
  • Verantwortlicher benötigt Daten nicht mehr, Betroffene benötigt sie für Rechtsanspruch
  • Widerspruch gegen Verarbeitung wurde eingeleitet

Technische Implementierung

-- Flag für Einschränkung
ALTER TABLE users ADD COLUMN processing_restricted BOOLEAN DEFAULT FALSE;

-- Bei Anfrage setzen
UPDATE users
SET processing_restricted = TRUE,
    restriction_date = NOW(),
    restriction_reason = ?
WHERE user_id = ?;

-- Bei Verarbeitung prüfen
SELECT * FROM users WHERE user_id = ? AND processing_restricted = FALSE;

5. Recht auf Datenübertragbarkeit (Artikel 20 DSGVO)

Was bedeutet es?

Betroffene können ihre Daten in strukturiertem, gängigem und maschinenlesbarem Format erhalten und an einen anderen Verantwortlichen übertragen.

Anforderungen

  • Daten müssen in strukturiertem Format vorliegen (JSON, CSV, XML)
  • Format muss „gängig" sein (keine proprietären Formate)
  • Daten müssen maschinenlesbar sein
  • Direktübertragung an anderen Anbieter ist zu unterstützen (falls technisch möglich)

Technische Implementierung

-- Export als JSON (maschinenlesbar)
SELECT JSON_OBJECT(
  'user_id', u.user_id,
  'email', u.email,
  'full_name', u.full_name,
  'created_at', u.created_at,
  'orders', JSON_ARRAYAGG(
    JSON_OBJECT('order_id', o.order_id, 'amount', o.amount)
  )
) AS user_data
FROM users u
LEFT JOIN orders o ON u.user_id = o.user_id
WHERE u.user_id = ?
GROUP BY u.user_id;

-- Export als CSV
SELECT 'user_id', 'email', 'full_name', 'created_at'
UNION ALL
SELECT user_id, email, full_name, created_at FROM users WHERE user_id = ?;

Unterstützte Formate: JSON, CSV, XML, PDF (lesbar aber weniger strukturiert)

Zeitfrist: Antwort innerhalb von 1 Monat.

6. Recht auf Widerspruch (Artikel 21 DSGVO)

Was bedeutet es?

Betroffene können gegen die Verarbeitung Widerspruch einlegen, besonders bei Direktmarketing und Profiling.

Wann ist Widerspruch möglich?

  • Widerspruch gegen Direktmarketing (z. B. Werbemails)
  • Widerspruch gegen Profiling (automatisierte Entscheidungen)
  • Widerspruch gegen Verarbeitung für wissenschaftliche Forschung
  • Widerspruch gegen Verarbeitung im öffentlichen Interesse

Technische Implementierung

Unsubscribe-Funktionalität:

-- Marketing-Opt-Out
ALTER TABLE users ADD COLUMN marketing_consent BOOLEAN DEFAULT TRUE;
ALTER TABLE users ADD COLUMN marketing_opt_out_date DATETIME;

UPDATE users
SET marketing_consent = FALSE,
    marketing_opt_out_date = NOW()
WHERE user_id = ? OR email = ?;

-- Bei E-Mail-Versand prüfen
SELECT * FROM users
WHERE marketing_consent = TRUE
  AND email_verified = TRUE;

7. Recht auf Schutz vor automatisiertem Decision Making (Artikel 22 DSGVO)

Was bedeutet es?

Betroffene dürfen nicht ausschließlich auf automatisierter Verarbeitung beruhenden Entscheidungen unterliegen, die ihnen gegenüber Rechtsfolgen hat.

Beispiele automatisierter Entscheidungen

  • Automatische Kreditvergabe/Ablehnung
  • Automatisierte Bewerbungsablehnung durch KI
  • Automatisches Sperrungen von Benutzerkonten
  • Automatische Betrugserkennung ohne Mensch-Überprüfung

Technische Implementierung

Menschliche Überprüfung erzwingen:

-- Beispiel: Kreditvergabe mit Human Review
CREATE TABLE automated_decisions (
  decision_id INT PRIMARY KEY AUTO_INCREMENT,
  user_id INT,
  decision_type VARCHAR(100),
  automated_result VARCHAR(50), -- APPROVED, REJECTED, PENDING
  human_review_required BOOLEAN DEFAULT TRUE,
  human_review_date DATETIME,
  reviewed_by INT,
  final_result VARCHAR(50),
  FOREIGN KEY (user_id) REFERENCES users(user_id)
);

-- Alle automatisierte Entscheidungen müssen manuell überprüft werden
SELECT * FROM automated_decisions
WHERE human_review_required = TRUE
  AND human_review_date IS NULL;

8. Widerruf der Einwilligung (Artikel 7 DSGVO)

Was bedeutet es?

Wenn Daten auf Basis einer Einwilligung verarbeitet werden, kann diese jederzeit widerrufen werden. Das ist ebenso einfach wie die Erteilung.

Technische Implementierung

-- Consent-Management
CREATE TABLE user_consents (
  consent_id INT PRIMARY KEY AUTO_INCREMENT,
  user_id INT,
  consent_type VARCHAR(100), -- MARKETING, ANALYTICS, PROFILING
  given BOOLEAN,
  given_date DATETIME,
  withdrawn_date DATETIME,
  FOREIGN KEY (user_id) REFERENCES users(user_id)
);

-- Widerruf
UPDATE user_consents
SET given = FALSE,
    withdrawn_date = NOW()
WHERE user_id = ? AND consent_type = 'MARKETING';

-- Prüfung vor Verarbeitung
SELECT * FROM users u
INNER JOIN user_consents c ON u.user_id = c.user_id
WHERE u.user_id = ? AND c.consent_type = 'MARKETING' AND c.given = TRUE;

Response-Workflow für Betroffenenanfragen

Phase Aktivität Frist Verantwortlich
1. Anfrage-Eingang Betroffene sendet Anfrage per Mail, Kontaktformular, oder Portal Sofort Support/Datenschutz-Team
2. Bestätigung Anfrage wird bestätigt, Ticketnummer vergeben 2-3 Tage Support-Team
3. Identitätsverifikation E-Mail-Adresse oder Passwort-Bestätigung 5 Tage Support/IT-Security
4. Daten sammeln Alle Daten aus Systemen abfragen und zusammenstellen 10-14 Tage Datenbankteam/DPO
5. Überprüfung Legal/Compliance Check bei sensiblen Anfragen 5-10 Tage Datenschutz/Legal
6. Response Betroffene erhält Daten, Bestätigung oder Ablehnung Max. 30 Tage Support/Datenschutz
7. Archivierung Anfrage und Antwort dokumentiert für 3 Jahre Laufend Dokumentenverwaltung

Identitätsverifikation: Best Practices

⚠️ Wichtig: Die Identitätsverifikation ist essentiell, um Missbrauch zu verhindern. Verwenden Sie angemessene Methoden, ohne übermäßig invasiv zu sein.
⚠️ Warnung: Löschungen sind irreversibel! Stellen Sie sicher, dass Benutzer die Konsequenzen verstehen und eine Bestätigung einholen. Eine automatische Nachricht nach 24 Stunden mit Lösch-Bestätigung ist best practice, um versehentliche Löschungen zu verhindern.
💡 Tipp: Implementieren Sie ein Response-Time-Tracking-System: Dokumen Sie das Eingangsdatum jeder Anfrage und setzen Sie Erinnerungen für die 30-Tage-Frist. Automatische E-Mails an das Support-Team 5 Tage vor Ablauf helfen, Fristen einzuhalten und Bußgelder zu vermeiden.

Verifikationsmethoden nach Sensitivität:

  • Niedrig (z. B. Auskunft): E-Mail-Verifizierung, Sicherheitsfrage
  • Mittel (z. B. Berichtigung): Passwort-Bestätigung, 2FA
  • Hoch (z. B. Löschung): ID-Kopie, Video-Verifikation, Notarbestätigung

PHP-Beispiel: Löschanfrage verarbeiten

Hier ein praktisches PHP-Beispiel zum Verarbeiten und Protokollieren von Löschanfragen:

<?php
// Löschanfrage verarbeiten (Art. 17 DSGVO)

// 1. Identität verifizieren
function verify_deletion_request($user_id, $email) {
    // E-Mail-Bestätigung oder 2FA überprüfen
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        return false;
    }

    // Prüfe, ob E-Mail zum Benutzer passt
    $pdo = new PDO('mysql:host=localhost;dbname=myapp', 'user', 'pass');
    $stmt = $pdo->prepare('SELECT id FROM users WHERE id = ? AND email = ?');
    $stmt->execute([$user_id, $email]);

    return $stmt->rowCount() === 1;
}

// 2. Aufbewahrungspflichten prüfen
function can_be_deleted($user_id) {
    $pdo = new PDO('mysql:host=localhost;dbname=myapp', 'user', 'pass');

    // Prüfe: Offene Verträge, ausstehende Zahlungen, etc.
    $stmt = $pdo->prepare('
        SELECT COUNT(*) as active_contracts
        FROM contracts
        WHERE user_id = ? AND status = "active"
    ');
    $stmt->execute([$user_id]);
    $result = $stmt->fetch(PDO::FETCH_ASSOC);

    return $result['active_contracts'] === 0;
}

// 3. Löschanfrage loggen
function log_deletion_request($user_id, $email, $status) {
    $pdo = new PDO('mysql:host=localhost;dbname=myapp', 'user', 'pass');

    $stmt = $pdo->prepare('
        INSERT INTO deletion_requests (user_id, email, status, requested_at, deadline)
        VALUES (?, ?, ?, NOW(), DATE_ADD(NOW(), INTERVAL 30 DAY))
    ');
    $stmt->execute([$user_id, $email, $status]);
}

// 4. Daten anonymisieren oder löschen
function delete_user_data($user_id) {
    $pdo = new PDO('mysql:host=localhost;dbname=myapp', 'user', 'pass');

    // Option A: Anonymisierung (Soft Delete)
    $stmt = $pdo->prepare('
        UPDATE users
        SET
            email = CONCAT("anonymized_", MD5(CONCAT(id, NOW())), "@deleted.local"),
            first_name = "Anonyme Person",
            last_name = "",
            phone = NULL,
            address = NULL,
            deleted_at = NOW(),
            status = "deleted"
        WHERE id = ?
    ');
    $stmt->execute([$user_id]);

    // Option B: Hard Delete (vollständige Löschung)
    // DELETE FROM users WHERE id = ? AND status = "marked_for_deletion";

    // Verknüpfte Daten löschen
    $pdo->prepare('DELETE FROM user_sessions WHERE user_id = ?')->execute([$user_id]);
    $pdo->prepare('DELETE FROM user_preferences WHERE user_id = ?')->execute([$user_id]);

    return true;
}

// 5. Bestätigung senden
function send_deletion_confirmation($email, $user_id) {
    $token = bin2hex(random_bytes(32));

    // Token in DB speichern
    $pdo = new PDO('mysql:host=localhost;dbname=myapp', 'user', 'pass');
    $pdo->prepare('
        INSERT INTO deletion_confirmations (user_id, token, expires_at)
        VALUES (?, ?, DATE_ADD(NOW(), INTERVAL 24 HOUR))
    ')->execute([$user_id, hash('sha256', $token)]);

    // E-Mail mit Bestätigungslink senden
    $confirm_url = "https://example.com/api/confirm-deletion?token=" . $token;
    mail($email, 'Löschanfrage bestätigen',
        "Bitte bestätigen Sie die Löschung Ihres Accounts: $confirm_url");

    return true;
}

// Hauptfunktion
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['delete_account'])) {
    $user_id = $_SESSION['user_id'];
    $email = $_POST['email'];

    if (verify_deletion_request($user_id, $email)) {
        if (!can_be_deleted($user_id)) {
            die("Ihr Account kann noch nicht gelöscht werden. "
                . "Bitte saldieren Sie ausstehende Verpflichtungen.");
        }

        log_deletion_request($user_id, $email, 'pending');
        send_deletion_confirmation($email, $user_id);

        echo "Bestätigungsemail gesendet. "
           . "Bitte bestätigen Sie die Löschung innerhalb von 24 Stunden.";
    } else {
        echo "Identitätsverifizierung fehlgeschlagen.";
    }
}

// Bestätigung verarbeiten
if ($_GET['action'] === 'confirm-deletion' && isset($_GET['token'])) {
    $token_hash = hash('sha256', $_GET['token']);

    $pdo = new PDO('mysql:host=localhost;dbname=myapp', 'user', 'pass');
    $stmt = $pdo->prepare('
        SELECT user_id FROM deletion_confirmations
        WHERE token = ? AND expires_at > NOW()
    ');
    $stmt->execute([$token_hash]);

    if ($result = $stmt->fetch(PDO::FETCH_ASSOC)) {
        $user_id = $result['user_id'];
        delete_user_data($user_id);
        log_deletion_request($user_id, '', 'completed');

        echo "Ihr Account wurde erfolgreich gelöscht.";
    } else {
        echo "Token ungültig oder abgelaufen.";
    }
}
?>

Häufige Fehler bei der Implementierung

Fehler Folge Lösung
Zu strikte Identitätsverifikation Betroffene können Rechte nicht ausüben Verhältnismäßige Verifikation; einfache E-Mail-Bestätigung genügt oft
Löschung ohne Prüfung Verletzung von Aufbewahrungspflichten Prüfe vorher: Steuerdaten, Verträge, Compliance-Anforderungen
Keine Dokumentation Bußgelder bei Prüfung durch Behörden Alle Anfragen und Responses dokumentieren (3 Jahre Aufbewahrung)
Zu lange Antwortzeit Bußgelder (bis zu 4% des Jahresumsatzes) Automatisierte Prozesse implementieren, 30-Tage-Frist im System planen
Keine Unterstützung für Datenportabilität Verstoß gegen Art. 20 DSGVO JSON/CSV-Export implementieren, API für Drittanbieter-Zugriff

Technische Checkliste für Betroffenenrechte

Anforderung Implementiert?
Auskunfts-Interface für Benutzer (z. B. Accountportal)
Bearbeitungs-/Editier-Funktion für Kundendaten
Lösch-/Anonymisierungs-Funktion mit Audit-Log
Einschränkungs-Flag in Datenbank
Export in JSON/CSV (Datenportabilität)
Unsubscribe/Widerspruchs-Funktion
Consent-Management-System (Einwilligungen verwalten)
Identitätsverifikation (E-Mail, 2FA)
Kontaktformular oder E-Mail-Adresse für Anfragen
30-Tage-Frist-Tracking im System
Dokumentation aller Anfragen (Audit-Log)
Automatisierte Entscheidungen: Mensch-Überprüfung erzwingen

Weitere Ressourcen

Enjix Beta

Enjyn AI Agent

Hallo 👋 Ich bin Enjix — wie kann ich dir helfen?
120