ユーザーの匿名化とstaff_action_logs

皆様、こんにちは。

ユーザーを匿名化しても、管理者画面の「admin/logs/staff_action_logs」で、新しい「匿名化」されたランダムなユーザー名とリンクされた古いユーザー名やメールアドレスが表示されてしまうのは不自然だと感じています。これは真の匿名化ではないように思え、このデータをログに永久に保持することは、EU の GDPR 法令に違反する恐れがあります。

また、こうした操作のログを保持することによるメリットはあまり感じられません。これらのログを完全に削除する方法をご教示いただけますでしょうか。また、Discourse のログを定期的にクリーンアップしたり、ログ記録ポリシーを制限したりすることも可能でしょうか。

どうぞよろしくお願いいたします。

こんにちは、

この設定 log anonymizer details のチェックを外すことで、この問題の再発を防ぐことができます。GDPR に準拠する場合は、これを無効にする必要があります。

ただし、ログからこれを削除することについては確信が持てません。

こんにちは、Ondrej さん。迅速なご回答をありがとうございます。

はい、このオプションは無効にしましたが、すでにログに記録されたアクションは引き続き表示されています。ログを削除するにはどうすればよいでしょうか?

上記の設定を有効にした後に古い行を削除するには、まず Rails コンソールで関連するユーザー履歴の行を確認してください:
UserHistory.where(action: 24)

上記のクエリが、ログからユーザーデータを完全に削除したいすべての行を網羅していることを確認したら、Rails コンソールで以下のコマンドを実行してください:
UserHistory.where(action: 24).update_all(details: nil, email: nil)

(「details」と「email」には個人情報が含まれており、上記のコマンドで消去されます。GDPR 準拠のために行を削除する必要はありませんが、削除したい場合は delete_all を使用してください。)

データベースコマンドを大規模に実行する場合は、自己責任で行い、事前にバックアップを取得してください。

上記のコマンド実行後、PostgreSQL で VACUUM を実行して、値が残っている死んだタプルも実際に削除することをお勧めします。

Hooksmith さん、ありがとうございます。ご提示いただいた解決策で問題が解決しました。ただし、以下のようなコマンドを定期的に実行しない理由が見当たりません:

UserHistory.delete_all

もしかしたら、週に一度実行するスクリプトを作成しようと思います。
お気をつけて。

その夜の方が良いかもしれません。なぜなら、スタッフの判断ミスにより、匿名化されたアクションを元に戻さなければならなかったことが何度かあるからです。完璧ではありませんが、管理者として、匿名化されたユーザーを復元する方法を見出しました。

このテーブルは、サイトのスタッフアクションログを埋めるために使用されるデータを提供します。サイトのスタッフメンバーの履歴を保持しておくことは有用です。少なくとも、スタッフメンバーによる設定変更に関連するサイトの問題のデバッグに役立ちます。