#amazon-web-services #amazon-s3 #amazon-iam #amazon-policy
#amazon-web-services #amazon-s3 #amazon-iam #amazon-политика
Вопрос:
Чтобы политика разрешала доступ к корзине и всему внутри нее, нужно ли устанавливать флажок «Любой» рядом с object (или просто разрешение доступа к корзине подразумевает доступ к ее содержимому)?
Я спрашиваю по двум причинам: i) чтобы политика имела доступ к объектам внутри корзины, но также и ii) чтобы подтвердить, что установка флажка «Любой» не дает доступа к объектам за пределами указанных корзин (ов) (это может быть плохо, если это так, и это не было реализовано) — Я предполагаю, что это, вероятно, не так, но лучше быть уверенным.
Ответ №1:
Нет, доступ к корзине (как указано в таком ресурсе политики, как arn:aws:s3:::mybucket
) не предоставляет никакого доступа API к объектам в этой корзине. Чтобы получить доступ к объектам, вам нужно будет разрешить действия API с таким ресурсом объекта, как arn:aws:s3:::mybucket/*
.
Показанное вами диалоговое окно IAM — это удобство, которое помогает вам создать политику JSON. В любое время вы можете перейти на вкладку JSON, чтобы просмотреть эквивалентную политику JSON.
В диалоговом окне есть 4 типа ресурсов: точка доступа, корзина, задание, объект. Они независимы друг от друга. Выбор определенного сегмента S3 в разделе «корзина» не оказывает никакого влияния на раздел «объект».
Итак, если вы укажете mybucket
в разделе «Корзина» и Any
в разделе «объект», ваша политика будет содержать что-то вроде этого:
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::*/*",
"arn:aws:s3:::mybucket"
]
}
Обратите особое внимание, что это разрешает все действия S3 ( s3:*
) как против корзины ( arn:aws:s3:::mybucket
), так и для всех объектов во всех корзинах ( arn:aws:s3:::*/*
).
Если вы хотите разрешить действия против mybucket
корзины и всех объектов в mybucket
ней, затем укажите mybucket
в разделе корзина, снимите флажок «Любой» в разделе объект и укажите arn:aws:s3:::mybucket/*
в разделе объект. Теперь ваша политика JSON будет выглядеть следующим образом:
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::mybucket/*",
"arn:aws:s3:::mybucket"
]
}