如何使Google云端存储直接下载链接符合ACL?

时间:2015-08-01 13:03:58

标签: google-cloud-storage google-cloud-platform

如果.txt文件保存到GCS并由授权用户通过开发人员控制台浏览器单击,则内容将显示在Web浏览器中。没问题,但该URL可以发送给任何人,无论是否授权,允许他们查看文件的内容。

"公开分享"未选中,并且未对默认ACL进行任何更改。这并不是特定于.txt文件的 - 这是复制行为的最简单方法,因为它们直接在浏览器中显示(因此您可以轻松访问该URL)。

如何配置GCS以禁用直接下载链接或确保它们符合ACL?

编辑:似乎链接在几分钟后过期,这会降低相关风险一点,但不完全。我仍然非常担心授权用户如何轻易地使用它来无意中提供未经授权的用户直接访问他们不应该做的事情......

1 个答案:

答案 0 :(得分:3)

左键与右键单击文件

首先,关于左右点击之间的区别:我无法在Google云端存储存储浏览器中左键单击或右键单击文件名。

为了验证这一点,我打开了一个Google Cloud Project并在私有存储桶中打开了一个私有对象,并使用这两种方法打开它。我复制了网址,并在我未登录的Chrome隐身窗口中打开了这些网址,以验证我的ACL未被应用。

我能够在隐身窗口中看到这两个网址。过了一段时间,我对它们的访问权限已过期。但是,有趣的是,我对它们的访问权限也在我登录并经过身份验证访问Google云端存储的窗口中过期。

这是事情变得有趣的地方。

Google云端存储浏览器中用户数据的安全性和ACL

TL; DR:我相信您观察到的行为,即任何人都可以查看该网址的行为正在按预期运行,并且无法超越Google云端存储已经通过自动超时执行的操作;让我解释一下原因。

当您通过开发人员控制台浏览Google云端存储时,您正在使用域console.developers.google.com上的存储浏览器,这意味着您已通过Google验证,并且可以应用适当的ACL来允许/拒绝访问。< / p>

但是,您可以在该域上查看的唯一内容是存储桶名称,对象名称和元数据,而不是文件内容本身。

如果Google要在google.com域上为您提供文件内容,则会通过允许攻击者强制您的浏览器代表您使用您的Google凭据执行Javascript来创建安全问题,从而允许他们执行此操作您可以通过Web UI完成的任何事情。这通常称为XSS attack

为了禁止这种情况发生,Google云端存储(以及一般的Google,例如缓存网页)在不同的域上提供用户来源的数据,通常是*.googleusercontent.com,用户无法利用任何域敏感的Cookie或凭据,因为Google提供的任何内容都不会在同一个域中提供。

但是,因此,由于数据是从一个域(*.googleusercontent.com)提供的,但您的身份验证位于其他域(*.google.com),因此无法应用标准Google云存储桶或对象ACL自身的文件内容,同时保护您免受恶意用户的XSS攻击。

因此,所有用户,即使是那些可以直接访问该文件的用户,一旦在浏览器中查看这些用户,其内容就会在不同的域上提供time-limited signed URL。< / p>

作为副作用,这允许用户复制粘贴URL并与其他人共享,他们对文件内容具有类似的时间限制访问权。