如何使用自己的身份验证系统控制对 Google Cloud Storage 对象的访问?

Posted

技术标签:

【中文标题】如何使用自己的身份验证系统控制对 Google Cloud Storage 对象的访问?【英文标题】:How could I control access to Google Cloud Storage objects using my own auth system? 【发布时间】:2022-01-16 11:18:54 【问题描述】:

我目前正在使用 Google Cloud Storage 来处理我的应用程序的存储。在阅读 GCS 的文档时,我想知道当我拥有自己的身份验证系统而不是 Firebase 等时,如何控制谁可以访问什么

例如,我有两个不同的角色,adminuser。具有user 角色的用户可以上传文件、删除其文件,但用户无法查看其他用户的文件。 管理员可以查看所有用户的文件。

这是否可以通过 Google Cloud Storage 实现,尤其是在使用您自己的身份验证系统(使用 redis 的会话)时?

在 Google Cloud Storage 文档中找不到任何明确的示例来说明我正在寻找的内容,不胜感激。

【问题讨论】:

【参考方案1】:

谷歌云存储的唯一访问管理系统是谷歌OAuth 2.0。你不能替换那个系统。

但是,您可以在应用程序内的 IAM 之上添加一个层。我使用signed URLs 根据我的本地授权系统授予用户访问权限。用户对我的应用程序进行身份验证,请求签名 URL,然后直接访问 Cloud Storage。我使用 HTTP 重定向来透明地请求签名 URL。用户将 Cloud Storage 对象视为我的应用程序中的路由。这听起来可能很复杂,但在大多数框架中很容易实现。我将这项技术与 Laravel 一起用于 Google 和 Azure 存储。然后,实际的 Cloud Storage 请求发生在用 javascript 编码的浏览器中。

【讨论】:

啊,我正在阅读有关签名 URL 的内容,并认为我可以使用它们,但不确定。我唯一的问题是,显然 NodeJS 客户端不能用于制作签名 URL 以列出存储桶中的对象,这有点不幸但没什么大不了的。我会更深入地研究这条路线,谢谢。

以上是关于如何使用自己的身份验证系统控制对 Google Cloud Storage 对象的访问?的主要内容,如果未能解决你的问题,请参考以下文章

Unity/Firebase 如何使用 Google 进行身份验证?

如何在 Google Apps 脚本中使用服务帐户对 Google 表格进行身份验证

Flutter Firebase - 未能正确删除经过 Google 身份验证的用户

如何使用 spring security 和 spring boot 对 Google 用户进行身份验证,将 mongoDB 作为存储库?

使用google身份验证器实现动态口令验证

如何将 Google Play 游戏登录与 Firebase 身份验证结合使用