Authentication Google云存储:为每个对象授予用户/传递凭据

Authentication Google云存储:为每个对象授予用户/传递凭据,authentication,google-cloud-platform,google-cloud-storage,Authentication,Google Cloud Platform,Google Cloud Storage,我有一个web应用程序,其后端部署到Google云功能,它使用Google云存储来存储最终用户的文档。 用户通过用户名和密码对我的应用程序进行身份验证 是否可以为对象所有者用户授予对GCS上对象的特定读取权限,以便如果用户a拥有GCS上的文档a,他是唯一有权访问该文档的人 谢谢目前,您只能通过身份和访问管理(IAM)或访问控制列表来控制对存储桶的访问,正如您在上所看到的,您还可以在相关文档中获得关于每个存储桶的更多详细信息 您试图做的是不可能的,因为所提到的任何一个选项都取决于是否有google

我有一个web应用程序,其后端部署到Google云功能,它使用Google云存储来存储最终用户的文档。 用户通过用户名和密码对我的应用程序进行身份验证

是否可以为对象所有者用户授予对GCS上对象的特定读取权限,以便如果用户a拥有GCS上的文档a,他是唯一有权访问该文档的人


谢谢

目前,您只能通过身份和访问管理(IAM)或访问控制列表来控制对存储桶的访问,正如您在上所看到的,您还可以在相关文档中获得关于每个存储桶的更多详细信息

您试图做的是不可能的,因为所提到的任何一个选项都取决于是否有google电子邮件和/或google group电子邮件或类似的内容来分配角色

一个可能的解决办法是@lukaszberwid在评论中提到的,如果你为每个用户提供了一个bucket,那么他们的访问将被独立管理,因此它可能会满足你的应用程序的需要

希望这能有所帮助。

可能正是您想要的

使用云IAM条件,只有在满足配置条件的情况下,您才可以选择向身份(成员)授予资源访问权限。例如,可以这样做,以便在出现生产问题时为用户配置临时访问权限,或者仅为从公司办公室提出请求的员工限制对资源的访问

因此,对于每个成员,您可以配置如下内容:

"condition": {
    "title": Limit access to [Dedicated VM]
    "expression": "resource.type == "compute.googleapis.com/Instance" && resource.name == [Dedicated VM]"
}

每人最多有20条规则,在这种情况下,这应该不会太重要。

没有。我需要每个对象的限制,但ACL(AFAIK)控制Google帐户的访问,而不是应用程序定义的用户和密码。我认为没有这样的机制。您可以做的是删除对所有用户的访问,并为每个用户生成SA。向每个SA分配一个GCS(此SA是唯一能够访问的帐户)。对于在注册过程中生成SA的新用户来说,这听起来有点太复杂了。我的想法是删除对除单个SA之外的所有用户的访问,然后在bucket前面使用云功能作为身份验证服务。它能工作吗?云功能也能工作。我的方法似乎需要做很多工作,但这只是几个api调用,维护云函数作为代理应该会容易得多。IAM是否也适用于没有Google帐户的用户?我的意思是,他们只使用User/Pass注册到我的web应用。据我所知-否。如果是这种情况,你最好为每个用户创建服务帐户