【发布时间】:2019-02-16 12:37:52
【问题描述】:
我正在尝试找出使用 Google 服务处理文件访问的最明智的方法。
简化场景,我们有
- 可以使用 Google、Facebook 等进行身份验证的用户(任意数量),即不一定使用 Google 帐户。
- 用户可以属于任意数量的组(相当于 Slack 频道),对一个组中可以有多少用户或一个用户可以属于多少组没有限制。
- 每个文件属于一个组。
在理想的(对我而言)世界中,我应该能够提供(快速)云功能,以验证每个请求的访问权限,做任何我想做的事。我试过了,我确实有一个功能可以进行检查(通过查询 firestore)并生成一个短暂的签名 URL。它确实有效,但该功能的启动速度可能真的很慢,即使在最佳情况下(根本不需要冷启动),它仍然需要大约 400 毫秒,当文件是应该立即弹出的小图像时,这很明显。
因此,下一个替代方案是使用 Firestore 安全规则。我遇到的问题是(显然)我无法在任何地方检查组成员身份(注意:对我们来说,“组”是 /users/$uuid/ 中包含组 ID 列表的集合)。
我考虑将组作为令牌中的声明,但由于声明只能使用 1000 个字节,因此该解决方案是行不通的。
还有 Google 群组,但如果我正确阅读了文档,您只能将 Google 帐户添加到群组中(我的意思是,直接使用存储来处理访问,而不是使用 Firebase 安全性)。
这似乎是一个非常标准的问题,但到目前为止我看到的每种方法都有一些缺点,这对我们来说是无效的。
【问题讨论】:
标签: firebase google-cloud-storage firebase-storage firebase-security