【发布时间】:2020-02-17 22:51:31
【问题描述】:
我在 Firebase 中托管了一个简单的网站,它正在对 GCP Cloud Run 中的 REST API 端点进行 AJAX 调用。
我想将这些端点限制为仅来自托管在 Firebase 中的此站点的调用。来自任何其他来源的任何呼叫都不应使用端点。最好的方法是什么?
当我不使用 GCP Cloud Run 时,我在 API 端进行主机检查,以确保请求来自我的客户端,但现在使用 Cloud Run,这是不可能的。还能做什么?
请注意,托管在 Firebase 中的网站非常简单,不进行任何用户身份验证。
【问题讨论】:
-
最终用户浏览器是否正在为 Internet 上的用户执行对云运行的 REST 调用?例如,用户是否从 Firebase 加载网页,并且该网页包含引用 JavaScript 的 HTML,然后从浏览器向 Cloud Run 发出 Ajax 调用?
-
没错。通过浏览器,最终用户访问托管在 Firebase 上的 HTML 页面,并且页面上的用户操作(例如:按钮单击)导致 Ajax 调用访问 Cloud Run 中的 api 端点。负责 Ajax 调用的 JavaScript 也托管在 Firebase 上。
-
你为什么要设置这个约束?如果调用的是用户浏览器,那么任何人都可以轻松更改请求的
origin并绕过您的过滤器。您可能会为此付出太多努力,但没有什么比这更安全的了! -
您的浏览器用户是否以任何其他方式进行了身份验证? Oauth或类似的东西?如果不是,那么事情就会变得棘手,因为从 Cloud Run 的角度来看,您的调用者将与任何其他调用者没有区别。
标签: firebase google-cloud-platform google-cloud-run