iOS 中的 Firebase "admin user"?

Firebase "admin user" in iOS?

这是我想要实现的目标:

我有一个 iOS 前端、一个 Vapor 后端和一个 Firebase 存储桶。我有一个应用程序,其中一小部分功能能够将图像添加到某些 Note 对象。当用户将图像附加到注释时,我想将图像上传到存储桶,获取存储它的 key/url 并将其存储在后端数据库中。所有这一切都很简单,除了 - 我希望存储桶只能通过我的 iOS 代码和我的后端代码访问,而不只是 public 任何人都可以访问。

后端由服务帐户内容覆盖。但我不确定如何涵盖 iOS 方面。 Firebase 生成此基本规则以防止 public 访问:

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth != null;
    }
  }
}

我认为此规则仅允许经过 Firebase 身份验证的用户使用该存储桶,但我不打算通过 Firebase 对我的用户进行身份验证。有没有一种方法可以设置规则,使存储桶只能通过我自己的 iOS 代码访问?我是否应该基本上只创建一个 Firebase 用户,并让应用程序在每次应用程序启动时以该用户身份进行身份验证?我能否配置 Firebase,使其使用一些秘密来执行超出规则的存储操作?

**为清楚起见进行了编辑

正如@jnpdx 评论的那样,看看 Firebase 的 anonymous authentication,它允许您登录(和识别)用户而无需要求凭据。基于此,您需要确保每个用户只能读取他们被授权的文件。

虽然一开始 if request.auth != null 可能看起来不错,但我发现从最小特权原则开始通常更好 - 例如 have some form of content ownership based access rules.

最后,还请看一下今年早些时候推出的 Firebase App Check,它与您的 phone 上的证明提供商一起工作,以降低未经授权的代码被用于调用的风险存储 API。