Мое веб-приложение позволяет разным пользователям загружать разные файлы. В настоящее время помещаем их все в одну корзину, например:
A12345-Something.zip
B67890-Lorem.zip
A12345 -... - файл загружен пользователем с идентификатором A12345. B67890 -... - это файл, загруженный пользователем с идентификатором B67890.
Это моя политика корзины S3:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicRead",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::xxxx/*"
}
]
}
Пока все в порядке, пользователь A12345 может загрузить zip-файл путем доступа к https://xxxx.s3.ap-south-1.amazonaws.com/A12345-Something.zip
Но интерфейс AWS выдает предупреждение, что этот сегмент является сегментом publi c, и настоятельно рекомендуется не устанавливать его на publi c.
Я не уверен, но это действительно очень неправильно, если приведенная выше политика позволяет кому-то перечислить все объекты всех пользователей в моем ведре, а затем обращаться к ним по одному.
Я думаю Мне нужна политика, которая разрешает чтение определенного объекта c только в том случае, если указан полный путь (при условии, что только этот пользователь будет иметь доступ к этому полному пути), но запрещает перечисление объектов?
Как должна политика как выглядит?