Как создать журнал доступа HTTP-сервера, совместимый с GDPR, с упором на удаленную анонимность IP и nginx?

Общее положение ЕС о защите данных (GDPR) и внедрение DSGVO в Германии очень строги, когда речь идет об индивидуальных данных (таких как IP-адреса). Однако этот вопрос не о GDPR, а о том, как реализовать регулирование с помощью журнала HTTP-доступа nginx, сохраняя при этом возможность "идентифицировать" анонимного пользователя в пути пользователя (чтобы ограничить путь пользователя из других).

Моя текущая реализация заключается в том, что я вообще не записываю удаленный IP и порт. Я удалил переменные окружения для upstreams / прокси / и т.д., и просто не имеет удаленного IP-адреса и информации о портах с журналами доступа.

Теперь я сталкиваюсь с проблемой, что мне нужно идти по пути пользователя. У меня просто нет никакого способа "определить", какие запросы находятся в пределах какого пути пользователя. Я хочу отметить, что я также не использую куки и т. Д.

Устаревший подход к "идентификации" "анонимного пользователя" заключается в поиске удаленного 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? Нужно ли использовать модуль Perl nginx или модуль Lua, или есть другой (более быстрый) способ получить этот хэш и сохранить его в переменной nginx?

1 ответ

Решение

Общее положение ЕС о защите данных (GDPR) касается "защиты физических лиц в отношении обработки личных данных и правил, касающихся свободного перемещения личных данных". Дело не в том, как саботировать ИТ-системы. Лучший подход - это успокоиться и посмотреть, что в порядке, а что нет в отношении защиты личных данных.

Технически важно, чтобы веб-сервер обрабатывал IP-адрес браузера / клиента. Без этой возможности веб-сервер не сможет отправить ответ обратно браузеру / клиенту.

Избегать обработки персональных данных не вариант. (На самом деле, конечно, есть варианты. Например, браузер 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
}
Другие вопросы по тегам