向我的 Firebase 用户授予对 Cloud Storage 的访问权限

Grant access to Cloud Storage to my Firebase users

我的应用程序有 Firebase 用户(即在 Firebase 身份验证中创建的用户,而不是在 Firebase IAM 或 GCP IAM 中)。这些用户未link加入 G Mail 或 Google Workspaces(以前称为 G Suite)帐户,也不属于我的组织。

我需要向这些用户中的每一个授予对 Cloud Storage 存储桶(1 个用户 = 1 个存储桶)的写入权限(而不是读取权限),同时不允许未经身份验证的用户或其他 Firebase 用户对该存储桶进行任何类型的访问.

我该怎么做?

我已经尝试验证身份验证并从我的 Cloud Functions 后端生成预签名的 URL,但事实证明上传数千个文件有点问题,这就是我寻找替代方案的原因。

无论哪种方式,我都不需要限时访问(我同意用户只有几个小时的访问权限或永远的访问权限)。此外,如果每个用户一个存储桶问题太大,每个用户一个文件夹,都在同一个存储桶中,也是可以接受的。

我知道在 AWS 中,我可以为用户使用 Cognito 用户池,然后 link 用户使用身份池,这样他们就可以获得具有所需范围的临时 AWS 凭证,但我没有能够在 GCP 中找到等效项。 service comparison table 在这方面没有帮助。

我意识到我可能有错误的想法,来自 AWS。我不介意我是否必须 link 我的 Firebase 用户到 GCP IAM 用户或 Firebase IAM 用户,尽管对我来说这听起来违反直觉,而且我也没有找到任何相关信息。也许我什至不需要 GCP 凭据,但我也没有找到使用存储桶 ACL 执行此操作的方法。我对任何事情都持开放态度。

由于您的用户使用 Firebase 身份验证登录,因此控制他们访问的最佳方式是通过 security rules 当您通过 Firebase SDK 访问文件时,它位于存储桶中的文件前面。

常见访问模式的一些示例是 only allowing the owner of a file to access it or attribute or role based access control

实施安全规则时,请记住,您可以通过 Firebase SDK 生成的下载 URL 文件(如果对文件具有读取权限)提供 public read-only 访问权限也到文件中。这些下载 URL 绕过了规则,因此您应该只为您希望 public 任何拥有 URL.

的人访问的文件生成它们