内置Firestore安全规则以防止敏感字段

时间:2019-09-09 06:23:59

标签: firebase google-cloud-firestore nosql firebase-security

我正在用Firestore为一个小公司建模数据库。

我有一组部门。每个部门都是一个文档。 在公司中,员工永远不会超过50名。我想保留每个员工的地图。

因此部门文档将是这样;

{ 
  emp1: { name: 'tom', age:23, email: 'tom@x.com'},
  emp2: { name: 'mike', age:35, email: 'mike@x.com'}
}

我想保留年龄字段为私有,只有超级用户才能访问它。据我了解,不可能将访问级别放在字段的粒度上。客户收到文档后,便可以访问所有字段。

我该怎么做,我应该保留年龄的子集,这样行得通吗?来自SQL,并且已经在SQL中顺利完成了此工作,我无法只为单个整数进行收集。

或者还有其他选择吗?我不想招募员工。

1 个答案:

答案 0 :(得分:1)

您具有与一个实体(用户)相关联的数据,该数据应对该数据的不同字段具有不同的权限,如果将这些字段拆分为在该实体下组织的不同子集合中的文档,这将是最简单的。在这种情况下,安全规则将更容易实现。简单的公共/私有数据的情况:

users/{uid}/public
  - data
    - name
    - email
users/{uid}/private
  - data
    - age

然后您的规则分别针对每个子集合:

match /users/{uid}/public {
  allow read: true;
}

match /users/{uid}/private {
  allow read: if  **...whatever conditions you choose, if any...**
}