安全/匿名化された方法でローカルインスタンスにバックアップを復元する

本番のフォーラムを壊すリスクを避けるため、ローカル環境でプラグインやテーマなどを少し実験したいと考えています。しかし、本番環境と似た状態をローカルで構築するのは大変なので、バックアップをローカルインスタンスにそのまま復元できれば理想的です。

ただ、ローカルインスタンスから本番のユーザーにメールが送信されてしまうなどのリスクを避けるためには、どのように対応すべきでしょうか?また、私が気づいていない落とし穴などはありますか?

バックアップ内のすべてのユーザーデータを匿名化(少なくともメールアドレスの削除など)する方法はありますか?あるいは、ユーザーデータのみを除外して他をすべて復元する方法はあるでしょうか?

スタッフ以外のすべてのユーザーを匿名化するには、Rails コンソールから以下を実行してください:

acting_user = User.find(-1)
User.all.each do |u|
  next if u.staff?
  user = UserAnonymizer.new(u, acting_user).make_anonymous
end

すべての送信メールを無効にする方が簡単ではありませんか?それはグローバルなサイト設定です。

はい、おそらくこの設定を変更する方が簡単でしょう。ただし、バックアップ復元時にはすべての設定が上書きされるため、復元完了からメール送信無効化までの間に何通かのメールが送信されてしまう可能性があります。ただし、バックアップ時にソースインスタンス側でもメール送信が無効化されていた場合は例外です。


余談ですが、ローカルの Docker 開発環境ではなく、別のサーバーとドメインを使用する方がよいと気づきました。

バックアップ復元は app.yml には影響しないと理解していますが、テストサーバーの app.yml に SMTP 設定を入力しなければ、メールが送信されることはないのでしょうか?

CCPA など多くの法律において、匿名化されていない本番データを開発およびテスト環境で使用することは、不正な処理とみなされます。バグを含む可能性のあるシステムや、ラップトップ上にデータベースを保持しているシステム、または権限のない人物がアクセスできるシステムでは、データ漏洩のリスクが高まります。

いいえ、リストア操作中は Sidekiq が一時停止されるため、そのようなことはありません。

はい、でも私が言いたいのは、リストア操作中ではなく、リストア完了後(私の理解では、その後すべてのプロセスが即座に再開されるはずですが)で、メール送信を無効にするためにこの設定を変更する前のことです。

申し訳ありません、私の回答は確かに不十分でした。Discourse のバックアップを復元すると、復元操作の一環として送信メールが自動的に無効になります。復元後に明示的に有効にする必要があります。

POP ポーリングが設定されている場合は、手動で無効化する必要があります。そうしないと、テストインスタンスが本番インスタンスとは別に受信メールの処理を開始する可能性があります。

ありがとうございます :slight_smile: 私はおそらく別のポーリングモードを使用しています。詳細は Configure direct-delivery incoming email for self-hosted sites with Mail-Receiver をご覧ください。

無効にすべきもう一つの設定は、robots.txt でのインデックス許可です。

また、Restrict access to your Discourse site with HTTP Basic Authentication も追加しました。

管理者には、送信メールを有効にするようリマインドするメッセージが表示されますか?

はい、ページ上部の警告のことです。