首页 > 解决方案 > 是否可以使 Cloud Storage 对象对通过应用程序进行身份验证的用户可见?

问题描述

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

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

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

标签: google-cloud-platformgoogle-cloud-storagegoogle-iam

解决方案


您可以查看此示例 python 签名的 url 实现。通过以下步骤:

  1. 使用要签名的资源路径构造规范请求。
  2. 创建上述请求的十六进制编码散列值。您可以使用 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 签名对要签名的字符串进行签名
  2. 使用以下连接构造签名 URL:
https://storage.googleapis.com/ + PATH_TO_RESOURCE + "?" + CANONICAL_QUERY_STRING + "&X-Goog-Signature=" + REQUEST_SIGNATURE

请检查这个python 实现示例


推荐阅读