基于权限的集合过滤

Collection filtering based on permission

假设有像文件这样的资源。谁、何时、何地可以访问单个文件不是问题。 假设有一个像目录这样的资源,它有自己的属性并包含其他文件、目录 and/or 一些其他项目。现在有一个用户可以访问目录但不能访问(甚至看不到 name/title)某些文件或子目录。

如果策略决策与业务逻辑分离,如何过滤目录以仅包含用户可以访问的文件。我应该单独检查每个文件吗?

如果是,那么如果目录包含 10M 个文件,而用户只能访问几个文件,如何识别这些文件?

首先要确定资源是什么:是文件夹还是文件?抽象意义上的文件(文件夹和文件的意思)?当且仅当您可以查看文件的祖先时,您是否可以查看文件?换句话说,有一个等级。

抛开这些问题,当涉及到对大量数据的访问控制时,您可以采用两种方法:

  1. 使用 Multiple Decision Profile 为多个项目创建授权请求。多重决策配置文件 (MDP) 请求看起来像 A​​lice 可以查看文件 A 和 B 以及 C 和 ... Z? PDP 将以与原始问题中的项目一样多的决定做出回应。 MDP 适用于数千或更少的项目。
  2. 如果您有大量物品或未知数量的物品,您可以 运行 reverse process called reverse query (ARQ) 而不是询问 Yes/No问题,你问一个开放式的问题,例如告诉我 Alice 可以查看哪些文件。 PDP 将使用过滤器表达式进行响应,例如如果 docStatus==draft AND docDept=Sales 则允许。然后,您可以让 PEP 将过滤器翻译成合适的过滤器,例如文件过滤器。