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

How could I control access to Google Cloud Storage objects using my own auth system?

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

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

Google 云存储可以做到这一点,尤其是在使用您自己的身份验证系统(与 Redis 的会话)时?

无法在 Google Cloud Storage 文档中找到任何明确的示例来满足我的需求,希望能提供一些指导。

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

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

的浏览器中