Чтобы CloudFront работал с статическими конечными точками веб-сайта S3, AWS обычно рекомендует иметь публичные разрешения на чтение для корзины S3.Не существует собственного способа обеспечения безопасности между CloudFront и статической конечной точкой веб-сайта S3, однако в этом случае мы можем использовать обходной путь для удовлетворения вашего варианта использования.
По умолчанию все ресурсы S3 являются частными, поэтому только учетная запись AWS, создавшая ресурсы, может получить к ним доступ.Чтобы разрешить доступ для чтения к этим объектам с вашего веб-сайта, вы можете добавить политику сегментов, которая разрешает s3: GetObject разрешение с условием, используя ключ aws: referer, что запрос get должен исходить от определенных веб-страниц.Следующая политика задает условие StringLike с ключом условия aws: Referer.
{
"Version": "2012-10-17",
"Id": "http referer policy example",
"Statement": [
{
"Sid": "Allow get requests referred by www.example.com and example.com.",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::examplebucket/*",
"Condition": {
"StringLike": {"aws:Referer": ["http://www.example.com/*","http://example.com/*"]}
}
},
{
"Sid": "Explicit deny to ensure requests are allowed only from specific referer.",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::examplebucket/*",
"Condition": {
"StringNotLike": {"aws:Referer": ["http://www.example.com/*","http://example.com/*"]}
}
}
]
}