【问题标题】:Firestore security rules in to prevent sensitive fieldFirestore 中的安全规则以防止敏感字段
【发布时间】:2020-01-10 21:52:10
【问题描述】:

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

我有一个部门集合。每个部门都是一个文件。 在公司里,员工永远不会超过50人。我想把每个员工都当成一张地图。

所以部门文件会是这样的;

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

我想将年龄字段保密,它只能由超级用户访问。据我所知,不可能将访问级别放在字段的粒度上。当客户收到文档时,他将可以访问所有字段。

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

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

【问题讨论】:

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


【解决方案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...**
}

【讨论】:

  • 谢谢,部门和用户之间是多对多的关系,我该怎么做呢?在每个部门文档中,我将这些用户的外键保存为数组?
  • 请编辑问题以更准确地描述此答案不满足的多对多关系问题。
  • 其实这是一个后续问题。
  • 我不完全理解 - 请发布一个描述该问题的新问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-17
  • 1970-01-01
相关资源
最近更新 更多