Я хочу использовать отдельные бакеты Backblaze B2 для резервных копий и загрузок. Я не хочу, чтобы у Discourse был доступ к каким-либо бакетам, кроме двух, которые он использует.
Backblaze позволяет создавать ключи приложений для доступа либо к одному бакету, либо ко всем бакетам.
Но, насколько я понимаю, Discourse требует, чтобы для загрузок и резервных копий использовались одни и те же учётные данные S3, поэтому сделать это невозможно.
К сожалению, нет. Для Backblaze приведённый пример просто помещает резервные копии в подкаталог /backups ведра для загрузки (которое доступно для публичного чтения). Я уверен, что это можно защитить, но такой подход, похоже, не очень хорош.
Итак, мне удалось создать пользователя IAM с двумя ролями в AWS, которые обеспечивают раздельные права доступа для моих бакетов резервного копирования и активов. Каждая роль ограничена соответствующим бакетом и имеет конкретные разрешения. Я полагаю, что для резервного копирования разрешена только операция записи (put), без чтения или перечисления. В то же время бакет активов позволяет выполнять все операции.
Однако звучит так, будто проблема связана со спецификацией роли Backblaze — верно ли это? Похоже, что вы можете прикрепить разрешение только к одному бакету или ко всем сразу, а в Discourse используется общий набор ключей доступа для обоих бакетов?
У меня такая же проблема с Backblaze.
В этом FAQ указывается, что можно использовать одно и то же хранилище, но с разными путями, однако наша текущая версия Discourse (3.4.0.beta3-dev) выдаёт ошибку при попытке сохранить эту настройку.