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