AWS Политика корзины S3 Deny + Open With Signed URL - PullRequest
0 голосов
/ 04 августа 2020

У меня есть корзина publi c S3, и я хочу, чтобы все файлы в папкеA были доступны через подписанный URL-адрес, но оставались общедоступными для доступа к папкеB. 1004 *

Я пробовал вставить политику ниже в корзину. Однако после того, как я вставил политику, файлы были полностью недоступны для публичного доступа и с подписанным URL-адресом.

{
    "Version": "2012-10-17",
    "Id": "Policy1596533716384",
    "Statement": [
        {
            "Sid": "Stmt1596533705733",
            "Effect": "Deny",
            "Principal": "*",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectAcl"
            ],
            "Resource": "arn:aws:s3:::bucket/folderA/*"
        }
    ]
}

Открыть через подписанный URL

Какая конфигурация отсутствует в политике корзины?

Любое мнение приветствуется. Спасибо.

1 Ответ

0 голосов
/ 04 августа 2020

Все объекты в Amazon S3 по умолчанию частные .

Чтобы сделать содержимое folderB publi c, вам нужно добавить Bucket Policy аналогично:

{
    "Version": "2012-10-17",
    "Id": "Policy1596533716384",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": "arn:aws:s3:::bucket/folderB/*"
        }
    ]
}

Это делает все в folderB publi c.

Что касается того, чтобы сделать все в folderA доступным через предварительно подписанные URL-адреса, ваше приложение будет отвечать за создание предварительно подписанных URL . Обычно поток будет следующим:

  • Пользователь аутентифицируется в вашем приложении
  • Пользователь запрашивает доступ к частному объекту (в вашем случае это будет что-то в folderA)
  • Приложение проверит, имеет ли пользователь право доступа к этому объекту.
  • Если они имеют право на доступ к объекту, то приложение сгенерирует предварительно подписанный URL, который предоставляет ограниченный по времени доступ к частному объекту
  • . Приложение предоставит пользователю этот подписанный URL-адрес либо в виде ссылки, либо как часть страницы HTML (например, в теге <img>).
  • Браузер пользователя получит доступ к объекту через предоставленный URL. S3 будет проверять, что URL-адрес правильно подписан и что период времени не истек. Если это так, он предоставляет доступ к частному объекту.

Примечание: Когда вы нажимаете кнопку Открыть в консоли Amazon S3, консоль генерирует предварительно подписанный URL-адрес, позволяющий получить доступ к частному объекту. Этот предварительно подписанный URL-адрес создается при нажатии кнопки , и он будет работать только в том случае, если вашему IAM-пользователю был предоставлен доступ к объекту. То есть он использует разрешения человека, использующего консоль, для создания предварительно подписанного URL.

В вашей политике говорится: «Запретить всем доступ к folderA». Это включает в себя пользователя IAM, который использует консоль, поэтому он не может получить доступ к файлу даже при использовании предварительно подписанного URL-адреса. Предварительно подписанный URL-адрес имеет доступ только к объектам, доступным пользователю IAM, которые сгенерировали предварительно подписанный URL-адрес.

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