Reboot Konzept C

Anonymisierung von potentiell personenbezogenen Daten

Dieses Konzept beschreibt, wie man durch die Anonymisierung von potentiell personenbezogenen Daten als privacy by design die Einschränkungen der DSGVO vermeidet. Und sie doch gleichzeitig berücksichtigt.

Reboot Konzept C: Anonymisierung der IP, Whitelisting anderer Elemente

Das Ziel muss hier sein, die Informationen soweit zu kappen, dass sie anonym bleiben, aber soweit zulassen, dass darauf basierend noch Entscheidungen getroffen werden können.

Stufen der Anonymisierung der IP

Die IP 192.168.1.42 kann unterschiedlich anonymisiert werden.

  • 192.168.1.0
  • 192.168.0.0
  • 192.0.0.0
  • 0.0.0.0

Bei IPv6 schaut es so aus:

  • 1111:2222:3333:4444:5555:6666:7777:8888
  • 1111:2222:3333:4444:5555:6666:7777::
  • 1111:2222:3333:4444:5555:6666::
  • 1111:2222:3333:4444::
  • 1111:2222:3333::
  • 1111:2222::

Je nach Auslegung genügt die Entfernung des letzten Blocks bei IPv4 und der letzten vier Blöcke bei IPv6

Whitelisting bei Query String User-Agent und Referrer

  • Query String: Der Query String wird nur auf bestimmten URLS, die ihn wirklich verwenden, erlaubt und validiert.
  • User-Agent: Die Information wird auf das Betriebssystem zusammengedampft.
  • Referer: Der Query String wird vom Referer entfernt.

Bsp. Nginx

map $status $loggable {
    ~^[4]   0;
    default 1;
}
map $remote_addr $remote_addr_anon {
    ~(?P<ip>\d+\.\d+\.\d+)\.    $ip.0;
    ~(?P<ip>[^:]+:[^:]+):       $ip::;
    default                     0.0.0.0;
}

# allowed URLs with QUERY_STRING
# all URLs with QUERY_STRING: drop QUERY_STRING
# URls without QUERY_STRING

map $request_uri $request_uri_anon {
    ~^(/landing.html\?gclid=\d+)$   $request_uri;
    ~^(/[^\?]+)\?(.*)$              $uri;
    ~^(/[^\s]+)$                    $uri;
}

map $http_referer $http_referer_anon {
    ~^([^\?]+)\?(.+)$   $1;
    default             "";
}

map $http_user_agent $http_user_agent_anon {
    ~(Windows)     "Mozilla/5.0 (Windows)";
    ~(Macintosh)   "Mozilla/5.0 (Macintosh)";
    ~(Linux)       "Mozilla/5.0 (Linux)";
    ~(iPhone)      "Mozilla/5.0 (iPhone)";
    ~(Android)     "Mozilla/5.0 (Android)";
    default        "Mozilla/5.0 (unknown)";
}

log_format anonym '$remote_addr_anon – $remote_user [$time_local] '
                       '"$request_method $request_uri_anon $server_protocol" $status $body_bytes_sent '
                       '"$http_referer_anon" "$http_user_agent_anon"';


error_log logs/error.log warn;
access_log /spool/logs/nginx-access.log anonym if=$loggable;