백업과 업로드를 위한 S3 액세스 키를 따로 설정해야 하나요?

백업과 업로드를 위해 서로 다른 Backblaze B2 버킷을 사용하려고 합니다. Discourse가 사용하는 두 버킷을 제외한 다른 버킷에 접근하지 않기를 원합니다.

Backblaze는 단일 버킷 또는 모든 버킷에 접근할 수 있는 애플리케이션 키를 생성할 수 있도록 지원합니다.

하지만 제가 파악한 바로는, Discourse는 업로드와 백업에 동일한 S3 자격 증명을 요구하므로, 이렇게 분리하는 것이 불가능한 것 같습니다.

제가 놓치고 있는 부분이 있을까요?

안녕하세요 :wave: 환영합니다 :slight_smile:

아마 이 주제가 도움이 될 것 같습니다

아쉽게도 아닙니다. Backblaze의 경우, 제시된 예시는 단순히 백업을 (공개적으로 읽을 수 있는) 업로드 버킷의 /backups 하위 디렉터리에 저장합니다. 이를 안전하게 만드는 것이 가능할지는 모르겠지만, 좋은 접근 방식이라고는 생각되지 않습니다.

그래서 저는 AWS에서 백업 버킷과 에셋 버킷에 대해 별도의 권한을 부여할 수 있도록 두 개의 역할을 가진 IAM 사용자를 설정할 수 있었습니다. 각 역할은 해당 버킷으로 범위가 제한되어 있으며 특정 권한을 가지고 있습니다. 백업 버킷은 읽기나 목록 표시 없이 PUT만 가능하도록 설정되어 있다고 생각됩니다. 반면 에셋 버킷은 모든 기능이 허용되고 있습니다.

하지만 이는 Backblaze 역할 지정과 관련된 문제인 것 같습니다. 맞습니까? 권한을 하나의 버킷 또는 모든 버킷에만 연결할 수 있는 것 같고, Discourse가 작동하는 방식은 동일한 권한 키를 공유하는 것 같습니다.

네. Backblaze의 애플리케이션 키 권한 처리 방식은 AWS보다 (훨씬) 단순한 것 같습니다.

Backblaze 권한 키는 소유자 계정의 단일 버킷 또는 모든 버킷에 대한 접근 권한을 갖는 것 같습니다.

따라서 Discourse의 S3 인터페이스는 AWS S3 버킷에는 적합하지만, Backblaze B2 버킷에는 그렇게 잘 맞지 않습니다.

AWS를 사용하거나 다른 Backblaze 계정을 만드는 것이 도움이 될 것 같습니다.

Backblaze에서도 동일한 문제가 발생하고 있습니다.
이 FAQ에 따르면 동일한 버킷을 사용할 수 있지만, 다른 경로를 사용해야 한다고 되어 있습니다. 그러나 현재 사용 중인 discourse 버전(3.4.0.beta3-dev)에서는 해당 설정을 저장하려고 하면 오류가 발생합니다.