【问题标题】:Is it possible to make Cloud Storage objects visible to users authenticated via application?是否可以让通过应用程序进行身份验证的用户可以看到 Cloud Storage 对象?
【发布时间】:2019-09-17 17:32:54
【问题描述】:

就目前而言,我的网络应用程序允许最终用户使用在后端生成的签名 URL 将图像上传到 Google Cloud Storage。

我还想让这些对象在上传后对这些用户可见。我能想象的最简单的解决方案是允许使用类似allAuthenticatedUsers 的方式进行读取访问,但只适用于使用我的应用程序进行身份验证的用户。我还没有找到一种方法来做到这一点,但它似乎是一个非常明显的解决方案,必须是一个常见的问题。如果不可能,我猜这是因为谷歌没有区分如何这个用户是通过身份验证的,只是他们是。

想到的替代解决方案是在用户首次登录后为他们创建 IAM 成员帐户,并限制仅对这些帐户的访问,但我想采取阻力最小的路径。

【问题讨论】:

  • 我给了你一个链接让你开始。正如我所说,如果您不了解技术,您将有工作要做。我将把研究留给你。我已经删除了我的答案。

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


【解决方案1】:

如果您使用 App Engine,则可以使用 App Engine App Identity 服务。这样,您的用户将能够使用 App Engine 服务帐户凭据访问数据。更多关于配置的信息可以在here找到。

如果您不是这种情况,创建 IAM 服务帐户将是我能看到的唯一选项。您可以使用Identity and Access Management (IAM) API 以编程方式执行此操作。您还可以创建 Google group 并仅将受邀用户添加到组中。然后,您可以赋予组成员角色:storage.objectViewer。

【讨论】:

  • 我没有使用 App Engine,您提出的解决方案与我认为我必须做的事情非常一致。同时,我可能会添加一个代理端点来创建一次性使用的 GET URL。
【解决方案2】:

您可以查看此example python signed url implementation。步骤如下:

  1. 使用要签名的资源路径构造canonical request
  2. 创建上述请求的十六进制编码散列值。 You can use haslib
  3. 构造要签名的字符串,包括以下元素:
SIGNING_ALGORITHM: This should be GOOG4-RSA-SHA256.
CURRENT_DATETIME: The current date and time, in the ISO 8601 basic format YYYYMMDD'T'HHMMSS'Z'.
CREDENTIAL SCOPE: The credential scope of the request for signing the string-to-sign.
HASHED_CANONICAL_REQUEST: The hex-encoded, SHA-256 hash of the canonical request, which you created in the previous step.
  1. 使用带有 SHA-256 的 RSA 签名对字符串进行签名,for example
  2. 使用以下连接构造签名 URL:
https://storage.googleapis.com/ + PATH_TO_RESOURCE + "?" + CANONICAL_QUERY_STRING + "&X-Goog-Signature=" + REQUEST_SIGNATURE

请查看python sample of implementation

【讨论】:

  • 感谢您的回答和链接。如上所述,我一直在考虑这种方法,但我有点担心依赖阻塞的第三方请求——实际上,两个阻塞第三方请求——只是为了显示图像。
  • 您可以考虑允许匿名访问图像,这样它们就可以直接通过以下路径可见:storage.googleapis.com/BUCKET_NAME/OBJECT_NAME
  • 是的,这就是我过去在进行类似集成时能够解决的问题。不幸的是,这一次不是首发。
  • 所以我建议实现上述场景,因为它实际上是现成的,并测试它是否满足您的需求。
猜你喜欢
  • 2019-09-12
  • 1970-01-01
  • 2021-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-20
  • 1970-01-01
  • 2014-10-30
相关资源
最近更新 更多