Ответ 1
Разрешения, которые вы видите в AWS Management Console, напрямую основаны на первоначальном и сравнительно простом Списки контроля доступа (ACL), доступные для S3, которые существенно дифференцировали разрешения READ и WRITE, см. Указание разрешения:
- READ - позволяет получателю перечислять объекты в ведре
- WRITE - позволяет получателю создавать, перезаписывать и удалять любой объект в Ковш
Эти ограничения были устранены путем добавления Bucket Policies (разрешения, применяемые на уровне ковша) и IAM Policies (разрешения, применяемые на уровне пользователя), и все три могут использоваться вместе (что может стать довольно сложным, как описано ниже), см. Контроль доступа для всего изображения.
В вашем случае использования, возможно, запрашивается соответствующая политика ведра, которую вы также добавляете непосредственно с консоли S3. Нажав на команду Добавить политику ведра, вы откроете редактор политик Bucket, который содержит ссылки на пару образцов, а также рекомендуемый AWS Policy Generator, который позволяет вам собирать политику, использующую ваш прецедент.
В противном случае простейшая форма может выглядеть так (пожалуйста, убедитесь, что вы скорректировали Принципал и Ресурс для ваших нужд):
{
"Statement": [
{
"Action": [
"s3:PutObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::<bucket_name>/<key_name>",
"Principal": {
"AWS": [
"*"
]
}
}
]
}
В зависимости от вашего варианта использования вы можете легко составить довольно сложные политики, объединив различные действия "Разрешить" и "Запретить" и т.д. - это, очевидно, также приведет к непреднамеренным разрешениям, поэтому надлежащее тестирование является ключевым, как обычно; соответственно, пожалуйста, позаботьтесь о последствиях при использовании Использование ACL и Bucket Policies Together или IAM и Bucket Policies Together.
Наконец, вы можете захотеть взглянуть на мой ответ на Проблемы с определением одного ведра в простой пользовательской политике AWS, которая затрагивает еще одну часто встречающуюся ошибку с политикой.