使用旧日志文件上的匿名 IP 配置 NGINX 以符合 GDPR(= RGPD、DSGVO)

使用旧日志文件上的匿名 IP 配置 NGINX 以符合 GDPR(= RGPD、DSGVO)

欧洲通用数据保护条例法律(GDPR)旨在保护最终用户的隐私。除其他后果外,系统管理员有义务配置他们的系统,以便他们不会在不必要的长时间内存储 IP 地址,不会在未经同意的情况下存储 IP 地址,等等。这是因为 IP 地址被视为个人数据。

尽管如此,根据 GDRP,有充分的理由不是从一开始就匿名化 IP 地址。例如,需要采取措施保护系统免受攻击(例如,为了保护数据库中许多用户的个人数据)。例如,如果您的系统当前受到攻击,并且此攻击源自某个特定 IP 地址,则您需要能够阻止此 IP(可能只是暂时的)。您可能还希望能够检查攻击何时开始,即来自此 IP 的恶意请求何时开始。此外,您通常希望将日志文件保留更长时间,以便对其进行分析(如果它们不包含个人数据,这是完全可以的)。

因此,这些都是利益冲突。一个简单的折衷方案是,只在日志文件中存储原始 IP 地址一小段时间,在较旧的日志文件中匿名化 IP 地址,并且 – 当然 – 将这些事实告知您的用户/访问者(在您的网站隐私声明中)。

我该如何配置 NGINX 以实现 GDPR 合规性呢?不是从一开始就匿名化所有 IP 地址?目前存在一些关于立即/直接匿名化 IP 的讨论和解决方案(例如这里);但我该如何设置仅对旧日志文件进行匿名化

警告:我不是律师

答案1

可以轻松设置这种混合设置,以便拥有非匿名短期日志和匿名长期日志。诀窍是让 logrotate 轮换您的 NGINX 日志,并在轮换过程中将其匿名化。这还会将匿名化的(小)性能负担从繁忙的 Web 服务器转移到 logrotate 进程。

首先,你需要一个匿名访问日志文件的脚本。一个选项是匿名文件来自 Digitale Gesellschaft(前身为瑞士隐私基金会)。使用这种专用的外部工具比快速自制的脚本更有优势,因为它可以处理 IPv6 和 IPv4 地址等。但当然,您也可以使用自己的脚本,例如匿名化日志文件中的其他部分(例如,userId您的 Web 应用程序的 URL 参数)。

因此下载并安装脚本:

 cd /usr/local/bin
 wget https://raw.githubusercontent.com/DigitaleGesellschaft/Anonip/master/anonip.py
 chmod 755 anonip.py

然后创建或编辑/etc/logrotate.d/nginx文件,使其类似于以下内容:

/var/log/nginx/*.log {
    weekly
    missingok
    rotate 52
    maxage 365
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
    prerotate
        if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
            run-parts /etc/logrotate.d/httpd-prerotate; \
        fi \
    endscript
    postrotate
        /usr/sbin/invoke-rc.d nginx rotate >/dev/null 2>&1 ;
        /usr/local/bin/anonip.py < "$1".1 --output "$1".1.anon ;
        /bin/mv "$1".1.anon "$1".1 ;
    endscript
}

它基本上会保留一周的非匿名访问日志。每周一次,文件会轮换并匿名化。假设轮换后的文件具有后缀.1。它基本上会保留一年的匿名数据。当然,可以调整此设置以进行每日轮换等...

相关内容