Как создать правильную политику корзины S3, чтобы разрешить доступ для чтения к файлу, только если они знают путь - PullRequest
1 голос
/ 12 июля 2020

Мое веб-приложение позволяет разным пользователям загружать разные файлы. В настоящее время помещаем их все в одну корзину, например:

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 только в том случае, если указан полный путь (при условии, что только этот пользователь будет иметь доступ к этому полному пути), но запрещает перечисление объектов?

Как должна политика как выглядит?

1 Ответ

1 голос
/ 12 июля 2020

Указанная вами политика позволяет кому-либо получать все объекты, что означает, что если у них есть путь, они могут получить этот файл публично в браузере.

Разрешение ListObjects будет разрешением, которое позволяет людям чтобы перечислить все объекты в вашей корзине S3, это не включено.

Если только указанные c пользователи должны иметь доступ к этому контенту, вам следует взглянуть на использование подписанных URL-адресов вместо этого, это помешает кому-либо угадать или каким-либо образом получить доступ к ссылке, которую вы не хотите, чтобы он имел. утечка больших объемов данных частных компаний.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...