Zum Inhalt

DSGVO-Hinweise

Das Plugin verarbeitet personenbezogene Daten der Admin-User deines Shopware-Backoffices. Diese Seite fasst zusammen, was du DSGVO-konform regeln solltest.

Was wird verarbeitet?

Datenkategorie Erhebung Quelle
User-ID + Username immer aus Shopware-Admin-Session
Zeitstempel (created_at) immer Server-Uhr beim Logging-Ereignis
IP-Adresse nur wenn captureIpAddress = true aus Request::getClientIp()
User-Agent nur wenn captureUserAgent = true aus Request-Header User-Agent
Diff (Vorher/Nachher) immer aus DAL-Write-Event, sensitive Felder maskiert
Entity-Label immer menschenlesbarer Name der bearbeiteten Entität (z. B. Produktname, Kundenname)
Auch indirekte personenbezogene Daten

Das diff-Feld kann personenbezogene Daten enthalten — z. B. wenn ein Admin eine Kundenadresse bearbeitet, steht im Diff der alte und neue Vor-/Nachname/Adresse des Kunden (nicht des Admins). Dieses Datum unterliegt der DSGVO, weil der Admin im Auftrag des Verantwortlichen handelt.

Rechtsgrundlage

Typische Rechtsgrundlagen für den Betrieb des Plugins:

  • Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse) — Nachvollziehbarkeit von Admin-Aktionen ist berechtigtes Interesse des Verantwortlichen (Audit, Forensik, Compliance)
  • Art. 6 Abs. 1 lit. c DSGVO (rechtliche Verpflichtung) — bei expliziten Audit-Vorgaben (PCI-DSS, ISO 27001, BSI-Grundschutz)
  • Art. 88 DSGVO i. V. m. § 26 BDSG (Beschäftigtendatenschutz) — wenn Admin-User Beschäftigte sind

Empfohlenes Vorgehen vor Aktivierung

1. Verarbeitungsverzeichnis ergänzen (Art. 30 DSGVO)

In dein Verzeichnis aller Verarbeitungstätigkeiten einen neuen Eintrag aufnehmen:

Verarbeitungstätigkeit: Admin-Audit-Log
Zweck: Nachvollziehbarkeit, Forensik, Compliance
Rechtsgrundlage: Art. 6 Abs. 1 lit. f DSGVO
Datenkategorien: User-ID, Username, Zeitstempel, Aktion, Entity-Diff
[falls aktiv:] IP-Adresse, User-Agent
Empfänger: nur intern berechtigte Admin-Rollen
Aufbewahrung: <X> Tage (Default 365)
Löschmechanismus: automatisierter Scheduled Task

2. Admin-User informieren (Art. 13 DSGVO)

Beschäftigte / Admin-User vor Aktivierung schriftlich informieren:

  • Welche Daten werden erfasst?
  • Zu welchem Zweck?
  • Wie lange werden sie aufbewahrt?
  • Wer hat Zugriff (nur Rollen mit kommora_activity_log:read)?
  • Welche Rechte haben sie (Auskunft, Berichtigung, Löschung — wobei Löschung wegen Audit-Zwecks i. d. R. nicht durchsetzbar)?
Praktisches Onboarding

Pack die Information in dein Mitarbeiter-Onboarding-Dokument oder einen Aushang am Arbeitsplatz. Eine kurze E-Mail mit Bestätigungs-Antwort ist auch eine Möglichkeit.

3. Betriebsrat einbeziehen (§ 87 Abs. 1 Nr. 6 BetrVG)

Wenn dein Unternehmen einen Betriebsrat hat und das Plugin nicht nur in kleiner Tester-Runde, sondern dauerhaft betrieben wird: mitbestimmungspflichtig. Begründung: das Plugin ist eine „technische Einrichtung zur Verhaltens- und Leistungskontrolle".

Praktisches Vorgehen: Betriebsrat-Vorlage erstellen mit:

  • Zweck
  • Aufbewahrungsfrist
  • Zugriffsberechtigte
  • Auswertungs-Regeln (z. B. „nur bei konkretem Verdacht oder Audit, nicht zur Routine-Performance-Kontrolle")

4. Aufbewahrungsfrist angemessen wählen

Default 365 Tage. Empfehlung je nach Use Case:

Use Case Empfohlene Frist
Reines Forensik-/Debugging-Tool 90 Tage
Standard-Compliance 365 Tage
PCI-DSS-Audit-Pflicht 365–730 Tage
Spezielle Branchenvorgaben nach Vorgabe (z. B. Finanzbranche bis 10 Jahre)

Niemals: ewig aufbewahren. Das verstößt gegen den Grundsatz der Speicherbegrenzung (Art. 5 Abs. 1 lit. e DSGVO).

5. IP- und User-Agent-Erfassung bewusst entscheiden

Default: aus. Aktivieren nur, wenn dokumentierter Grund:

  • konkrete Audit-Anforderung (z. B. „IP-Erfassung bei Login-Versuchen zur Brute-Force-Erkennung")
  • forensische Notwendigkeit nach Sicherheitsvorfall

Wenn aktiviert: die Aktivierung im Verarbeitungsverzeichnis dokumentieren und im Datenschutz-Hinweis nennen.

Was passiert bei Auskunfts-/Löschungs-Anfragen?

Auskunfts-Anfrage eines Admin-Users (Art. 15 DSGVO)

Der User darf wissen, was über ihn protokolliert wird. Vorgehen:

  1. Im Modul nach actor_username = <username> filtern
  2. Zeitraum-Filter anwenden (Auskunfts-Anspruch typischerweise begrenzt auf 1-2 Jahre)
  3. CSV-Export → an den User aushändigen

Löschungs-Anfrage (Art. 17 DSGVO)

Die Löschung von Audit-Log-Einträgen ist i. d. R. nicht durchsetzbar, weil ein berechtigtes Interesse des Verantwortlichen (Audit, Compliance) typischerweise überwiegt. Dokumentiere die Ablehnung mit Begründung.

Ausnahme: wenn der User explizit Beschäftigter war und das Beschäftigungsverhältnis endet, kann eine Anonymisierung (nicht Löschung) angemessen sein:

-- Beispiel: Username + IP aller alten Einträge eines ausgeschiedenen Users anonymisieren
UPDATE kommora_activity_log
SET actor_username = 'ANONYMIZED', ip_address = NULL, user_agent = NULL
WHERE actor_user_id = ?

Anfrage eines Kunden zu seinen Daten im diff

Wenn ein Kunde (Storefront-Nutzer) wissen will, ob/wie Admin-User seine Daten bearbeitet haben:

  1. Im Modul nach entity_name IN ('customer', 'customer_address') und entity_id = <customer-uuid> filtern
  2. CSV-Export → an den Kunden aushändigen (Pflicht, weil das diff personenbezogene Daten des Kunden enthält)

Sicherheits-Maßnahmen technisch

  • ACL-Permission kommora_activity_log:read — nur explizit berechtigte Rollen sehen Logs
  • Sensitive-Felder-Maskierung — Passwörter, Tokens, API-Keys werden automatisch als *** gespeichert
  • Truncation — Strings > 2000 Zeichen und Arrays > 4 KB werden gekürzt, um DB-Aufblähung zu vermeiden
  • No-Op-Filter — Updates ohne tatsächliche Änderung erzeugen keinen Eintrag
  • Datenbank-Tabelle im selben Datenraum wie Shopware-Daten — keine Cross-System-Datentransfers, keine Drittanbieter
  • Keine Telemetrie an Kommora oder Dritte — alles bleibt in deinem Shop

Auftragsverarbeitungsvertrag

Wenn dein Shopware auf einer fremden Infrastruktur läuft (Managed-Hoster, Cloud), prüfe deinen Auftragsverarbeitungs-Vertrag (AVV) mit dem Hoster — das Audit-Log liegt in der Shopware-DB und ist damit Teil des AVV-Scopes.

Kommora selbst hat keinen Zugriff auf deine Log-Daten — das Plugin schickt nichts nach außen.

Weiter