如何解决Google Cloud Storage 上媒体文件的访问控制
我在 App Engine 上部署了一个社交媒体应用,用户可以在其中上传照片/视频并与私人群组共享。对于写入,我有一个 POST 端点,它接受上传的文件并将它们写入一个非公开的 GCS 存储桶。对于读取,GET 端点使用 Cloud sql 检查此用户是否有权访问媒体文件 - 如果是,则返回文件流。该文件仅存储 48 小时,平均每天检索 20 次。用户使用 Firebase 电子邮件链接登录进行身份验证。
- 当前方法的问题在于,我的 GET 端点是一个昂贵的中间人,用于读取 GCS 文件流并将其传递给客户端,这会增加调用 API 的成本。
- 在 App Engine 上缓存文件没有意义,因为对于我的用例来说缓存命中率会非常低。
- 如果我将 GCS 存储桶设为公开,GET API 可能会返回 GCS 文件 URL 而不是文件流。但这意味着任何人都可以使用此公共 URL 访问该文件,而不仅仅是我的应用程序或受限用户。此外,整个存储桶现在都很脆弱。
- 我可以为每个 GCS 文件对象创建一个 ACL,但 ACL 仅适用于拥有 Google 帐户的用户,并且我的应用使用电子邮件链接身份验证。如果文件需要与 100 多人共享,每个对象的 ACL 条目也有限制。
- 我的最后一个选择是创建一个短期有效的签名链接,以实现有限的未经授权的共享。
- 还会标记 Google 相册。如果合作伙伴共享计划可以帮助解决这个问题,那么我可以从 GCS 迁移到 Google 相册进行存储。
这看起来像是基于媒体的应用程序的常见用例。是否有任何推荐的设计模式以经济高效的方式实现目标?
这是我学习 GCP 的第一周,所以我上面分享的一些观点可能有误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。