如何保护通过 GCP Cloud 运行 服务的 REST API 端点?
How to secure REST API endpoints served via GCP Cloud Run?
我在 Firebase 中托管了一个简单的网站,它正在对 GCP Cloud 运行 中的 REST API 端点进行 AJAX 调用。
我想将这些端点仅限于来自 Firebase 托管的网站的调用。来自任何其他来源的任何呼叫都不应使用端点。执行此操作的最佳方法是什么?
当我不使用 GCP Cloud 运行 时,我在 API 端进行主机检查以确保请求来自我的客户端,但现在使用 Cloud 运行 这不可能。还有什么可以做的?
请注意,在 Firebase 中托管的网站非常简单,不进行任何用户身份验证。
挑战:将对云 运行 服务的访问限制为单个 Web 应用程序,而不依赖于:
- 限制对 Web 应用程序的访问
- 对用户进行身份验证
这个困难不是云特有的 运行。对于由 APIs 支持的静态站点来说,这是一个普遍的挑战,也是许多站点具有身份验证的原因。如问题评论中所述,服务器端 "host" 检查不是有意义的安全层,因为 HTTP 请求中的所有内容都可以伪造。 我强烈建议您不要担心将 API 保密或添加 user authentication 以保持系统简单和访问负责。
如果这不可能,您仍然可以通过创建单个用户、将凭据嵌入网站并定期轮换(通过重新部署到 Firebase 托管)来采取身份验证方法,以防止凭据被盗无限期访问你的API。中间有 Firebase Auth 比简单的 API 密钥更好,因为它可以防止重放攻击访问您的 API.
我在 Firebase 中托管了一个简单的网站,它正在对 GCP Cloud 运行 中的 REST API 端点进行 AJAX 调用。
我想将这些端点仅限于来自 Firebase 托管的网站的调用。来自任何其他来源的任何呼叫都不应使用端点。执行此操作的最佳方法是什么?
当我不使用 GCP Cloud 运行 时,我在 API 端进行主机检查以确保请求来自我的客户端,但现在使用 Cloud 运行 这不可能。还有什么可以做的?
请注意,在 Firebase 中托管的网站非常简单,不进行任何用户身份验证。
挑战:将对云 运行 服务的访问限制为单个 Web 应用程序,而不依赖于:
- 限制对 Web 应用程序的访问
- 对用户进行身份验证
这个困难不是云特有的 运行。对于由 APIs 支持的静态站点来说,这是一个普遍的挑战,也是许多站点具有身份验证的原因。如问题评论中所述,服务器端 "host" 检查不是有意义的安全层,因为 HTTP 请求中的所有内容都可以伪造。 我强烈建议您不要担心将 API 保密或添加 user authentication 以保持系统简单和访问负责。
如果这不可能,您仍然可以通过创建单个用户、将凭据嵌入网站并定期轮换(通过重新部署到 Firebase 托管)来采取身份验证方法,以防止凭据被盗无限期访问你的API。中间有 Firebase Auth 比简单的 API 密钥更好,因为它可以防止重放攻击访问您的 API.