エクスポートされたレポートの添付ファイル(集計ページビューでテストしました)は、ファイルにプライベートACLがあるにもかかわらず、セキュアとしてマークされていません。これは、短いURLが署名されていないリンクを指していたため、ダウンロードを防いでいました。uploads:secure_upload_analyse_and_update rakeタスクを実行した後、セキュアとして正しくマークされました(他に3つの投稿/5つのアップロードも見つかりましたが、それらが何であるかを特定できませんでした)。
「エクスポートされたレポート添付ファイル」とは、具体的にどのようなものを指しているのか、説明していただけますか?スクリーンショットのことでしょうか?
これは奇妙ですね。セキュアなメディアサイトで試すと、アップロードは正しくセキュアとしてマークされます。もう一度試した後、アップロード記録をこのように表示してもらえますか?
#<Upload:0x0000556ae80c5208
id: 532362,
user_id: 1436,
original_filename: "consolidated-page-views-220318-031153-54.zip",
filesize: 480,
width: nil,
height: nil,
url: "//blah.zip",
created_at: Fri, 18 Mar 2022 03:11:53.556489000 UTC +00:00,
updated_at: Fri, 18 Mar 2022 03:11:53.842038000 UTC +00:00,
sha1: "12345",
origin: nil,
retain_hours: nil,
extension: "zip",
thumbnail_width: nil,
thumbnail_height: nil,
etag: "12345",
secure: true,
access_control_post_id: 377702,
original_sha1: "12345",
verification_status: 1,
animated: nil,
security_last_changed_at: Fri, 18 Mar 2022 03:11:53.836860000 UTC +00:00,
security_last_changed_reason: "login is required | source: post creator"
>
あなたのサイトではログインが必要ですか?
ログインは不要です
#<Upload:0x000055646d495a30
id: 62749,
user_id: 1,
original_filename: "web-crawlers-220318-032906-26.zip",
filesize: 3017,
width: nil,
height: nil,
url:
"//[nope].storage.googleapis.com/original/3X/6/7/679649f9c6d33541cf5f5d2c48c2ef514bde36a0.zip",
created_at: Fri, 18 Mar 2022 03:29:07.114686000 UTC +00:00,
updated_at: Fri, 18 Mar 2022 03:29:07.328592000 UTC +00:00,
sha1: "679649f9c6d33541cf5f5d2c48c2ef514bde36a0",
origin: nil,
retain_hours: nil,
extension: "zip",
thumbnail_width: nil,
thumbnail_height: nil,
etag: "54f0df6d95a84d04877aa20f238c3b1e",
secure: false,
access_control_post_id: 214238,
original_sha1: "5cc4f437505ae3a07bdd27bbe2653462de31db6d",
verification_status: 1,
animated: nil,
security_last_changed_at: Fri, 18 Mar 2022 03:29:07.112534000 UTC +00:00,
security_last_changed_reason: "no checks satisfied | source: upload creator"
>
当社の secure_media サイト設定は、AWS S3 に対してのみ検証されます。それが問題の原因である可能性があります。
これが奇妙な点です。
security_last_changed_reason: "no checks satisfied | source: upload creator"
私の場合は、サイト設定で login_required false および secure_media true を設定していると、レポートをエクスポートしてプライベートメッセージで送信すると、次のようになります。
security_last_changed_reason: "access control post dictates security | source: post creator"
これは、PM の投稿作成者がアップロードを添付しているため、その時点で secure: true に設定されるべきだからです。アップロードレコードに access_control_post_id がありますが、正しく機能していないようです。
Post.find(214238).with_secure_media? を実行するとどうなりますか?
それは影響しないと思います。これは ACL にのみ影響するはずです。
これは、潜在的に安全なすべてのアップロードに適用されないのでしょうか?プライベートトピックやその他のPMで行われた投稿にはこの問題がないことを考えると、確信が持てません。
=> true
うーん…ここで何が起こったのかわかりません
奇妙なことに、エクスポートジョブから呼び出される PostCreator の中にブレークポイントを追加すると、最初はアップロードに関してあなたと同じような結果が得られます。
secure: false,
access_control_post_id: 67115,
...
security_last_changed_at: Fri, 18 Mar 2022 04:14:42.292485000 UTC +00:00,
security_last_changed_reason: "no checks satisfied | source: upload creator"
しかし、PostCreator によるセキュアステータスの更新が行われると、すべて問題なくなります。
secure: true,
access_control_post_id: 67115,
...
security_last_changed_at: Fri, 18 Mar 2022 04:14:55.645303000 UTC +00:00,
security_last_changed_reason: "access control post dictates security | source: post creator"
Discourse.store.external? はあなたの場合、true を返しますか?
def update_uploads_secure_status(source:)
if Discourse.store.external?
Jobs.enqueue(:update_post_uploads_secure_status, post_id: self.id, source: source)
end
end
はい、そのようです。Sidekiqで実行中またはスケジュールされたジョブが見当たらないため、失敗したか、実行されなかったかのどちらかだと推測します。
混乱しています
/logs ページに関連しそうなものはありますか? update_post_uploads_secure_status のサイドキックジョブが失敗またはエラーになっている以外に、これが起こる方法はないようです。
いくつかのエラーがありましたが、すべてCleanUpUploadsジョブに関連していました。さらに調査したところ、ジョブは実行されなかったようです(過去2日間で失敗したジョブはありませんでした)。
申し訳ありませんが、これを再現できないため、現時点ではこれ以上できることはあまりありません。
