내보낸 보고서 첨부파일(통합 페이지 뷰로 테스트)은 파일에 사설 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를 사용하고 있는데, 보고서를 내보내면 PM으로 나에게 전달될 때 다음과 같은 메시지가 표시됩니다:
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 (export job에서 호출됨) 안에 브레이크포인트를 추가하면 업로드에 대해 처음에는 당신과 비슷한 결과가 나옵니다:
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 상태 업데이트가 발생하는 순간부터는 모든 것이 정상입니다:
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라는 sidekiq 작업이 실패하거나 어떤 방식으로든 에러를 내고 있을 때뿐인 것 같습니다.
오류가 몇 개 발생했지만, 모두 CleanUpUploads 작업과 관련이 있었습니다. 추가 조사 결과, 해당 작업이 실행된 적이 없는 것으로 보입니다(최근 2일 동안 실패한 작업이 없었음).
죄송합니다. 이 문제를 재현할 수 없으므로, 당분간 더 이상 진행할 수 있는 조치가 많지 않습니다.
