如何保护通过GCP Cloud Run提供服务的REST API端点?

时间:2019-10-21 19:52:41

标签: firebase google-cloud-platform google-cloud-run

我在Firebase中托管了一个简单的网站,它正在GCP Cloud Run中对REST API端点进行AJAX调用。

我想将这些终结点仅限于来自Firebase托管的此站点的呼叫。来自任何其他来源的任何呼叫都不能使用端点。最好的方法是什么?

当我不使用GCP Cloud Run时,我在API方面进行了主机检查,以确保该请求来自我的客户端,但是现在使用Cloud Run无法实现。还有什么可以做的?

请注意,Firebase中托管的网站非常简单,不进行任何用户身份验证。

1 个答案:

答案 0 :(得分:1)

挑战:不依赖以下方式将对Cloud Run服务的访问限制为单个Web应用程序:

  • 限制对Web应用程序的访问
  • 对用户进行身份验证

此困难并非特定于Cloud Run。对于由API支持的静态网站来说,这是一个普遍的挑战,也是许多网站进行身份验证的原因。如问题注释中所述,服务器端的“主机”检查不是有意义的安全层,因为HTTP请求中的所有内容都可以被伪造。 我强烈建议您不要担心将自己的API设为私有,也不必添加user authentication来保持系统简单和对访问负责。

如果这不可能,您仍然可以采用身份验证方法,方法是创建一个用户,将凭据嵌入网站,然后定期轮换(通过重新部署到Firebase托管),以防止凭据盗用无限期访问您的API 。在中间使用Firebase Auth比简单的API密钥更好,因为它可以防止重放攻击访问您的API。