【发布时间】:2016-10-06 10:43:29
【问题描述】:
我正在尝试找到一种方法来存储 1 TB 的公共和私人文件和图像,这些文件和图像每天都会以极快的速度扩展。
目前,我使用连接到我们的网络服务器的小型 NAS 来存储我们所有的数据。对于每个请求,我们的 Web 应用程序可以决定登录的用户(基于 cookie)是否有权查看文件。
我目前正在将 Google Cloud Storage 视为存储我们所有数据的一种方式。此解决方案非常适合我们的公共文件,但我找不到使它适用于我们的私人文件的好方法。
我知道 Google Cloud Storage 允许我们创建在有限时间内有效的签名 URL,但我不确定这对于大量请求是否真的安全有效。
我能想到的另一种方法是拥有一种代理服务器,如果用户有权限,它将从谷歌云存储下载文件并将其交付给客户端,但这不会浪费带宽?
根据您的经验,是否有存储此类数据的好方法?它不必是 Google Cloud Storage,但它必须易于扩展。
谢谢!
【问题讨论】:
-
签名 URL 是执行此操作的受支持方式。您有哪些安全和效率问题?
-
您能否告诉我用户需要多久通过身份验证才能下载文件?签名 URL 很可能会起作用,但如果您需要生成超过每秒一千个左右的数据,您可能需要评估这项工作的成本。
-
我担心任何拥有签名 URL 的人都可以访问该文件。这难道不是一种通过默默无闻的安全感并被认为是不好的吗?我们所有的用户都经过身份验证。一些图像,如用户缩略图是公开的,但其他图像如个人 PDF 和文件交付必须保持私密。我怀疑在运营的第一年我们是否需要每秒签署超过 50 个请求。
-
我看不到签名 URL 的分发如何带来额外的安全风险。大概您的意图是授予用户对对象内容的临时访问权限。用户拥有内容后,数据就无法控制,用户可以与任何人共享该内容。无论用户如何获取内容(通过签名 URL 或其他机制),您都容易受到此攻击。
-
我想我知道我将如何进行。公共文件将驻留在公共存储桶中,私有文件将驻留在私有存储桶中。我不会生成一堆可能永远无法访问的签名 URL,而是添加一个“下载”链接,该链接将在我们的 Web 应用程序中验证用户的身份和权限。如果用户有权访问,此链接将生成签名 URL 并将用户重定向到该 URL。签名的 URL 的生存时间很短,因此不应共享它或导致任何我能想到的安全问题。感谢您的意见!
标签: cloud google-cloud-storage