【问题标题】:CloudFront in front of API Gateway (Private)API Gateway 前的 CloudFront(私有)
【发布时间】:2019-07-06 14:28:34
【问题描述】:

我知道我可以将 REGIONAL 端点类型的 API 网关放在 Cloudfront 发行版后面,但是否可以放置 PRIVATE 端点类型的 API 网关?

这种方式只有从 Internet 到 Cloudfront 的调用才会到达 API 网关?我认为这无法完成,因为 Cloudfront 是公开的。

【问题讨论】:

    标签: aws-api-gateway amazon-cloudfront


    【解决方案1】:

    将 CloudFront 分配配置为在将请求转发到您的自定义源时包含一个带有共享密钥的自定义标头。您需要指定标头名称及其值。例如,当使用 Amazon API Gateway 作为源时,您可以使用您的 API 密钥值配置 x-api-key 标头作为自定义标头。

    https://aws.amazon.com/blogs/networking-and-content-delivery/serving-private-content-using-amazon-cloudfront-aws-lambdaedge/

    我不太清楚你的意思

    这种方式只有从 Internet 到 Cloudfront 的调用才会到达 API 网关

    【讨论】:

    • 我的意思是我不希望互联网上的任何人直接访问 API 网关。所有 API 调用都应通过 Cloudfront。
    • 上面粘贴的链接中提到的 Lambda@Edge 解决方案应该能够将您的互联网流量限制到云端。试一试。
    • @Squirrel,基于所有 API 调用都应通过 CloudFront,请查看直接询问/解决该问题的 this question。我建议使用我提出的 SigV4 签名者选项作为答案,因为它使您能够使用传统的 IAM 策略来控制对 API 网关的访问,并且当与 Lamdba@Edge 函数配对时,您可以强制通过 CloudFront 分配进行访问。
    【解决方案2】:

    私有 API 的目的是允许从特定内部网络(例如 VPC 子网、本地网络)进行访问。

    因此,如果您需要配置 CloudFront,则来自 CloudFront 的请求应路由到网络的公共端点(例如,面向 Internet 的 NLB),然后 NLB 可以指向 VPC 端点的静态 IP,即与私有 API 的资源策略相关联。

    由于某些安全问题,我认为上述解决方案不适合生产环境,如果有人更新 VPC 端点配置,集成点可能会被破坏。所以我想说最好不要在私有 API 前面配置 CloudFront。

    您能否详细解释一下为什么需要在私有 API 之前引入 CloudFront 分配?我也许可以提供一个替代方案。例如,如果您需要限制从特定域(例如 CloudFront 分配)对 API 的访问,您可以考虑引入 WAF 规则 (https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-control-access-aws-waf.html)。

    【讨论】:

    • 我想让 API 网关受保护 在 Cloudfront 之后。类似于如何通过在 Cloudfront 中启用 OAI 来保护 S3 源。目前,当我部署 API 网关时,它会生成一个从 Internet 可见的链接 https://<api id>.execute-api.<region>.amazonaws.com/<stagename>。我本来希望避免直接(从 Internet)公开对 API 网关的访问。我的设置是:Internet -> Cloudfront -> API Gateway -> VPC Link (internal NLB) -> EC2 在私有子网中。我不确定这是否是最好的方法。第一次接触 API GW。
    • 我以后会考虑 WAF。这就是我不想使用边缘优化的 API Gateway 的原因。
    • @Squirrel,如果您创建私有 API,那么您不必担心来自公共 Internet 的安全攻击。因为私有 API 端点只允许由特定的 VPC ID/端点访问。
    猜你喜欢
    • 2018-12-29
    • 2018-11-19
    • 2019-04-29
    • 2020-10-04
    • 2021-03-26
    • 2017-12-09
    • 1970-01-01
    • 2020-03-08
    • 2021-12-30
    相关资源
    最近更新 更多