【发布时间】:2020-01-18 00:40:52
【问题描述】:
我有一个应用程序,其中客户端通过 CloudFront 分配托管在 S3 上。 API 位于带有 WAF 的 API 网关后面,客户端向 API 发出 http 请求以获取和发布数据。
我想限制对 API 的访问,使其只能从客户端获得,并且当有人尝试直接访问 API 时它应该返回错误。
诀窍在于 API 向第三方公开,因此我不能使用 API Gateway 授权方,因为它们必须具有直接访问权限。
我在 CloudFront 中设置了一个自定义原始标头 (My-Secret-Header: 1234567890qwertyuiop),我认为我可以在 WAF 中创建一个规则以允许使用此标头的请求(加上基于其他标准的第 3 方,但该部分正在工作好吧,这不是问题),并阻止其他所有内容。
问题是My-Secret-Header 永远不会进入 WAF,也不会添加到源自客户端应用程序的 http 请求中。
我还尝试使用 Lambda@Edge 添加自定义标头,但没有成功。我使用 Lambda@Edge 创建了大量日志,event.Records[0].cf.request.origin.s3.customHeaders 显示 My-Secret-Header(这是预期的)。
向客户端请求添加自定义标头以便可以在 WAF 中创建规则的最佳方法是什么?
【问题讨论】:
标签: amazon-web-services amazon-s3 aws-api-gateway amazon-cloudfront amazon-waf