我创建了一个简单的Google Cloud Run帮助程序(不处理任何个人数据,也不使用任何存储工具),并在网站内为其实现了公共界面(使用HTML请求)。我不打算添加任何用户身份验证,并且我还将Cloud Run容器中的代码开源。
我应该采取进一步的措施来保护容器免受恶意用户攻击吗?有人可以让应用程序超载请求,超出容器的免费调用限制(导致我被收费)吗?我主要只是想确保我从不为Cloud Run应用付费,因为它只是为有限数量的用户提供了一个小型帮助工具。
谢谢。
答案 0 :(得分:2)
您有2个解决方案
答案 1 :(得分:2)
我应该采取进一步的措施来保护容器免受恶意用户攻击吗?
始终,始终必须保护您的应用和服务免受恶意用户的侵害。正如 John Hanley 所指出的那样,如果您不使用任何类型的身份验证,那么与实施某种身份验证相比,您将为更多的恶意攻击/用户敞开大门。
正如他提到的,如果您启用了allow-unauthenticated
,则基本上是向公众开放Cloud Run服务。这并不完全不好,但这是恶意用户攻击您的服务的另一种方式。
您将找到有关未经身份验证的访问权限here的更多信息。
如果可能的话,我强烈建议您始终对您的Cloud Run服务进行身份验证。如authentication overview for Cloud Run中所述:
所有Cloud Run服务默认情况下都是私有部署的,这意味着如果不在请求中提供身份验证凭据,则无法访问它们。
此外,默认情况下,服务只能由项目所有者,编辑者和 Cloud Run管理员和开发人员调用strong>。
要对Cloud Run服务中的最终用户进行身份验证,可以参考提供的documentation,但在摘要中:
大多数应用程序都处理来自最终用户的请求,并且最佳做法是将访问权限限制为仅允许最终用户访问。为此,您可以集成Google登录并为用户授予角色/run.invoker IAM角色,或实施Firebase身份验证,并手动验证其凭据。 / p>
请注意,Cloud Run不能帮助容器实例之间共享会话,因此不能保证与特定容器实例的会话亲和力。
此外,here您将在Cloud Run中找到有关安全提示的更多信息,这些信息可以帮助您改善Cloud Run服务的安全性。
最后,正如 Kolban 所说,您还可以使用 Cloud Endpoints 来限制每分钟请求的数量和数量,如here.所示。将确保您不会再收到您想要的账单。
您会发现complete list of other services可与Cloud Run一起使用,以不仅改善最终用户体验,而且还改善您的安全性。
我希望这会有所帮助。