google-cloud-storage - 如何使 Google Cloud Storage 直接下载链接符合 ACL?

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

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

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

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

编辑:链接似乎会在几分钟后过期,这会稍微降低相关风险,但并非完全降低。我仍然非常担心授权用户可以轻松地使用它来无意中提供未经授权的用户直接访问他们不应该的东西......

最佳答案

左键与右键单击文件

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

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

我能够在隐身窗口中看到这两个 URL。一段时间后,我对它们的访问权限过期了。然而,有趣的是,在我登录并通过身份验证访问 Google Cloud Storage 的窗口中,我对它们的访问也过期了。

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

Google Cloud Storage 浏览器中用户数据的安全性和 ACL

TL;DR: 我相信您观察到的行为,即任何人都可以查看该 URL,正在按预期工作,并且无法更改超出 Google Cloud Storage 已经通过自动超时所做的操作;让我解释一下为什么。

当您通过 Developers Console 浏览 Google Cloud Storage 时,您使用的是域 console.developers.google.com 上的存储浏览器这意味着您已通过 Google 进行身份验证,并且可以应用适当的 ACL 来允许/拒绝访问。

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

如果 Google 为您提供 google.com 上的文件内容域,它会通过允许对手强制您的浏览器使用您的 Google 凭据代表您执行 Javascript 来产生安全问题,从而允许他们执行您可以通过 Web UI 执行的任何操作。这通常称为 XSS attack .

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

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

因此,全部 用户,即使是那些可以直接访问文件的用户,在浏览器中查看它们时,都会使用 time-limited signed URL 提供内容。在不同的域上。

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

关于google-cloud-storage - 如何使 Google Cloud Storage 直接下载链接符合 ACL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31762153/

相关文章:

node.js - 如何使用签名网址将文件上传到谷歌云存储桶

java - 是否有从 Spark Streaming 到 google big query 的连接器?

python - 如何在谷歌云存储 python 库中正确使用 create_anonymous_client() 函数来访问公共(public)存储桶?

python - Google Cloud Storage bucket list_blobs 前缀太宽泛

firebase - 如何根据用户auth uid授予对Google云存储桶的访问权限

python - 相当于用于谷歌存储的 python boto

google-cloud-platform - 无法在 Dataproc 2.0 镜像中创建 Avro 表

pandas - 从 BigQuery 加载大量数据到 python/pandas/dask

google-cloud-platform - 如何在堆栈驱动程序中为每个错误创建警报

storage - 将静态文件存储在我的 rails 应用程序中的谷歌驱动器上