“Secure Media” + “Enable S3 Uploads” 옵션이 카테고리 로고를 깨뜨리는 것 같습니다.
최근 업로드된 문서를 사설 게시물에 접근 권한이 없는 사용자가 직접 URL 링크를 통해 열람/다운로드할 수 있다는 사실을 발견했습니다. Secure Media 기능을 사용하려면 먼저 S3 Uploads를 활성화해야 한다는 점을 이해하고 있었기 때문에, 먼저 S3 Uploads를 활성화한 뒤 Discourse 서버의 업로드 파일을 S3 버킷으로 수동 복사했습니다. 이후 Secure Media를 활성화하기 위해 다음 게시글을 따랐습니다:
https://meta.discourse.org/t/secure-media-uploads/meta/140017
해당 절차를 따라 /uploads/default/ 경로를 //bucketname-etc-etc/로 변경하기 위해 discourse remap을 수행해야 했습니다. remap 이후 rake posts:rebake를 실행했고, 전반적으로 모든 것이 정상적으로 보였습니다. Secure Media를 활성화하고 적절한 rake 및 remap 작업을 실행한 후에도 기타 모든 업로드(게시글 내 문서 및 이미지, 사이트 브랜딩 이미지 등)는 여전히 올바르게 표시되고 링크되었습니다. 사용자 아바타와 그룹 로고를 다시 업로드해야 했지만, 재업로드 후에는 모두 올바르게 표시되었고 예상대로 새로운 짧은 URL과 secure-media-uploads URL이 부여되었습니다.
카테고리 로고 이미지가 더 이상 표시되지 않는 것을 확인했습니다. 브라우저의 개발자 모드로 확인해 보니, 카테고리 로고 이미지를 다시 업로드할 때 올바른 secure-media-uploads URL이 생성되어 이미지가 올바르게 표시되었습니다. 그러나 "Save Category"를 클릭하면 카테고리 페이지가 새로고침되며 이미지 표시를 방지하기 위해 이미지에 대한 AWS S3 서명되지 않은(unsigned) URL로 직접 매핑을 시도하는 오류가 발생했습니다:
카테고리 로고 이미지를 표시하는 Discourse의 모든 페이지에서 secure-media-uploads URL 대신 AWS S3 서명되지 않은 URL로 이미지를 직접 매핑하려고 합니다.
임시 해결책으로, AWS S3의 각 카테고리 로고 이미지 객체를 지루하게 방문하여 권한을 Public Read로 변경해야 했습니다.
이러한 동작이 Chrome, Firefox, Microsoft Edge 브라우저에서 모두 존재하는 것을 확인했습니다. posts:rebake와 uploads:secure_upload_analyse_and_update rake 작업을 시도해 보았지만, 카테고리 로고에는 아무런 효과가 없는 것 같습니다. 이 잘못 매핑된 카테고리 로고 이미지 URL을 수정할 수 있는 다른 작업이 있을까요? 아니면 이것이 의도된 동작으로, 사설 게시물에 속하는 보안(비공개) 업로드를 제외한 모든 S3 업로드 객체가 Public Read여야 하는 걸까요?
