云存储客户访问最佳做法

问题描述 投票:2回答:1

假设我有一个用例,用户可以在应用程序内购买mp3文件。对象存储在GCP Cloud Storage中。将这些对象仅交付给购买文件的用户的最佳实践是什么?

研究了主题之后,我提出了三种解决方案:

  1. 客户端调用REST(例如在App Engine中运行的一种)服务。此服务从Cloud Storage下载文件,然后将它们发送回客户端。
  2. 我可以将下载URL(从Cloud Storage)发送到客户端,而不是通过REST调用发送文件。这将更具成本效益,但是对我来说,这听起来像是一个安全问题,因为只要监视他的网络的任何人都可以捕获URL。
  3. 创建(有时间限制的)签名的URL以允许用户下载

显然,首先必须进行权限检查,例如一个数据库,其中包含用户X是否购买了mp3 Y。

此问题也可能适用于Azure Blob存储或AWS S3 ...

amazon-s3 google-cloud-storage azure-blob-storage
1个回答
0
投票

在您的用例中,您有一个常数:

  • 您需要一个后端来验证用户身份(例如,使用Cloud Identity Platform执行的验证并托管在App EngineCloud Run
  • 您需要检查它已购买的MP3的列表(例如,存储在Firestore中的文件]
  • 然后,您需要允许他下载文件。关于这一点,我建议您生成一个signedURLDownload URL exists only in Firebase area(也许您的项目是firebase projet?),但它与signerURL是同一回事。最后,我不建议您使用第一建议。它可以工作,但是如果下载时间较长(由于网络状况不佳),则连接会在60秒后中断。这将使您的AppEngine一事无成(您将为此付费...)。
© www.soinside.com 2019 - 2024. All rights reserved.