Effizienter Datenschutz: Automatisierte Dokumentation von DSGVO Tasks durch Annotationsprozessoren mit Hilfe von KSP
Die DSGVO betrifft nahezu alle Unternehmen in den unterschiedlichsten Branchen, die mit personenbezogenen Daten arbeiten. Bei Verstößen droht das Risiko empfindlicher Strafen. Unterschiedliche Verwendungszwecke der personenbezogenen Daten führen zum Beispiel zu unterschiedlichen Lösch- und Aufbewahrungsfristen. Deshalb ist eine präzise und transparente Dokumentation unverzichtbar. Besonders herausfordernd wird diese jedoch, wenn der Überblick über Datenflüsse in Softwareprojekten fehlt, was nicht nur bei Legacy-Systemen häufig der Fall ist.
Ein Verzeichnis von Verarbeitungstätigkeiten ist essenziell, um die Datenverarbeitung im Unternehmen strukturiert zu verwalten und gegenüber Aufsichtsbehörden nachweisbar zu dokumentieren.
Manuelle Verfahren zur Erfassung und Pflege dieser Informationen sind zeitintensiv, fehleranfällig und schwierig aktuell zu halten. Insbesondere bei mehreren gleichzeitig laufenden Softwareversionen multipliziert sich die Komplexität und der Aufwand für technische und organisatorische Maßnahmen, um konsistente und nachvollziehbare Dokumentationsstände aufzubereiten.
Die automatisierte Erfassung DSGVO-relevanter Inhalte aus dem Quellcode vereinfacht die Dokumentation erheblich und spart Zeit, während sie die Einhaltung gesetzlicher Vorschriften zur Datenverarbeitung maßgeblich unterstützt. Mithilfe von selbst entwickelten Annotation-Prozessoren können DSGVO-relevante Inhalte direkt im Quellcode markiert, analysiert und mit Metadaten angereichert werden. Daraus lassen sich automatisiert Reports in CSV oder direkt in das Excel-Format generieren. Dieser Ansatz reduziert Fehler, optimiert den Prozess und ermöglicht eine zusätzliche Qualitätssicherung durch Code-Reviews im Git-Flow.
Der Annotation-Prozessor nutzt die annotierten Elemente, um personenbezogene Daten, Verwendungszwecke, Datenquellen und weitere Metadaten effizient zu dokumentieren. Die Methode minimiert den manuellen Aufwand und gewährleistet stets aktuelle, versionskonsistente und nachvollziehbare Berichte, die für Schutzmaßnahmen im Bereich Compliance von entscheidender Bedeutung sind. Dies unterstützt auch die Datenschutzbeauftragten, die für die Einhaltung der Datenschutzvorschriften verantwortlich sind.
Die Rolle und Verantwortung von KSP bei der Dokumentation von DSGVO-Tasks
Kotlin Symbol Processing (KSP) ist ein modernes, speziell für Kotlin entwickeltes Framework zur Erstellung von Annotation-Prozessoren. Es ermöglicht die effiziente Verarbeitung von annotierten Codefragmenten und bietet eine leistungsstarke Alternative zum Java-basierten Pendant KAPT.
KSP ist bereits in vielen gängigen Bibliotheken integriert (Room, Dagger Hilt, Moshi usw.) und wird unter anderem für die Codegenerierung oder der ORM-Integration verwendet. Es ermöglicht die Analyse von annotierten Codeelementen wie Klassen, Funktionen oder Attributen während der Kompilierung und eignet sich somit ebenfalls für die automatisierte Generierung von Reports anhand der analysierten Metainformationen.
Vorteile von KSP bei der Generierung von DSGVO-Reports:
- Effiziente Verarbeitung: KSP analysiert Kotlin-Symbole direkt und reduziert die Kompilierzeit signifikant, indem es den Overhead durch die Generierung von Java-Stubs vermeidet, der vergleichsweise in KAPT erforderlich ist.
- Flexible Annotationen: Benutzerdefinierte Annotationen auf Klassen- und Attributebene können spezifische Anforderungen der DSGVO abbilden.
- Konsistente und nachvollziehbare Reports: Die Generierung der DSGVO-Berichte erfolgt automatisiert für die jeweilige Projektversion, wodurch die Berichte versionskonsistent und bei Änderungen nachvollziehbar sind.
Effizienter Datenschutz mit durchdachtem Implementierungsworkflow
Die Umsetzung einer automatisierten Dokumentation der DSGVO durch den Auftragsverarbeiter mit Hilfe von KSP umfasst mehrere Schritte:
1. DSGVO-relevante Klassen annotieren:
- Definition spezifischer Annotationen auf Klassen- und Attributebene zur Kennzeichnung von DSGVO-relevanten Datenklassen und nicht DSGVO-relevanten Attributen.
- Metainformationen wie Verwendungszwecke, Datenquellen etc. als Klassenannotationsparameter definieren.
- Optional ist eine feingranulare Erfassung der Verwendungszwecke über eine Annotation auf der Ebene einzelner Datenklassenattribute möglich.

2. Entwicklung von Annotation-Prozessoren:
- Entwicklung eines Annotationsprozessors, der für annotierte Datenklassen die Annotationsparameter liest, relevante Metadaten extrahiert und nicht relevante DSGVO-Attribute in einer Datenklasse ignoriert.
3. Generierung von Reports:
- Automatische Erstellung von Ergebnisartefakten wie CSV- und Excel-Dateien auf der Grundlage der extrahierten Daten.
- Bestimmte Daten können mehrere Verwendungszwecke haben, was im Bericht entsprechend dargestellt werden sollte.
4. Integration in CI/CD-Pipelines:
- Restriktive Verwendung im Build: Verwendung von Konfigurationsparametern, um die Verwendung des Prozessors explizit zu erlauben.
- Automatisierung des Workflows, sodass die Berichte bei Bedarf oder z. B. bei jedem Release generiert und an geeigneter Stelle exportiert werden.

Herausforderungen bei der Verwendung von KSP für die DSGVO-Dokumentation
- Hohe Komplexität bei Multimodul-Projekten: Die Verarbeitung von Annotationen über mehrere Module hinweg erhöht die Komplexität aufgrund der Modulisolation beim Durchlaufen des Annotationsprozessors, da jeder Modul-Build unabhängig ist.
-
- Die verarbeiteten Symbole und generierten Dateien eines Moduls werden nicht direkt in ein anderes Modul übertragen.
- Initialer Implementierungsaufwand: Die erfolgreiche Realisierung über Annotationsprozessoren in Verbindung mit den Annotationen erfordert zunächst ein gut durchdachtes Konzept und einen nicht zu unterschätzenden Entwicklungsaufwand, vor allem wenn man noch wenig Erfahrung im Umgang mit Annotationsprozessoren hat.
- Umgang mit gemischten Java-/Kotlin-Projekten: KSP ist auf Kotlin spezialisiert. Java-spezifische APIs werden nicht direkt unterstützt.
Best Practices bei der Umsetzung des DSGVO-Konzepts mit KSP:
- Relevanz der zu verarbeiteten Dateien: Nur relevante Dateien bearbeiten, z. B. solche mit bestimmten Annotationen, um den Verarbeitungsprozess effizient zu halten.
- Metadaten sind bekannt: Gezielte Verwendung von Annotationsparametern, sofern deren Werte bereits zur Kompilierzeit bekannt sind.
- Vermeidung von ressourcenintensiven Funktionen: Reduzierung der Verwendung von Funktionen, die die Prozessleistung signifikant beeinträchtigen.
- Effiziente Symbolverarbeitung verwenden: Es wird empfohlen, die Resolver API von KSP zu verwenden, um Symbole wie Klassen und Funktionen schnell und effizient zu identifizieren. Eine frühzeitige Filterung hilft, die Anzahl der zu verarbeitenden Symbole gering zu halten.
-
- Reduzierung von kostenintensiven Operationen: Die Methode Resolver.getSymbolsWithAnnotation() sollte nur einmal pro Annotation verwendet werden, da sie sehr ressourcenintensiv ist.
- Ressourceneffizienter Einsatz: DSGVO-Annotationsprozessor nur bei neuen Softwareversionen oder beim Debugging laufen lassen

- Verwendung des Visitor-Patterns: Ermöglicht eine modulare und flexible Verarbeitung von Symbolen.

- Inkrementelle Kompilierung bei einer monolithischen Architektur: Reduziert die Verarbeitungszeit und macht den Prozess effizienter.
-
- Inkrementelle Kompilierung sollte jedoch nicht in Multimodul-Projekten aktiviert werden, da unveränderte Module bei einem erneuten Projektdurchlauf ignoriert würden.

- Verwendung einer globalen Buffer-File in einem Multimodulprojekt, um die Ergebnisse jedes Moduls zwischenzuspeichern:
-
- Temporäre Dateien wie Buffer Files werden am Ende des Prozesses gelöscht, um die Datenintegrität zu gewährleisten.
-
- Gradle verwendet eine rekursive Auflösung von Abhängigkeiten, so dass das App Root Modul immer als letztes Modul verarbeitet wird.

Am Ende des automatisierten DSGVO-Prozesses, der in der Regel im Sekundenbereich liegt, hat man wahlweise ein oder, wenn gewünscht, beide Ergebnisartefakte auf seinem Zielpfad abgelegt:
DSGVO-Export im Excelformat:

DSGVO-Export im CSV-Format:

Limitierung von KSP
- Keine Unterstützung von Java Stubs: Bei Projekten mit gemischtem Java-/Kotlin-Code kann es zu Problemen kommen.
- Kein Zugriff auf alle JVM-APIs: KSP kann nur mit Kotlin-spezifischen Symbolen umgehen, nicht mit Java-spezifischen
- Komplexe Multiplattform-Projekte: Kann bei Projekten mit JavaScript und nicht-Kotlin-nativem Code sehr komplex werden
Wenn (tiefgehende) Java-Interaktionen erforderlich sind, bleibt KAPT die bessere Wahl.
KSP-Prozessor testen und plattformagnostischer Einsatz
- Das Testen von KSP Annotation Prozessoren über Unit-Tests ist möglich, hierfür eignet sich z. B. die Bibliothek „kotlin-compile-testing“ von tschuchortdev.
- Über Konfigurationsparameter testen, ob ein Durchlauf für ein bestimmtes Modul erlaubt ist
- In einem Multimodulprojekt testen, dass das Rootmodul als einziges Modul für den aggregierten Export des Ergebnisartefakts verantwortlich ist und die anderen Module lediglich die Buffer-File erweitern

- KSP und damit die automatisierte DSGVO-Erfassung kann in Kotlin-basierten Backend-Systemen wie Spring Boot und Quarkus wiederverwendet werden
Automatisierte Datenschutz-Folgenabschätzung für hohe Datenschutzstandards
Ein besonders wichtiger Aspekt der Datenschutz-Compliance ist die Datenschutz-Folgenabschätzung (DSFA). Diese ist notwendig, wenn eine Verarbeitung personenbezogener Daten mit einem hohen Risiko für die Rechte und Freiheiten der Betroffenen verbunden ist. Durch die automatisierte Analyse und Dokumentation der Datenverarbeitung kann eine Datenschutz-Folgenabschätzung erheblich erleichtert werden. Die erstellten Reports helfen, Risiken frühzeitig zu erkennen und geeignete Maßnahmen zur Risikominderung umzusetzen.
Automatisiert statt manuell: Effiziente Dokumentation von Verarbeitungstätigkeiten
Die automatisierte Erfassung von DSGVO-relevanten Inhalten und die Generierung von Reports mithilfe von Annotationsprozessoren und KSP bietet eine effiziente und skalierbare Lösung. Sie reduziert den manuellen Aufwand, sorgt für nachvollziehbare Konsistenz zwischen den verschiedenen Versionen und erfüllt die regulatorischen Anforderungen. Unternehmen können von einer sorgfältigen Planung und der Anwendung von Best Practices profitieren, um den größtmöglichen Nutzen aus diesem Ansatz zu ziehen.
Bei adesso mobile wurde dieser bewährte Lösungsansatz bereits erfolgreich angewendet und ist feingranular auf die individuellen Bedürfnisse der verschiedenen Projekte anpassbar.