我想把Cloudflare放在我在Cloud Run上托管的API前面。我想确保我的Cloud Run应用程序只接受来自Cloudflare的连接(以避免绕过Cloudflare中的DDoS缓解+速率限制)。
是否有办法使用Cloudflare的认证原点拉与云运行?
其他实现相同效果的解决方案也很受欢迎,但关键是我不希望来自非cloudflare来源的流量触发Cloud Run调用(否则DDoS可能导致计费峰值)。因此,在Cloud Run应用程序内过滤流量为时已晚,调用已经发生。
似乎有一种方法可以添加HTTPS负载均衡器+云装甲来做IP白名单,只允许来自Cloudflare的IP的请求…但我不想为了实现这一点而添加两个其他服务并添加$$。
Google Cloud Run支持两种授权机制:未经身份验证(任何人/公共)和OAuth客户端ID。Cloudflare的Origin pull使用TLS证书,这意味着你的Cloud Run应用程序需要验证证书,因为Google的frontend不支持这一点。这将无法实现防止未授权调用Cloud Run的目标。
总之,除非您的服务使用OAuth Client id进行授权,否则除了限制实例的最大数量之外,没有任何方法可以阻止Cloud Run服务调用。如果您配置了未经身份验证的访问,任何调用您的服务端点的人都将成功调用您的服务或执行重叠的请求。