首页 > 解决方案 > Firebase 可调用 CloudFunction 和保护

问题描述

我想保护我的 Firebase 可调用云函数免受垃圾邮件滥用(对它们的大量调用)。根据我在那里和那里阅读的内容,没有内置的解决方案可以这样做。最近,云甲出现了,我去看看。

我的问题是,如何在保护后使用 Callable Cloud Functions(不管是什么,CloudFlare、Cloud Armor ...)。Callable 是直接从 SDK 调用的,我无法为它们提供直接的 URL。如果我希望它们受到保护,我是否必须将它们“转换”为标准 HTTP 调用并自己完成工作?必须有一个解决方案,Firebase 的人没有构建一个如此有趣的工具来让它在没有解决方案的情况下被垃圾邮件发送。

我知道我可以使用配额,我不是在谈论可伸缩性。即使我设置了配额,我得到的唯一结果是一个无法运行的应用程序,因为真实用户将被放入队列中。

谢谢

标签: firebasegoogle-cloud-functions

解决方案


编辑:

经过进一步调查,IAM 设置中的配额似乎只考虑了对 Cloud Functions API 的调用,该 API 向开发人员规范了创建、删除和列出功能。

我做了更多的阅读,发现了这个。该文档概述了谷歌推荐的防御攻击的方法,特别是最大实例化选项

gcloud functions deploy FUNCTION_NAME --max-instances 10 FLAGS...

这将限制可以调用的最大并发实例数,从而产生一种速率限制形式。

然而,这并不是你想要的。您希望以可扩展和可配置的方式完全控制应用程序的速率限制。

为此,Google 建议使用Redis,有关如何让 Redis 与云功能和内存存储一起使用的完整教程在此处记录。

我自己没有使用过 Redis,但是从阅读教程来看,它听起来完全符合您的需求。

很抱歉没有仔细阅读文档,希望这有助于解决您的问题。

原始答案

Google Cloud Functions 的保护机制并不是很明显,但它有点像这样:

我将引用这篇文章的答案

云功能位于 Google 前端之后,可缓解和吸收许多第 4 层及以下攻击,例如 SYN 泛洪、IP 片段泛洪、端口耗尽等。

那些上过大学或学习过通用计算的人会将层识别为通信模型的不同部分(例如,第 1 层是物理层,第 2 层是数据链路等)。

你可以在这里阅读一些关于它的信息。

因此,最重要的是,默认情况下,您会受到大多数攻击的保护。但以防万一,实施速率限制和配额是个好主意。

您可能担心的另一种攻击是涓流攻击,其中许多计算机一遍又一遍地缓慢地ping您的后端。

假设攻击者有 1000 台计算机可供他使用,并且每秒 ping 一次您的后端(假设您的函数不调用任何其他函数)。

现在假设谷歌的安全没有发现它,云函数的成本是 0.0000004 美元/调用,所以 1000 万次调用将花费你 4 美元。

为了达到 1000 万次调用,需要 10000 秒(约 167 分钟或约 2.7 小时)。

这不太可能发生,因为 $4/2.7 = $1.48/hr 他在浪费你。相信我,那里有更多有利可图的利用;)

刚开始应该没问题,但是如果你到了一个大网站的阶段,比现在更关心攻击,那么云盔甲绝对是一个不错的选择。

Cloud Armor 允许您根据您在 L3-L7 级别指定的 IP、地理位置和其他自定义匹配参数过滤流量。但根据您的应用程序,这可能有点矫枉过正。

你可以在这里阅读更多关于它的信息。

祝你好运

  • 卑鄙的B。

推荐阅读