如何仅限制CloudFront访问源?

3
如何仅限于 Amazon CloudFront 访问源?

enter image description here


根据您的使用情况,一个简单的存储桶策略可能就足够了(即只允许 CloudFront 发布获取对象)。 - mewa
请参考以下链接获取有关如何提出好问题的提示:如何提出一个好问题? - John Rotenstein
1个回答

5
创建一个带有秘密值的自定义源头标头,并将其添加到CloudFront中的源配置中。
修改您的源服务器配置以在没有此秘密值的请求到来时引发错误。
这是CloudFront支持自定义来源标头的原因之一。
如果您将自定义来源配置为仅响应包含自定义标头的请求,则可以防止用户绕过CloudFront并直接向您的源提交请求。请参考:https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/forward-custom-headers.html

你是说像这个apache的实现吗:https://dev59.com/TqDha4cB1Zd3GeqP-RsI#42866572? - Taz
1
是的,看起来很有前途。这里的^$看起来像是一个空字符串正则表达式,所以你需要寻找更像RewriteCond %{HTTP:X-SecretHeader} !^SecretValueGoesHere$这样的内容,但一定要彻底测试。 - Michael - sqlbot
您还可以使用Amazon Web ACL来创建一个简单的规则,这样您就不必更改源服务器代码。 - Falco
@Falco,问题中的截图显示这是一个自定义起点,可能在AWS内部,也可能不在。在这种情况下,“Amazon Web ACL”是什么? - Michael - sqlbot
@Michael-sqlbot "Amazon Web ACL" 是 AWS 的一项服务,您可以创建自定义规则来过滤负载均衡器、实例等的请求。- 因此,如果您的设置是这样的:Cloudfront - AWS 负载均衡器 - 自定义源 - 您可以在负载均衡器上创建一个 Web ACL 规则,检查标头并阻止请求(如果标头不存在)。我正在使用这个解决方案运行一个实时服务。通过这种方式,秘密只在 AWS 控制台上为 2 个服务(cloudfront 和 Web ACL)配置,而不是其他地方。 - Falco
1
@Falco 噢,好的,没问题... 在 AWS WAF 中附加到 ALB 的 Web ACL 可以解决这个问题。 - Michael - sqlbot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接