#amazon-web-services #amazon-s3 #amazon-cloudfront
#amazon-веб-сервисы #amazon-s3 #amazon-cloudfront
Вопрос:
Я хочу временно запретить пользователям доступ к моему статическому веб-сайту, размещенному в s3, который находится за дистрибутивом cloudfront.
Возможно ли это, и если да, то какие методы я мог бы использовать для реализации этого?
Я смог ограничить определенный доступ к моей корзине s3, используя условие в политике корзины, которое выглядит примерно так:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": "12.34.56.73/32"
}
}
}
]
}
который работает и ограничивает мою корзину s3 моим IP, однако это означает, что URL-адрес cloudfront получает 403 forbidden: access denied
.
При чтении документов AWS предлагается ограничить определенный доступ к ресурсам s3 с помощью Origin Access Identity
. Однако они указывают следующее:
Если вы не видите параметр Ограничить доступ к корзине, ваш источник Amazon S3 может быть настроен как конечная точка веб-сайта. В этой конфигурации сегменты S3 должны быть настроены с CloudFront в качестве пользовательских источников, и вы не можете использовать с ними идентификатор доступа origin.
что наводит меня на мысль, что я не могу использовать его в данном случае. В идеале я хотел бы заставить свой дистрибутив или политику корзины использовать определенную группу безопасности и контролировать ее таким образом, чтобы я мог легко добавлять / удалять утвержденный ip.
Комментарии:
1. Вы хотите просто запретить им прямой доступ к S3 или к обоим S3 и CloudFront?
2. @kichik оба в идеале
Ответ №1:
Вы можете разрешить IP-адреса CloudFront на CloudFront, поскольку конечная точка статического веб-сайта не поддерживает идентификацию исходного доступа. Вот список IP-адресов CloudFront:http://d7uri8nf7uskq.cloudfront.net/tools/list-cloudfront-ips
Ответ №2:
По этой ссылке также объясняется, как вы можете ограничить доступ через заголовки ссылокhttps://aws.amazon.com/premiumsupport/knowledge-center/cloudfront-serve-static-website /
Вы можете указать CloudFront добавлять заголовок к каждому запросу, а затем изменить свою политику корзины S3, чтобы требовать этот заголовок.
Например.
{
"Version":"2012-10-17",
"Id":"http referer policy example",
"Statement":[
{
"Sid":"Allow get requests originating from www.example.com and example.com.",
"Effect":"Allow",
"Principal":"*",
"Action":"s3:GetObject",
"Resource":"arn:aws:s3:::examplebucket/*",
"Condition":{
"StringLike":{"aws:Referer":"mysecretvalue"}
}
}
]
}