Как ограничить доступ моего веб-сайта S3 к указанным c доменам или IP-адресам? - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть веб-сайт stati c, размещенный в корзине S3. С сертификатом SSL на AWS, скажем, сайт https://myawssite.com/somefolder/. На какой-то другой странице, скажем, http://containerpage.com, у меня есть iframe, в который я помещаю

<iframe src="https://myawssite.com/somefolder?url=/content/x83822" frameborder="0" allowfullscreen></iframe>

. Я хочу разрешить показ содержимого только тогда, когда ссылка на myawssite.com на http://containerpage.com, но я не хочу разрешать просмотр контента, если кто-либо просто помещает https://myawssite.com/somefolder?url=/content/x8382 в браузер или помещает iframe на свою собственную веб-страницу (на веб-сайте, который не находится по адресу myawssite.com).

Предполагая, что containerpage.com находится на IP-адресе 5.33.253.12, я подумал, что мог бы сделать это с политикой корзины s3, например:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject*",
            "Resource": "arn:aws:s3:::mybucketname/*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceIp": "5.33.253.12/32"
                }
            }
        }
    ]
}

Это не работает. В идеале я хотел бы указать разрешенный домен (containerpage.com) вместо IP-адреса, но я даже не могу заставить работать IP-адрес.

Может кто-нибудь определить, что я делаю неправильно, или если весь подход не верен?

Заранее спасибо за любые предложения!

Ответы [ 2 ]

1 голос
/ 23 апреля 2020

Ограничение доступа на основе Referer не является безопасным. Это можно легко обойти. простой веб-поиск показывает множество методов для подделки поля referer.

Для более безопасного метода см. Этот ответ StackOverflow: Моя политика S3 Bucket применяется только к некоторым объектам

1 голос
/ 23 апреля 2020

Вы даете IP-адрес, который будет ссылаться на http://containerpage.com/*.

, и, как прокомментировал @marcin, вы должны использовать политику aws:refer.

, которая должна выглядеть следующим образом:

    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject*",
            "Resource": "arn:aws:s3:::mybucketname/*",
            "Condition": {
                "StringLike": {
                    "aws:Referer": "http://containerpage.com"
                }
            }
        }
    ]
}

См. Документы

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