AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 920455
Accepted
burnersk
burnersk
Asked: 2018-07-12 04:18:23 +0800 CST2018-07-12 04:18:23 +0800 CST 2018-07-12 04:18:23 +0800 CST

如何创建符合 GDPR 的 HTTP 服务器访问日志,重点关注远程 IP 匿名化和 nginx?

  • 772

欧盟的通用数据保护条例 (GDPR) 和德国的 DSGVO 实施对于与个人相关的数据(例如 IP 地址)非常严格。然而,这个问题与 GDPR 无关,而是如何使用 nginx HTTP 访问日志来实施监管,同时保持在用户旅程中“识别”匿名用户的可能性(将用户旅程与其他用户旅程分隔)。

我目前的实现是,我根本不记录远程 IP 和端口。我清除了上游/代理/等的环境变量,并且简单的访问日志没有远程 IP 和端口信息。

现在我面临的问题是我需要遵循用户旅程的路径。我只是没有任何方法可以“识别”哪些请求在哪个用户旅程中。我想指出,我也不使用 cookie 等。

“识别”“匿名用户”的传统方法是查找远程 IP 和日期信息。在同一天,同一个远程 IP 很可能是同一个用户。但是,如上所述,我不记录远程 IP 和端口信息。我现在也不想这样。

我目前的做法是使用远程端口和请求日期对远程 IP 地址进行哈希处理。我将获得带有日志的日期信息,但没有远程端口,所以我无法 - 如果没有严重的暴力破解 - 恢复远程 IP,即与个人相关的数据。这种方法将有助于回馈一定程度的用户旅程识别,这对我有很大帮助。

完成这种方法的一般工作流程是:

  1. 请求被 nginx 接受,
  2. nginx 使用远程 IP、远程端口和当前日期(例如md5_hex("$remote_addr $remote_port $current_date"))执行哈希操作,并将哈希存储在新变量中(例如$remote_ip_anonymous),
  3. log_format 将具有 $remote_ip_anonymous 变量。

由于当前的日期盐,即使远程 IP 和远程端口相同,哈希也会改变。当远程端口改变时,它会改变。所以这对于 GDPR 或至少最低的数据安全类别应该没问题,而实际的远程 IP 将是 GDPR 的市长数据安全类别。

理论够了……我将如何实现这样的远程 IP 匿名化?我是否必须使用 nginx Perl 模块或 Lua 模块,或者是否有另一种(更快)方法来获取该哈希并将其存储到 nginx 变量中?

nginx
  • 1 1 个回答
  • 4476 Views

1 个回答

  • Voted
  1. Best Answer
    Jens Bradler
    2018-07-12T05:09:41+08:002018-07-12T05:09:41+08:00

    欧盟的通用数据保护条例 (GDPR) 是关于“在处理个人数据方面保护自然人以及与个人数据自由流动相关的规则”。这与如何破坏 IT 系统无关。最好的方法是冷静下来,看看在个人数据保护方面什么可以,什么不可以。

    Web 服务器处理浏览器/客户端的 IP 地址在技术上是必不可少的。如果没有这种能力,Web 服务器将无法将响应发送回浏览器/客户端。

    避免处理个人数据是没有选择的。(实际上当然有选择。例如TOR浏览器或使用匿名代理将是一个选项。但这必须由客户端完成。)

    关于您的网络服务器和 GDPR 投诉设置,您应该:

    • 请注意,您的日志文件将在 7 天后被删除(巴伐利亚数据保护局的建议)
    • 在您的网站隐私声明中包含 IP 地址和其他收集的私人数据(例如浏览器识别字符串)
    • 启用 HTTPS 并将所有 HTTP 流量重定向到 HTTPS(甚至使用 HSTS)
    • 注意设置安全服务器(请参阅2017 年强化新服务器的最佳实践)

    但是,在 Nginx 中有适当的匿名 IP 日志记录方法。我不会推荐它,但它有效。

    如何在 7 天后删除日志文件:

    使用已安装的服务日志轮换,您必须按如下方式更改 Nginx 配置文件...

    vim /etc/logrotate.d/nginx

    /var/log/nginx/*.log {
        daily
        missingok
        rotate 7
        compress
        delaycompress
        notifempty
        create 0640 www-data adm
        sharedscripts
        prerotate
                if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
                        run-parts /etc/logrotate.d/httpd-prerotate; \
                fi \
        endscript
        postrotate
                invoke-rc.d nginx rotate >/dev/null 2>&1
        endscript
    }
    
    • 3

相关问题

  • Gzip 与反向代理缓存

  • nginx 作为代理的行为

  • Nginx 学习资源 [关闭]

  • 提供 70,000 个静态文件 (jpg) 的最佳方式?

  • 在 Apache、LightTPD 和 Nginx Web 服务器上提供 PHP 5.x 应用程序的现状?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve