Mit der Datenschutzfunktion kann ein Nutzer eine Kopie aller personenbezogenen Daten anfordern, die edu-sharing über ihn gespeichert hat – entsprechend dem DSGVO-Auskunftsrecht. Eine Anfrage wird asynchron im Hintergrund verarbeitet; sobald der Export fertig ist, wird der Nutzer per E-Mail benachrichtigt und kann ihn herunterladen.
Was die Funktion tut
Ein Nutzer (oder ein Administrator in dessen Namen) kann einen selbstständigen DSGVO-Datenexport anfordern. edu-sharing sammelt alle über diesen Nutzer gespeicherten Daten, verpackt sie und stellt sie zum Download bereit. Die Verarbeitung erfolgt im Hintergrund — die Anfrage wird sofort quittiert, und der eigentliche Export wird von einem geplanten Job zusammengestellt.
Was exportiert wird
Abhängig von der Betriebskonfiguration (siehe Teil B) enthält der Export:
-
Home-Verzeichnis — alle Ordner und Objekte im persönlichen Arbeitsbereich des Nutzers.
-
Sammlungen (Collections) — sowohl private als auch geteilte Sammlungen, die dem Nutzer gehören.
-
Geteilte Objekte — Objekte und Ordner, die dem Nutzer gehören und mit anderen geteilt sind.
-
Feedbacks — vom Nutzer eingereichte Feedback-Einträge.
-
Kommentare — vom Nutzer verfasste Kommentare.
-
Safe-Bereich — die entsprechenden Home- und geteilten Inhalte im geschützten "Safe"-Bereich.
Für jedes Objekt kann das Archiv Folgendes enthalten:
-
die Metadaten als
.json-Datei, -
die Originaldatei (Binärinhalt),
-
das Vorschaubild (
.png).
Zusätzlich wird ein zusammenfassender PDF-Bericht erstellt. Dieser listet die Stammdaten und Kontoinformationen des Nutzers auf, zum Beispiel:
-
Vorname, Nachname, Benutzername und etwaige sekundäre (lokale) IDs,
-
E-Mail-Adresse und Rolle,
-
Schule / Schulnummer, Medienzentren und Gruppenmitgliedschaften,
-
erster und letzter Login,
-
private und geteilte Sammlungen, Feedbacks und Kommentare,
-
eine Reihe von Informationslinks sowie das Exportdatum.
Ausgabeformate
Der Export wird in einer von zwei Formen bereitgestellt:
-
Vollständiges ZIP-Archiv — der komplette Datenexport (Metadaten, Binärdaten, Vorschaubilder) einschließlich des zusammenfassenden Berichts.
-
Nur PDF-Bericht — nur die zusammenfassende PDF-Datei, ohne das Dateiarchiv.
Welche Form erzeugt wird, hängt von der in Teil B beschriebenen Konfiguration ab.
Wie man einen Export anfordert
Der Export wird über die Anwendung ausgelöst, welche den REST-Endpunkt aufruft:
POST /iam/v1/people/{repository}/{person}/dataprotection
-
Verwenden Sie
-home-als{repository}für das Home-Repository und-me-als{person}für den aktuellen Nutzer. -
Um einen Export für einen anderen Nutzer anzufordern, sind Administratorrechte erforderlich.
Antworten:
-
200 OK — die Anfrage wurde akzeptiert (ein neuer Export wurde in die Warteschlange eingereiht).
-
409 Conflict — für diesen Nutzer wurde bereits ein Export angefordert oder läuft bereits; der aktuelle Warteschlangeneintrag wird zurückgegeben.
Was als Nächstes passiert
-
Die Anfrage wird mit dem Status REQUESTED in eine Verarbeitungswarte- schlange eingereiht.
-
Der geplante Job übernimmt sie, setzt sie auf RUNNING und stellt den Export zusammen.
-
Nach Abschluss wird der Eintrag auf FINISHED gesetzt, und der Nutzer erhält eine E-Mail mit einem Download-Link (nur, wenn das Konto über eine E-Mail-Adresse verfügt).
Der aktuelle Status und das resultierende Download-Objekt können jederzeit abgerufen werden mit:
GET /iam/v1/people/{repository}/{person}/dataprotection
Dies liefert den Status der Warteschlange und, sobald verfügbar, den Knoten des fertigen Exports. Solange kein fertiger Export existiert, antwortet der Endpunkt mit 404 Not Found.
Verfügbarkeitszeitraum
Ein fertiggestellter Export wird nur für einen begrenzten Aufbewahrungs- zeitraum vorgehalten und danach automatisch gelöscht (Standard: 10 Tage — siehe Teil B).
Wird ein neuer Export angefordert, nachdem ein vorheriger fertiggestellt wurde, löscht dies den alten Export und startet einen neuen. Solange eine Anfrage noch REQUESTED oder RUNNING ist, hat eine wiederholte Anfrage keine Wirkung (liefert 409).
Betrieb / Konfiguration
Aktivieren der Funktion
Der DSGVO-Datenexport wird im Block repository.dataprotection in edu-sharing.conf konfiguriert. Die verfügbaren Schlüssel und ihre Standardwerte sind in edu-sharing.reference.conf dokumentiert:
hocon
repository {
dataprotection: {
enabled: false
//retentionPeriod: "PT240H"
//metadataExport: true
//binaryExport: true
//summaryExport: true
//fileName: "dataprotectioninfo_edu-sharing"
//templatePath: "html/dataprotection/report.html"
//links: ["http://edu-sharing.com","http://edu-sharing.net"]
//cronExpression: "Cron[0 * * * * ?]"
}
}
Die Funktion ist standardmäßig deaktiviert. Durch Setzen von enabled: true wird der periodische Hintergrundjob registriert, der die Export-Warteschlange verarbeitet.
Voraussetzung: Datenbanktabelle
Die Warteschlange wird in der Datenbanktabelle edu_dataprotection_queue gespeichert. Das zugehörige Erstellungsskript dataprotection-queue.sql muss Teil der Startskripte sein (es ist in den Kernskripten von edu-sharing.reference.conf enthalten):
sql
CREATE TABLE edu_dataprotection_queue
(
"user" varchar(100) not null UNIQUE,
status varchar(100) not null,
requested timestamp not null,
node_id varchar(36),
finished timestamp
);
Konfigurationsreferenz
|
Schlüssel |
Standardwert |
Wirkung |
|---|---|---|
|
|
|
Aktiviert die Funktion und den zugehörigen Hintergrund-Verarbeitungsjob. |
|
|
|
Zeitplan des Export-Verarbeitungsjobs (Standard: jede Minute). |
|
|
|
Wie lange ein fertiggestellter Export vorgehalten wird, bevor er automatisch gelöscht wird. |
|
|
|
Node-Metadaten ( |
|
|
|
Originaldateien und Vorschaubilder in den Export einbeziehen. |
|
|
|
Den zusammenfassenden PDF-Bericht erzeugen. |
|
|
|
Basisname der resultierenden Datei (ein Datumspräfix |
|
|
|
Thymeleaf-Vorlage, die zur Erstellung des zusammenfassenden PDF-Berichts verwendet wird. |
|
|
|
Informative Links, die im PDF-Bericht angezeigt werden (kommagetrennte Liste). |
Wie die Flags das Ausgabeformat bestimmen
Die drei Export-Flags legen fest, was exportiert wird, und bestimmen zusammen, welches Format erzeugt wird:
-
summaryExport=trueundmetadataExport=false→ das Ergebnis ist ein einzelner PDF-Bericht (kein ZIP-Archiv). Dies ist der Modus "nur Bericht". -
Andernfalls → das Ergebnis ist ein ZIP-Archiv, dessen Inhalt von den Flags abhängt:
-
metadataExport=truefügt die.json-Metadatendateien sowie die Ordnerstruktur jedes Bereichs hinzu (home,collection,shared,feedback,comment,safe/home,safe/shared). -
binaryExport=truefügt die Originaldateien und.png-Vorschaubilder hinzu. -
summaryExport=truefügt den zusammenfassenden PDF-Bericht innerhalb des Archivs hinzu.
-
Hinweis: Bei
metadataExport=falsewird die Ordnerstruktur nicht aufgebaut, sodass die Binärdaten keinen Platz zum Ablegen haben — deshalb führt das Deaktivieren der Metadaten bei gleichzeitig aktivierter Zusammenfassung zum reinen PDF-Ergebnis.
Aufbewahrungsverhalten
Bei jedem Durchlauf prüft der Verarbeitungsjob alle FINISHED-Exporte. Wenn der Knoten eines fertiggestellten Exports älter ist als retentionPeriod, werden sowohl der Export-Knoten als auch der zugehörige Warteschlangeneintrag gelöscht. Dies verhindert, dass personenbezogene Daten länger als notwendig vorgehalten werden, und begrenzt den Speicherverbrauch.
Benachrichtigung
Wenn ein Export abgeschlossen ist, wird eine E-Mail an den Nutzer gesendet, unter Verwendung der gdpr-Mailvorlage. Sie enthält den Download-Link sowie den Aufbewahrungszeitraum (in Tagen). Es wird keine E-Mail versendet, wenn für das Nutzerkonto keine E-Mail-Adresse hinterlegt ist.
Speicher / Fußabdruck
-
Exporte werden in einem Arbeitsverzeichnis neben dem Content-Store zusammengestellt:
<contentstore>/../dataprotection. Zwischendateien dort werden entfernt, sobald der Export gespeichert wurde. -
Der fertiggestellte Export wird als Knoten im GDPR-Systemordner gespeichert (innerhalb von
Company Home / Edu_Sharing_System /) und für den exportierten Nutzer lesbar gemacht (Consumer-Berechtigung), sodass dieser ihn über den Link herunterladen kann.
Betriebshinweise und aktuelle Einschränkungen
-
Berichtssprache / Zeitzone sind derzeit fest eingestellt auf Deutsch (
Europe/Berlin,Locale.GERMANY), unabhängig vom Profil des Nutzers. -
Bewertungen (Ratings) sind noch nicht Teil des zusammenfassenden Berichts.
-
Der Verarbeitungsjob läuft gemäß dem konfigurierten
cronExpression; eine Verlängerung des Intervalls reduziert die Hintergrundlast, wenn Exporte selten sind.