![使用旧日志文件上的匿名 IP 配置 NGINX 以符合 GDPR(= RGPD、DSGVO)](https://linux22.com/image/741876/%E4%BD%BF%E7%94%A8%E6%97%A7%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6%E4%B8%8A%E7%9A%84%E5%8C%BF%E5%90%8D%20IP%20%E9%85%8D%E7%BD%AE%20NGINX%20%E4%BB%A5%E7%AC%A6%E5%90%88%20GDPR%EF%BC%88%3D%20RGPD%E3%80%81DSGVO%EF%BC%89.png)
欧洲通用数据保护条例法律(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
。它基本上会保留一年的匿名数据。当然,可以调整此设置以进行每日轮换等...