edu-sharing documentation

GDPR/DSGVO-Datenexport

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

  1. Die Anfrage wird mit dem Status REQUESTED in eine Verarbeitungswarte- schlange eingereiht.

  2. Der geplante Job übernimmt sie, setzt sie auf RUNNING und stellt den Export zusammen.

  3. 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

enabled

false

Aktiviert die Funktion und den zugehörigen Hintergrund-Verarbeitungsjob.

cronExpression

Cron[0 * * * * ?]

Zeitplan des Export-Verarbeitungsjobs (Standard: jede Minute).

retentionPeriod

PT240H (ISO-8601, = 10 Tage)

Wie lange ein fertiggestellter Export vorgehalten wird, bevor er automatisch gelöscht wird.

metadataExport

true

Node-Metadaten (.json) in den Export einbeziehen.

binaryExport

true

Originaldateien und Vorschaubilder in den Export einbeziehen.

summaryExport

true

Den zusammenfassenden PDF-Bericht erzeugen.

fileName

dataprotectioninfo_edu-sharing

Basisname der resultierenden Datei (ein Datumspräfix yyMMdd_ sowie .zip / .pdf werden ergänzt).

templatePath

html/dataprotection/report.html

Thymeleaf-Vorlage, die zur Erstellung des zusammenfassenden PDF-Berichts verwendet wird.

links

http://edu-sharing.com

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=true und metadataExport=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=true fügt die .json-Metadatendateien sowie die Ordnerstruktur jedes Bereichs hinzu (home, collection, shared, feedback, comment, safe/home, safe/shared).

    • binaryExport=true fügt die Originaldateien und .png-Vorschaubilder hinzu.

    • summaryExport=true fügt den zusammenfassenden PDF-Bericht innerhalb des Archivs hinzu.

Hinweis: Bei metadataExport=false wird 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.