首页 > 解决方案 > 安全的 Cloud Run 服务仅接受来自浏览器中域的请求(而不是 Postman / shell 脚本)

问题描述

我们已经完成了身份验证概述,但它没有回答我们的问题,因此请在此处联系专家。

我们的 Web 应用程序一旦加载到浏览器上,用户就会向 Cloud Run 上的服务发出请求。我们希望保护我们的后端服务,以便只有我们的域可以访问它,而不是某些使用 Postman 的用户,或用于访问/更新数据的 shell 脚本。

最终用户访问权限

由于用户不必始终登录,我们希望 Cloud Run 响应请求,即使不存在身份验证令牌。这为我们消除了最终用户对服务选项的访问权限。

服务到服务身份验证:

因为发出请求的是浏览器,而不是我们 GCP 平台中的其他服务,所以即使这个选项对我们也不起作用。

我们后端的用户数据是安全的,因为这些端点需要 Auth 令牌,但是,不需要 auth 令牌的页面是不安全的,并且可能容易受到 DDOS 或 bot/scraping 攻击。

我们如何保护我们的 Cloud Run 服务,以便只响应来自我们 Web 应用程序的调用而不响应其他调用?

标签: google-cloud-platformgoogle-cloud-run

解决方案


您不能确定 Web 应用程序是请求的发送者。实际上,在 Web 环境中,您在客户端发送代码。从这里,用户(好或坏)可以进入您的代码并了解它是如何工作的,请求的标头是什么,这些标头是如何构建的,......

复杂、低效的事情可想而知……也许,最好的办法是插入一个 API 网关,为用户进行速率限制。像这样,即使用户使用自动化的东西,他们也会受到限制。我写了一篇关于 Cloud Endpoint Rate limit 的文章。不确定这是否是最好的产品,也许Apigee可以更好地满足您的要求。

编辑

我想在第一段中说的是“Cloud Run 和任何其他 Web 技术都不可能”。


推荐阅读