Cloud 在云中存储公共和私有文件的正确方法

Cloud 在云中存储公共和私有文件的正确方法,cloud,google-cloud-storage,Cloud,Google Cloud Storage,我正试图找到一种存储1 TB公共和私人文件和图像的方法,这些文件和图像每天都在快速扩展 目前,我使用连接到web服务器的小型NAS存储所有数据。对于每个请求,我们的Web应用程序都可以决定登录用户(基于cookie)是否具有查看文件的权限 我目前正在考虑将谷歌云存储作为存储我们所有数据的一种方式。这个解决方案非常适合我们的公共文件,但我找不到一个好方法使它适用于我们的私有文件 我知道谷歌云存储允许我们创建在有限时间内有效的签名URL,但我不确定这对于大量请求是否真的安全有效 我能想到的另一种方法

我正试图找到一种存储1 TB公共和私人文件和图像的方法,这些文件和图像每天都在快速扩展

目前,我使用连接到web服务器的小型NAS存储所有数据。对于每个请求,我们的Web应用程序都可以决定登录用户(基于cookie)是否具有查看文件的权限

我目前正在考虑将谷歌云存储作为存储我们所有数据的一种方式。这个解决方案非常适合我们的公共文件,但我找不到一个好方法使它适用于我们的私有文件

我知道谷歌云存储允许我们创建在有限时间内有效的签名URL,但我不确定这对于大量请求是否真的安全有效

我能想到的另一种方法是使用一种代理服务器,它将从谷歌云存储中下载文件,并在用户有权限的情况下将其交付给客户端,但这不是浪费带宽吗

根据您的经验,是否有存储此类数据的好方法?它不必是谷歌云存储,但必须易于扩展


谢谢

私有存储桶确实是隔离非公共文件的最佳方式。我在需要用户授权的ASP.NET应用程序中设置了我的帐户,因此我的下载脚本会对帐户进行身份验证,然后根据bucket和文件名为文件提供服务

私有存储桶确实是隔离非公共文件的最佳方式。我在需要用户授权的ASP.NET应用程序中设置了我的帐户,因此我的下载脚本会对帐户进行身份验证,然后根据bucket和文件名为文件提供服务

签名URL是支持这样做的方式。您有什么安全性和效率方面的顾虑?您能告诉我用户下载文件需要多久进行一次身份验证吗?签名URL很可能有效,但是如果您需要每秒生成超过1000个左右的URL,您可能需要评估该工作的成本。我担心拥有签名URL的任何人都可以访问该文件。这难道不是一种默默无闻的安全感吗?我们所有的用户都经过身份验证。有些图像,如用户的缩略图是公开的,但其他图像,如个人PDF和文件交付,必须保持隐私。我怀疑在运营的第一年,我们需要每秒签署50个以上的请求。我不认为分发已签名的URL会带来额外的安全风险。您的意图大概是授予用户对对象内容的临时访问权。一旦用户拥有了内容,数据就不再由您掌握,用户可以与任何人共享该内容。无论用户如何获取内容(通过签名URL或其他机制),您都容易受到此攻击。我想我已经知道如何继续。公共文件将驻留在公共存储桶中,而私有文件将驻留在私有存储桶中。我将添加一个“下载”链接来验证Web应用程序中用户的身份和权限,而不是生成一堆可能永远无法访问的签名URL。如果用户具有访问权限,此链接将生成已签名的URL并将用户重定向到该URL。签名的URL将有一个非常短的生存时间,所以它不应该被共享或造成任何安全问题,我可以想到的。谢谢你的意见!签名URL是支持这样做的方式。您有什么安全性和效率方面的顾虑?您能告诉我用户下载文件需要多久进行一次身份验证吗?签名URL很可能有效,但是如果您需要每秒生成超过1000个左右的URL,您可能需要评估该工作的成本。我担心拥有签名URL的任何人都可以访问该文件。这难道不是一种默默无闻的安全感吗?我们所有的用户都经过身份验证。有些图像,如用户的缩略图是公开的,但其他图像,如个人PDF和文件交付,必须保持隐私。我怀疑在运营的第一年,我们需要每秒签署50个以上的请求。我不认为分发已签名的URL会带来额外的安全风险。您的意图大概是授予用户对对象内容的临时访问权。一旦用户拥有了内容,数据就不再由您掌握,用户可以与任何人共享该内容。无论用户如何获取内容(通过签名URL或其他机制),您都容易受到此攻击。我想我已经知道如何继续。公共文件将驻留在公共存储桶中,而私有文件将驻留在私有存储桶中。我将添加一个“下载”链接来验证Web应用程序中用户的身份和权限,而不是生成一堆可能永远无法访问的签名URL。如果用户具有访问权限,此链接将生成已签名的URL并将用户重定向到该URL。签名的URL将有一个非常短的生存时间,所以它不应该被共享或造成任何安全问题,我可以想到的。谢谢你的意见!谢谢你的回答。我对我的应用程序逻辑做了一些更改,这就是我最终要做的。我仍然想知道应用程序是否应该从私有bucket下载文件并提供给用户,或者我是否应该生成一个有签名的URL并在短时间内将用户重定向到它。不客气。如果此时不需要对用户进行身份验证或授权,为什么不让应用程序下载它,用户的浏览器根据用户的偏好处理它呢?您还可以在下载代码中命名该文件,以便用户看不到其云存储地址。谢谢您的回答。我对我的应用程序逻辑做了一些更改,这就是我最终要做的。我仍然想知道应用程序是否应该从私有bucket下载文件并