您如何确保您的 Google Cloud 运行 应用免受请求过载的影响?
How do you ensure that your Google Cloud Run app is protected from being overloaded with requests?
我创建了一个简单的 Google 云 运行 帮助程序(不处理任何个人数据,也不使用任何存储设施)并实现了一个 public 接口在网站内(使用 HTML 请求)。我不打算添加任何用户身份验证,并且我也在 Cloud 运行 容器中开源了代码。
我是否应该采取任何进一步的措施来保护容器免受恶意用户的攻击?是否有人可以通过请求使应用程序超载,超过容器的免费调用限制(导致我自己被收费)?我主要只是想确保我永远不会为 Cloud 运行 应用付费,因为它只是为有限数量的用户充当一个小的帮助工具。
谢谢。
您有 2 个解决方案
- 内置的解决方案是设置一个maxInstance param来限制生成实例的数量并降低成本。但是,恶意攻击者可以拒绝具有可持续流量的服务(没有足够的实例来满足所有请求,无论好坏!)
- 添加 API 管理层,例如 Cloud Endpoint 或 Apigee。但它是实施和支付的附加层。 Cloud Endpoint is free but implies to have an API key for performing the quotas limitation。我不太了解 Apigee,但它是一个企业级(和定价)解决方案,我确信它对 IP 实施了速率限制。
Should there be any further steps I should take to protect the container from malicious users?
始终,始终必须保护您的应用和服务免受恶意用户的侵害。正如 John Hanley 很好地指出的那样,如果您不使用任何类型的身份验证,那么与您实施某种身份验证相比,您就为更多的恶意 attacks/users 敞开了大门验证。
正如他所提到的,如果您启用了 allow-unauthenticated
,您基本上是向 public 开放了您的云 运行 服务。这并不完全是坏事,但它是恶意用户攻击您的服务的另一种方式。
您将找到有关未经身份验证的访问的更多信息here。
如果可以,我强烈建议您始终验证您的云 运行 服务。如 authentication overview for Cloud Run 中所述:
All Cloud Run services are deployed privately by default, which means that they can't be accessed without providing authentication credentials in the request.
此外,默认情况下,服务只能由项目所有者、编辑者调用,和 云 运行 管理员和开发人员。
要在您的云 运行 服务中对最终用户进行身份验证,您可以参考所提供的 documentation,但总而言之:
Most applications handle requests from end users, and it's a best practice to restrict access to only the allowed end users. In order to accomplish this, you can integrate Google Sign-In and grant users the roles/run.invoker IAM role, or implement Firebase Authentication and manually validate their credentials.
请注意,云 运行 不协助容器实例之间的会话共享,因此不保证会话与特定容器实例的亲和力。
此外,here您将在 Cloud 运行 中找到有关安全提示的更多信息,这些信息可以帮助您提高 Cloud 运行 服务的安全性。
最后,正如Kolban所说,您还可以使用Cloud Endpoints来限制每分钟请求的数量和数量,正如所见 here. 这将确保您不会被收取比您想要的更多的费用。
您会发现一个 complete list of other services 可以与 Cloud 运行 一起使用,以改善最终用户体验和安全性。
希望对您有所帮助。
我创建了一个简单的 Google 云 运行 帮助程序(不处理任何个人数据,也不使用任何存储设施)并实现了一个 public 接口在网站内(使用 HTML 请求)。我不打算添加任何用户身份验证,并且我也在 Cloud 运行 容器中开源了代码。
我是否应该采取任何进一步的措施来保护容器免受恶意用户的攻击?是否有人可以通过请求使应用程序超载,超过容器的免费调用限制(导致我自己被收费)?我主要只是想确保我永远不会为 Cloud 运行 应用付费,因为它只是为有限数量的用户充当一个小的帮助工具。
谢谢。
您有 2 个解决方案
- 内置的解决方案是设置一个maxInstance param来限制生成实例的数量并降低成本。但是,恶意攻击者可以拒绝具有可持续流量的服务(没有足够的实例来满足所有请求,无论好坏!)
- 添加 API 管理层,例如 Cloud Endpoint 或 Apigee。但它是实施和支付的附加层。 Cloud Endpoint is free but implies to have an API key for performing the quotas limitation。我不太了解 Apigee,但它是一个企业级(和定价)解决方案,我确信它对 IP 实施了速率限制。
Should there be any further steps I should take to protect the container from malicious users?
始终,始终必须保护您的应用和服务免受恶意用户的侵害。正如 John Hanley 很好地指出的那样,如果您不使用任何类型的身份验证,那么与您实施某种身份验证相比,您就为更多的恶意 attacks/users 敞开了大门验证。
正如他所提到的,如果您启用了 allow-unauthenticated
,您基本上是向 public 开放了您的云 运行 服务。这并不完全是坏事,但它是恶意用户攻击您的服务的另一种方式。
您将找到有关未经身份验证的访问的更多信息here。
如果可以,我强烈建议您始终验证您的云 运行 服务。如 authentication overview for Cloud Run 中所述:
All Cloud Run services are deployed privately by default, which means that they can't be accessed without providing authentication credentials in the request.
此外,默认情况下,服务只能由项目所有者、编辑者调用,和 云 运行 管理员和开发人员。
要在您的云 运行 服务中对最终用户进行身份验证,您可以参考所提供的 documentation,但总而言之:
Most applications handle requests from end users, and it's a best practice to restrict access to only the allowed end users. In order to accomplish this, you can integrate Google Sign-In and grant users the roles/run.invoker IAM role, or implement Firebase Authentication and manually validate their credentials.
请注意,云 运行 不协助容器实例之间的会话共享,因此不保证会话与特定容器实例的亲和力。
此外,here您将在 Cloud 运行 中找到有关安全提示的更多信息,这些信息可以帮助您提高 Cloud 运行 服务的安全性。
最后,正如Kolban所说,您还可以使用Cloud Endpoints来限制每分钟请求的数量和数量,正如所见 here. 这将确保您不会被收取比您想要的更多的费用。
您会发现一个 complete list of other services 可以与 Cloud 运行 一起使用,以改善最终用户体验和安全性。
希望对您有所帮助。