授予对 GCP 存储桶中对象(csv 文件)的访问权限

时间:2021-07-16 14:51:41

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

我正在开发让最终用户通过 UI 将 csv 文件上传到存储桶的应用程序。一旦用户上传数据,我想让用户下载他们上传的数据(通过用户界面),他们不应该能够查看/下载其他用户上传的数据..

在 GCP 云存储存储桶中,我将所有用户文件上传到一个存储桶中。所以这个存储桶将包含来自所有用户的文件。但是当他们想要下载/查看文件时,他们应该只看到他们上传的文件,而不是其他用户。所有这些访问都必须自动完成。您能否指导我如何自动设置此类权限?

我查看了一些资源 https://cloud.google.com/storage/docs/collaboration#browser https://cloud.google.com/storage/docs/access-control/iam-json 以及更多..没有找到解决方案..你能指导我吗!

2 个答案:

答案 0 :(得分:0)

如果用户未通过身份验证,您将必须实施匿名登录以将一个用户与另一个用户区分开来。从那里,您使用 getSignedURL() 生成签名访问 URL - 您还可以通过使用将用户 UID 作为源的存储路径来增强安全性,这仅允许该特定用户从该目录中读取。

关键区别在于 access token 是一个永久且可共享的令牌,任何人只要拥有此令牌就可以下载它。 签名 URL 是一种短期访问令牌,您可以对其进行更详细的管理。

使用 storageReference.getSignedUrl() 将返回适合您需求的有限下载 URL。

参考:

答案 1 :(得分:0)

我完全同意@DIGI Byte 的签名 URL 解决方案,因为它是解决此用例的最典型方法,它允许用户在有限的时间内读取、写入或删除对该资源的访问权限。任何知道该 URL 的人都可以访问该资源,直到到达该 URL 的到期时间或用于签署该 URL 的密钥被轮换。

我想针对此问题提出另一种解决方案,即使用客户提供的加密密钥和云存储:

  • 您必须使用此 step 生成自己的加密密钥。你可以 使用 C++、C#、Go、Java、Node.js、PHP、Python、Ruby 来创建 Base64-encoded AES-256 加密密钥。

  • 使用使用此 step 创建的加密密钥上传对象。

  • 下载存储桶中已使用此加密的对象 step。此过程有助于因为只有上传了 对象具有下载它的密钥访问权限。

  • 轮换加密密钥,通过创建另一个加密密钥和 在此 step 需要时使用它们。