В главе 11.4.4 'Image upload in production' учебника Rails Майкла Хартла предлагается использовать Amazon Web Services S3 в качестве службы облачного хранилища. В примечании в нижней части страницы автор сам определяет этот раздел книги как «сложный», а также предполагает, что он «может быть пропущен без потери непрерывности».Политика AWS S3 IAM для разрешений на чтение и запись для одного ведра
Действительно, одной из самых сложных частей этого раздела является поиск подходящей политики IAM, которую можно подключить к пользователю IAM в AWS, чтобы предоставить пользователям права доступа на чтение и запись IAM для ведомого устройства S3.
Я обнаружил, что это в Stackoverflow является общей проблемой: см., Например, «Trying to set up Amazon's S3 bucket: 403 Forbidden error & setting permissions».
Фактически, Amazon Web Services's solution для приложений, которым необходимы права на чтение и запись на одном ведро S3, не работает, и пользователь, который пытается загрузить изображения, получает статус запрета на 403 с сервера AWS в Heroku.
Предопределенная политика «AmazonS3FullAccess» действительно работает, однако ее нельзя рассматривать как окончательное решение, поскольку предоставление слишком большого количества разрешений для пользователя IAM и, следовательно, для приложения не требуется, а также, я полагаю, может быть ошибкой безопасности.
В чем же правильная политика IAM?
вам не хватает ',' после 's3: PutObject', а существующие ограничения AWS также требуют« Принципала »и значения. – Jasper33
Спасибо, что заметили недостающую запятую. Я редактировал исходный код. Однако элемент «Принципал» имеет значение только в политике ведра, как указано в документации: http://amzn.to/2nJEu7q Политика IAM - это политика пользователя – Asarluhi