0Pricing
AI Agents · Lektion

Einhaltung gesetzlicher Vorgaben: GDPR und SOC2

Datenminimierung, Einwilligungen nachverfolgen und Zugriffskontrolle für richtlinienkonforme Agenten.

Einhaltung gesetzlicher Vorgaben: GDPR und SOC2 ist eine kostenlose AI Agents-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des AI Agents-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der AI Agents-Kurs umfasst insgesamt 4 Lektionen.

Warum Vorschriften für KI-Agenten gelten

KI-Agenten verarbeiten Benutzerdaten, treffen Entscheidungen und führen Aktionen aus. Damit fallen sie unmittelbar unter Datenschutzvorschriften (DSGVO) und Sicherheitsframeworks (SOC 2).

Compliance ist keine Option – Verstöße können gemäß DSGVO Geldbußen von bis zu 4 % des weltweiten Jahresumsatzes nach sich ziehen.

DSGVO: Datenminimierung

Das Prinzip der Datenminimierung in der DSGVO verlangt, nur die personenbezogenen Daten zu erfassen, die für den angegebenen Zweck unbedingt erforderlich sind. Ein Agent sollte keine vollständigen Gesprächsverläufe speichern, wenn für die Analyse nur das Ergebnis (gelöst/ungelöst) benötigt wird.

def minimized_log_entry(conversation: list[dict], user_id: str) -> dict:
    '''Store only what is needed — not the full transcript.'''
    return {
        'user_id':       user_id,
        'timestamp':     conversation[-1].get('timestamp'),
        'turns':         len(conversation),
        'resolved':      conversation[-1].get('resolved', False),
        'intent':        conversation[-1].get('intent'),
        'satisfaction':  conversation[-1].get('csat_score'),
        # NOT stored: full message text, PII mentioned in conversation
    }

# WRONG — stores raw messages which may contain PII
# {'messages': conversation, 'user_id': user_id}

if __name__ == '__main__':
    conversation = [
        {'timestamp': 1717000000, 'resolved': True, 'intent': 'reset_password', 'csat_score': 5}
    ]
    print('Minimized log entry:', minimized_log_entry(conversation, user_id='u42'))

DSGVO: Einwilligungen nachverfolgen

Bevor der Agent personenbezogene Daten verarbeitet, benötigen Sie eine Rechtsgrundlage – in der Regel die Einwilligung des Benutzers. Erfassen Sie, wann die Einwilligung erteilt wurde und wofür sie gilt, und berücksichtigen Sie Widerrufe.

from datetime import datetime, timezone

consent_store: dict[str, dict] = {}  # user_id -> consent record

def record_consent(user_id: str, purpose: str, version: str = '1.0'):
    if user_id not in consent_store:
        consent_store[user_id] = {'purposes': {}}
    consent_store[user_id]['purposes'][purpose] = {
        'granted':     True,
        'timestamp':   datetime.now(timezone.utc).isoformat(),
        'version':     version
    }

def withdraw_consent(user_id: str, purpose: str):
    if user_id in consent_store:
        consent_store[user_id]['purposes'].pop(purpose, None)

def has_consent(user_id: str, purpose: str) -> bool:
    return bool(
        consent_store.get(user_id, {}).get('purposes', {}).get(purpose, {}).get('granted')
    )

if __name__ == '__main__':
    record_consent('u42', 'marketing_emails')
    print('Has consent:', has_consent('u42', 'marketing_emails'))
    withdraw_consent('u42', 'marketing_emails')
    print('Has consent after withdrawal:', has_consent('u42', 'marketing_emails'))

DSGVO: Recht auf Löschung (Recht auf Vergessenwerden)

Wenn ein Benutzer die Löschung beantragt, muss der Agent alle mit dieser Person verknüpften personenbezogenen Daten löschen – einschließlich Agentenprotokollen, Gesprächsverlauf und zwischengespeicherten Profilen. Dies muss innerhalb von 30 Tagen nach dem Antrag erfolgen.

import os

def erase_user_data(user_id: str, conn) -> dict:
    '''Delete all personal data for a user across all storage systems.'''
    deleted = {}

    # 1. Delete from audit log (if not using WORM storage)
    with conn.cursor() as cur:
        cur.execute('DELETE FROM agent_audit_log WHERE user_id = %s', (user_id,))
        deleted['audit_log_rows'] = cur.rowcount

    # 2. Delete conversation history
    with conn.cursor() as cur:
        cur.execute('DELETE FROM conversation_history WHERE user_id = %s', (user_id,))
        deleted['conversations'] = cur.rowcount

    # 3. Remove consent record
    consent_store.pop(user_id, None)
    deleted['consent_record'] = 1

    # 4. Clear cached profile
    profile_cache = {}  # reference to your cache
    profile_cache.pop(user_id, None)
    deleted['profile_cache'] = 1

    conn.commit()
    return {'user_id': user_id, 'erased': deleted}

DSGVO: Recht auf Datenübertragbarkeit

Benutzer haben das Recht, ihre Daten in einem maschinenlesbaren Format (z. B. JSON oder CSV) zu erhalten. Erstellen Sie eine Exportfunktion, die alle in den Systemen des Agenten über einen Benutzer gespeicherten Daten zusammenträgt.

import json

def export_user_data(user_id: str, conn) -> str:
    export = {'user_id': user_id, 'data': {}}

    with conn.cursor() as cur:
        cur.execute(
            'SELECT timestamp, action_type, result FROM agent_audit_log '
            'WHERE user_id = %s ORDER BY timestamp',
            (user_id,)
        )
        rows = cur.fetchall()
        export['data']['audit_log'] = [
            {'timestamp': r[0], 'action': r[1], 'result': r[2]}
            for r in rows
        ]

    export['data']['consent'] = consent_store.get(user_id, {})
    return json.dumps(export, indent=2)

SOC 2: Zugriffskontrolle

SOC 2 Type II verlangt den Nachweis, dass der Zugriff auf Systeme und Daten auf autorisierte Personen beschränkt ist. Für einen Agenten bedeutet dies: rollenbasierter Zugriff auf Agenten-Tools, MFA für den Administrationszugriff und regelmäßige Zugriffsüberprüfungen.

ROLE_PERMISSIONS = {
    'agent_basic':    {'web_search', 'read_file', 'query_database'},
    'agent_email':    {'web_search', 'read_file', 'query_database', 'send_email'},
    'agent_admin':    {'web_search', 'read_file', 'write_file', 'query_database',
                       'send_email', 'create_ticket', 'execute_python_sandbox'},
    'human_admin':    {'*'}  # all permissions
}

def get_permitted_actions(role: str) -> set:
    perms = ROLE_PERMISSIONS.get(role, set())
    if '*' in perms:
        return ALLOWED_ACTIONS  # reference to full allowlist
    return perms

def check_role_permission(role: str, action: str) -> bool:
    return action in get_permitted_actions(role)

SOC 2: Verschlüsselung im Ruhezustand und bei der Übertragung

SOC 2 erfordert die Verschlüsselung sensibler Daten im Ruhezustand (Datenbankverschlüsselung, verschlüsselte Datenträger) und bei der Übertragung (TLS 1.2+). Für Agenten bedeutet das: verschlüsselte Speicherung von Konversationen, TLS für alle API-Aufrufe und keine Geheimnisse im Klartext in Protokollen.

from cryptography.fernet import Fernet
import os

# Key stored in environment variable, never in code
ENCRYPTION_KEY = os.environ.get('LOG_ENCRYPTION_KEY', Fernet.generate_key())
cipher = Fernet(ENCRYPTION_KEY)

def encrypt_sensitive_field(value: str) -> str:
    return cipher.encrypt(value.encode()).decode()

def decrypt_sensitive_field(encrypted: str) -> str:
    return cipher.decrypt(encrypted.encode()).decode()

# Usage: encrypt PII before storing in audit log
encrypted_email = encrypt_sensitive_field('user@example.com')
print(encrypted_email[:30], '...')  # starts with gAAAA...

SOC 2: Audit-Protokolle für Sicherheitsereignisse

SOC-2-Prüfer möchten Protokolle von Sicherheitsereignissen sehen: Anmeldeversuche, Zugriffe auf sensible Daten, Konfigurationsänderungen und Richtlinienverstöße. Diese müssen sicher gespeichert und mindestens ein Jahr lang aufbewahrt werden.

import logging, json, time

security_logger = logging.getLogger('agent.security')

SECURITY_EVENTS = {
    'auth_success', 'auth_failure', 'policy_violation',
    'data_access_pii', 'admin_action', 'config_change'
}

def log_security_event(event_type: str, agent_id: str,
                       user_id: str, details: dict):
    assert event_type in SECURITY_EVENTS, f'Unknown security event: {event_type}'
    entry = {
        'timestamp':  time.time(),
        'event_type': event_type,
        'agent_id':   agent_id,
        'user_id':    user_id,
        'details':    details
    }
    security_logger.warning(json.dumps(entry))

if __name__ == '__main__':
    import sys
    security_logger.addHandler(logging.StreamHandler(sys.stdout))
    log_security_event('auth_failure', 'agent-1', 'user-42', {'reason': 'bad_token'})

PII in Agentenausgaben nachverfolgen

Agenten sollten keine PII in Ausgaben aufnehmen, die protokolliert oder an Dienste von Drittanbietern (Analysen, Überwachung) gesendet werden. Scannen Sie ausgehende Inhalte vor der Übertragung auf PII-Muster.

import re

PII_PATTERNS = [
    (r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b', 'email'),
    (r'\b\d{3}[-.]?\d{3}[-.]?\d{4}\b',                         'phone'),
    (r'\b\d{4}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b',           'credit_card'),
    (r'\b\d{3}-\d{2}-\d{4}\b',                                   'ssn')
]

def redact_pii(text: str) -> tuple[str, list[str]]:
    redacted = text
    found_types = []
    for pattern, pii_type in PII_PATTERNS:
        if re.search(pattern, redacted):
            found_types.append(pii_type)
            redacted = re.sub(pattern, f'[{pii_type.upper()}_REDACTED]', redacted)
    return redacted, found_types

text, types = redact_pii('Contact john@example.com or call 555-867-5309')
print(text)
print('PII found:', types)

Eine Compliance-Checkliste erstellen

Bevor Sie einen Agenten bereitstellen, der personenbezogene Daten verarbeitet, überprüfen Sie, ob die folgenden Kontrollen eingerichtet sind.

COMPLIANCE_CHECKLIST = [
    ('GDPR',  'Consent captured before processing personal data'),
    ('GDPR',  'Data minimization: only necessary data is collected'),
    ('GDPR',  'Right-to-erasure endpoint implemented and tested'),
    ('GDPR',  'Data portability export available'),
    ('GDPR',  'Data retention policy enforced (auto-delete after N days)'),
    ('SOC2',  'Role-based access control implemented for all agent tools'),
    ('SOC2',  'All data encrypted at rest and in transit (TLS 1.2+)'),
    ('SOC2',  'Security events logged and retained for 12+ months'),
    ('SOC2',  'Access reviews scheduled quarterly'),
    ('SOC2',  'Incident response plan documented'),
    ('BOTH',  'PII redaction applied to logs and analytics exports'),
    ('BOTH',  'Vendor DPAs signed for all third-party APIs used'),
]

for framework, control in COMPLIANCE_CHECKLIST:
    print(f'[ ] [{framework}] {control}')

Automatisierung der Datenaufbewahrung

Die DSGVO verlangt, dass Daten gelöscht werden, sobald sie für ihren ursprünglichen Zweck nicht mehr benötigt werden. Automatisieren Sie dies mit einem Auftrag für die Aufbewahrungsrichtlinie, der alte Datensätze anhand konfigurierbarer Aufbewahrungsfristen löscht.

from datetime import datetime, timedelta, timezone

RETENTION_POLICIES = {
    'conversation_history': 90,    # days
    'agent_audit_log':      365,
    'cached_profiles':      1,
    'session_data':         30
}

def purge_expired_data(conn):
    purged = {}
    for table, retention_days in RETENTION_POLICIES.items():
        cutoff = datetime.now(timezone.utc) - timedelta(days=retention_days)
        try:
            with conn.cursor() as cur:
                cur.execute(
                    f'DELETE FROM {table} WHERE timestamp < %s',
                    (cutoff.timestamp(),)
                )
                purged[table] = cur.rowcount
        except Exception as e:
            purged[table] = f'Error: {e}'
    conn.commit()
    return purged

if __name__ == '__main__':
    class FakeCursor:
        def __enter__(self):
            return self
        def __exit__(self, *exc):
            return False
        def execute(self, sql, params):
            self.rowcount = 3

    class FakeConn:
        def cursor(self):
            return FakeCursor()
        def commit(self):
            pass

    result = purge_expired_data(FakeConn())
    print('Rows purged per table:')
    for table, count in result.items():
        print(f'  {table}: {count}')

Was ist das Prinzip der Datenminimierung in der DSGVO?

Datenminimierung ist eines der zentralen Prinzipien der DSGVO und wirkt sich unmittelbar darauf aus, wie Agentensysteme von Grund auf konzipiert werden sollten.

Zusammenfassung der DSGVO- und SOC-2-Compliance

Die DSGVO-Compliance erfordert: die Nachverfolgung von Einwilligungen, Datenminimierung, die Umsetzung des Rechts auf Löschung, Exporte zur Datenübertragbarkeit und die Schwärzung von PII in Protokollen.

SOC 2 erfordert eine rollenbasierte Zugriffskontrolle, Verschlüsselung im Ruhezustand und bei der Übertragung, die Protokollierung von Sicherheitsereignissen und Zugriffsüberprüfungen. Automatisieren Sie Aufbewahrungsrichtlinien, um abgelaufene Daten zu löschen.

Häufig gestellte Fragen

Ist die Lektion „Einhaltung gesetzlicher Vorgaben: GDPR und SOC2“ kostenlos?

Ja — der vollständige Text von „Einhaltung gesetzlicher Vorgaben: GDPR und SOC2“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des AI Agents-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der AI Agents-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Einhaltung gesetzlicher Vorgaben: GDPR und SOC2“?

Datenminimierung, Einwilligungen nachverfolgen und Zugriffskontrolle für richtlinienkonforme Agenten. Du übst AI Agents mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um AI Agents zu starten?

Keine Vorkenntnisse erforderlich. AI Agents auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Einhaltung gesetzlicher Vorgaben: GDPR und SOC2“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser AI Agents-Lektion Code schreiben und ausführen?

Ja. Jede AI Agents-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Unveränderliche Aktionsprotokollierung für Agenten
  2. Richtliniendurchsetzung für Agentenaktionen
  3. Einhaltung gesetzlicher Vorgaben: GDPR und SOC2
  4. Freigabestufen mit Human-in-the-Loop
← Zurück zu AI Agents