web-dev-qa-db-ja.com

古いログファイルで匿名IPを使用してGDPR(= RGPD、DSGVO)に準拠するようにNGINXを構成する

欧州の一般データ保護規則法(GDPR)は、エンドユーザーのプライバシーを保護することを目的としています。他の多くの結果の中で、システム管理者は、したがって、同意なしなどではなく、不必要な長期間にわたってIPアドレスを保存しないようにシステムを構成する義務があります。これは、IPアドレスが個人データと見なされるためです。

それにもかかわらず、GDRPに準拠して、notでIPアドレスを最初から匿名化することには、十分な理由があります。たとえば、システムを攻撃から保護する手段が必要です(たとえば、データベース内の多くのユーザーの個人データを保護するため)。たとえば、現在システムが攻撃を受けており、この攻撃が特定の1つのIPアドレスから発生している場合、このIPを(おそらく一時的にのみ)ブロックできる必要があります。また、攻撃が開始されたとき、つまりこのIPからの不正な要求がいつ開始されたかを確認できるようにすることもできます。さらに、ログファイルを分析できるように、より長期間ログファイルを保持したいことがよくあります(個人データが含まれていない場合は問題ありません)。

したがって、これらは競合する利益です。単純な妥協策の1つは、元のIPアドレスをログファイルに短期間だけ保存し、古いログファイルでIPアドレスを匿名化し、そしてもちろん、これらの事実(Webサイト内)についてユーザー/訪問者に通知することです。プライバシー通知)。

このようなGDPR準拠のセットアップ用にNGINXを構成するには、どのようにすれば、最初からすべてのIPアドレスをnot匿名化できますか? IPを即時/直接匿名化するための議論と解決策があります(例: here );しかし、どうすれば古いログファイルのみにanonymizationを設定できますか

警告:IANAL

3
Mischa

このようなハイブリッド設定は、匿名化されていない短期ログと匿名化された長期ログを簡単に設定できます。その秘訣は、logrotateでNGINXログをローテーションさせ、ローテーションの過程でログを匿名化することです。これにより、匿名化の(小さな)パフォーマンス負担がビジーなWebサーバーからlogrotateプロセスに移行します。

まず、アクセスログファイルを匿名化するためのスクリプトが必要です。 1つのオプションは、Digitale Gesellschaft(旧Swiss Privacy Foundation)の anonip.py です。このような専用の外部ツールを使用すると、迅速に処理できるダーティな自作のスクリプトよりも優れています。 IPv6およびIPv4アドレスなど。ただし、もちろん、独自のスクリプトを追加で使用することもできます。たとえば、ログファイルの他の部分(WebアプリのURLパラメーターuserIdなど)を匿名化することもできます。

スクリプトをダウンロードしてインストールします。

 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週間保持するということです。週に1回、ファイルはローテーションされて匿名化されます。ローテーションされたファイルのサフィックスは.1であると想定されています。匿名化されたデータは基本的に1年間保持されます。もちろん、この設定を微調整して行うことができます。毎日のローテーションなど...

1
Mischa