Ios Firebase安全和规则

Ios Firebase安全和规则,ios,swift,firebase,Ios,Swift,Firebase,简单介绍一下,我正在尝试了解Firebase安全协议,我已经建立了一个名为UsersDB的数据库,它将根据auth.uid存储详细信息。详细信息包括全名、电子邮件、提供商、帐户创建日期、上次登录日期 我设置了如下规则: { "rules": { ".read": "auth != null", // only authed users can read/write ".write": "auth != null", "UsersDB": { "$uid":

简单介绍一下,我正在尝试了解Firebase安全协议,我已经建立了一个名为UsersDB的数据库,它将根据auth.uid存储详细信息。详细信息包括全名、电子邮件、提供商、帐户创建日期、上次登录日期

我设置了如下规则:

{
  "rules": {
    ".read": "auth != null", // only authed users can read/write
    ".write": "auth != null",
    "UsersDB": {
      "$uid": {
        ".read": "auth.uid == $uid", // users can read/write their own data
        ".write": "auth.uid == $uid"
      }
    }
  }
我的理解是,只有用户id与auth.uid匹配的人才能读取和写入记录

我的问题是我是否正确地做到了这一点,如果没有,我应该如何做到这一点?我只希望创建帐户的人能够读取和写入此信息,而不希望其他uid访问此信息

最后,作为firebase帐户的管理员。我会考虑创建一个管理控制台类型的软件,它允许我访问存储的所有数据。我将如何更改或更新规则以允许管理员登录访问上述数据。我是否会更改对任何人的读访问权限(尽管在我看来这似乎会在规则中留下漏洞),或者是否有方法声明一条规则,允许我(管理员)对所有数据进行完全读访问


谢谢

您忽略了Firebase文档中的一个非常重要的部分,其中规定:

安全和FIREBASE规则自上而下工作

子规则只能向父节点已声明的内容授予附加权限。它们不能撤消读或写权限

由于您的顶级读写规则已经允许任何经过身份验证的用户读/写所有帐户,因此您不能在树的较低位置撤消该权限

幸运的是,在您的场景中不需要授予这些更高级别的权限

{
  "rules": {
    "UsersDB": {
      "$uid": {
        ".read": "auth.uid == $uid",
        ".write": "auth.uid == $uid"
      }
    }
  }
}
这样,每个用户只能读写自己的数据


记住那个火源。使用上面的结构,没有用户可以查询
/UsersDB
,因为没有人在那里有阅读权限。

谢谢Frank。我理解你对权限级联的看法以及我最初的设置。我需要更多地研究它,并寻找一些例子来更好地理解。在上面的规则中,每个用户只允许读写他们自己的数据,但假设user_x是超级管理员,我希望user_x读写每个人的数据。可能吗?