Automatisierte Dokumentation von DSGVO mit KSP

  • Frederick Klyk - adesso mobile
    Teamleiter App-Entwicklung, Software Architekt und Senior Software Engineer

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. 
Automatisierte DSGVO-Dokumentation | Feingranulare Erfassung der Verwendungszwecke über eine Annotation auf der Ebene einzelner Datenklassenattribute

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. 
Automatisierte DSGVO-Dokumentation | Automatisierung des Workflows

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
Automatisierte DSGVO-Dokumentation | DSGVO-Annotationsprozessor
  • Verwendung des Visitor-Patterns: Ermöglicht eine modulare und flexible Verarbeitung von Symbolen.
Automatisierte DSGVO-Dokumentation | Verwendung des Visitor-Patterns
  • 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. 
Automatisierte DSGVO-Dokumentation | Inkrementelle Kompilierung bei einer monolithischen Architektur
  • 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.
Automatisierte DSGVO-Dokumentation | Ablauf App Root Modul

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:

Automatisierte DSGVO-Dokumentation | DSGVO-Export im Excelformat

DSGVO-Export im CSV-Format:

Automatisierte DSGVO-Dokumentation | DSGVO-Export im CCV-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 
Automatisierte DSGVO-Dokumentation | Test Results werden angezeigt
  • 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. 

Mehr zum Thema IT-Sicherheit

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Bitte füllen Sie dieses Feld aus.
Bitte füllen Sie dieses Feld aus.
Bitte gib eine gültige E-Mail-Adresse ein.
Sie müssen den Bedingungen zustimmen, um fortzufahren.

×
Telefon

Sie sind auf der Suche nach einem Experten im Bereich App-Entwicklung? Wir freuen uns auf Ihre Nachricht!

+49 231 99953850
×