按现状,我的Web应用程序允许最终用户使用在后端生成的签名URL将图像上传到Google Cloud Storage。
我还想使这些用户在上传后对这些用户可见。我能想到的最简单的解决方案是允许使用allAuthenticatedUsers
之类的内容进行读取访问,但是只适用于已使用我的应用程序进行身份验证的用户。我还没有找到一种方法来执行此操作,但是对于必须解决的常见问题而言,这似乎是一个非常明显的解决方案。如果不可能的话,我想这是因为Google对该用户进行身份验证的方式并没有区别。
想到的另一种解决方案是,在用户首次登录后为他们创建IAM成员帐户,并限制仅对那些帐户的访问,但是我想采取阻力最小的方法。
答案 0 :(得分:1)
如果您使用的是App Engine,则可以使用App Engine App Identity服务。这样,您的用户将可以使用App Engine服务帐户凭据访问数据。可以在here中找到有关配置此设置的更多信息。
如果您不是这种情况,创建IAM服务帐户将是我所看到的唯一选择。您可以使用Identity and Access Management (IAM) API以编程方式进行操作。您也可以创建Google group并将仅受邀请的用户添加到组中。然后,您可以给组成员角色:storage.objectViewer。
答案 1 :(得分:1)
您可以选中此example python signed url implementation。执行以下步骤:
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.
https://storage.googleapis.com/ + PATH_TO_RESOURCE + "?" + CANONICAL_QUERY_STRING + "&X-Goog-Signature=" + REQUEST_SIGNATURE