Datenschutz + Notes: Reichweitenmessung dokumentieren
Punkt 5 beschreibt die anonyme Reichweitenmessung inkl. ASN-Einordnung; durchgaengig "anonymisierte IP-Adresse" und expliziter Hinweis, dass auch fuer die ASN-Bestimmung nie die volle IP verwendet wird. IPv6- Anonymisierung auf /32 (letzte 96 Bit) korrigiert. Notes: Migration der asn-Spalte (ALTER TABLE) und neue Env-Var KVER_GEOIP_ASN samt GeoLite2-Bereitstellung. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -57,6 +57,24 @@ Konfiguration über Umgebungsvariablen:
|
||||
|-------------|---------------------|----------------------|
|
||||
| `KVER_ADDR` | `:8080` | Listen-Adresse im Container |
|
||||
| `KVER_DB` | `/app/data/kver.db` | Pfad zur SQLite-Datei |
|
||||
| `KVER_GEOIP_ASN` | _(leer)_ | Pfad zur GeoLite2-ASN-`.mmdb`; leer = ASN-Auflösung aus |
|
||||
|
||||
## GeoLite2-ASN-Datenbank (optional)
|
||||
|
||||
Für die netzwerktopologische Einordnung der Impressions (Spalte `impression.asn`).
|
||||
Ohne diese DB läuft alles normal weiter, die Impressions haben dann nur kein ASN.
|
||||
|
||||
Die `GeoLite2-ASN.mmdb` gibt es kostenlos bei MaxMind (Konto + Lizenzschlüssel,
|
||||
monatliche Updates). Datei ins Daten-Volume legen und den Pfad setzen:
|
||||
|
||||
```sh
|
||||
podman unshare cp GeoLite2-ASN.mmdb \
|
||||
"$(podman volume inspect kver-data --format '{{.Mountpoint}}')/"
|
||||
```
|
||||
|
||||
Dann `KVER_GEOIP_ASN=/app/data/GeoLite2-ASN.mmdb` setzen. Die Datei wird beim Start
|
||||
einmalig gemappt; für aktualisierte Daten die Datei ersetzen und den Dienst neu
|
||||
starten.
|
||||
|
||||
## Bestehende Daten übernehmen
|
||||
|
||||
|
||||
@@ -97,3 +97,24 @@ ALTER TABLE entry ADD COLUMN deleted INTEGER NOT NULL DEFAULT 0;
|
||||
```
|
||||
|
||||
Bestehende Beiträge bleiben damit sichtbar (`deleted = 0`). Nur einmalig ausführen.
|
||||
|
||||
---
|
||||
|
||||
## `asn`-Spalte in `impression`
|
||||
|
||||
**Wann:** beim Deploy der ASN-Auswertung gegen eine bestehende `impression`-Tabelle.
|
||||
|
||||
**Hintergrund:** Pro Impression wird das autonome System (Netzbetreiber) gespeichert,
|
||||
aufgelöst aus der vollen Client-IP *vor* dem Maskieren (siehe `lookupASN`). Die Spalte
|
||||
liegt bewusst **nicht** im Primärschlüssel — pro `anon_ip` ist das ASN deterministisch,
|
||||
also entstehen keine Zeilen-Duplikate, und ein simples `ADD COLUMN` genügt (kein
|
||||
Tabellen-Rebuild). `CREATE TABLE IF NOT EXISTS` ergänzt die Spalte bei einer
|
||||
vorhandenen Tabelle nicht.
|
||||
|
||||
**Migration:**
|
||||
```sql
|
||||
ALTER TABLE impression ADD COLUMN asn TEXT NOT NULL DEFAULT '';
|
||||
```
|
||||
|
||||
Bestehende Zeilen haben damit kein ASN (`''`, in der Auswertung „(unbekannt)"). Nur
|
||||
einmalig ausführen.
|
||||
|
||||
@@ -69,7 +69,7 @@ E-Mail: <a>david@bernet.it</a>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>IP-Adresse (anonymisiert)</td>
|
||||
<td>Nutzungsstatistik</td>
|
||||
<td>Reichweitenmessung (Seitenaufrufe)</td>
|
||||
<td>Unbegrenzt</td>
|
||||
<td>Berechtigtes Interesse</td>
|
||||
</tr>
|
||||
@@ -135,15 +135,23 @@ E-Mail: <a>david@bernet.it</a>
|
||||
<em>Speicherdauer:</em> Maximal 24 Stunden
|
||||
</p>
|
||||
|
||||
<p><strong>5. Anonymisierte Nutzungsstatistik</strong><br><br>
|
||||
<p><strong>5. Anonymisierte Reichweitenmessung</strong><br><br>
|
||||
<em>Erfasste Daten:</em>
|
||||
<ul>
|
||||
<li>Anonymisierte IP-Adresse (IPv4: letzte 16 Bit entfernt, IPv6: letzte 80 Bit entfernt)</li>
|
||||
<li>Zugriffszeitpunkt</li>
|
||||
<li>Anonymisierte IP-Adresse (IPv4: letzte 16 Bit entfernt, IPv6: letzte 96 Bit entfernt)</li>
|
||||
<li>Zugriffstag (ohne Uhrzeit)</li>
|
||||
<li>Aufgerufene Seite</li>
|
||||
</ul>
|
||||
<em>Zweck:</em> Erfassung des Seitenwachstums und Auswertung der Nutzeraktivität<br>
|
||||
<em>Verarbeitung:</em>
|
||||
<ul>
|
||||
<li>Die IP-Adresse wird unmittelbar bei der Verarbeitung gekürzt; die vollständige Adresse wird zu keinem Zeitpunkt gespeichert oder weiterverwendet.</li>
|
||||
<li>Aus der bereits anonymisierten IP-Adresse wird zusätzlich der Netzbetreiber (das autonome System, z. B. „AS3320 Deutsche Telekom AG") bestimmt. Dies ist kein zusätzlich erhobenes Merkmal, sondern eine Einordnung der anonymisierten IP-Adresse anhand eines lokalen Datensatzes (MaxMind GeoLite2-ASN). Auch für diese Einordnung wird nicht die vollständige IP-Adresse herangezogen. Es findet keine Standortbestimmung statt.</li>
|
||||
<li>Die Auswertung erfolgt ausschließlich auf unserem Server. Die IP-Adresse wird zu keinem Zeitpunkt an Dritte übermittelt; insbesondere erfolgt keine Online-Abfrage bei MaxMind.</li>
|
||||
<li>Es werden ausschließlich aggregierte Zählwerte gespeichert (Aufrufe je Tag, anonymisiertem Netz, Seite und Netzbetreiber). Es kommen keine Cookies und keine sonstige Speicherung auf Ihrem Endgerät zum Einsatz.</li>
|
||||
</ul>
|
||||
<em>Zweck:</em> Erfassung des Seitenwachstums und der Reichweite (Seitenaufrufe)<br>
|
||||
<em>Rechtsgrundlage:</em> Berechtigtes Interesse (Art. 6 Abs. 1 lit. f DSGVO)<br>
|
||||
<em>Hinweis:</em> Durch die Anonymisierung ist keine Rückverfolgung auf einzelne Personen möglich
|
||||
<em>Hinweis:</em> Durch die Anonymisierung und Aggregation ist keine Rückverfolgung auf einzelne Personen möglich.
|
||||
</p>
|
||||
|
||||
<p><strong>6. Datenlöschung</strong><br><br>
|
||||
|
||||
Reference in New Issue
Block a user