企业ABAC中访问控制机制的部署实施有几个重要的功能“点”,用于检索和管理策略的服务节点,其中包含了用于处理策略上下文或工作流、以及检索和评估属性的一些逻辑组件。下图给出了这些功能点:策略执行点(PEP)、策略决策点(PDP)、策略信息点(PIP)和策略管理点(PAP)。这些组件处于同一环境中,相互配合以实现访问控制决策和策略执行。
策略决策点(PDP):通过评估适用的DP和MP来计算访问决策。PDP的主要功能之一是根据MP调节或消除DP间的冲突。
PEP执行PDP做出的策略决策:
策略执行点(PEP):以执行策略决策的方式响应主体对受保护客体的访问请求;访问控制决策由PDP生成。
PDP和PEP功能可以是分布式的或集中式的,并且可以在物理和逻辑上彼此分离。例如,企业可以建立一个集中控制的企业决策服务,该服务评估属性和策略,生成策略决策并传递给PEP。这种方式方便对主体属性和策略进行集中管理和控制。或者,企业内的本地组织可以利用集中的DP存储库,实现独立的PDP。ACM组件的设计和部署需要一个管理单元来协调ABAC的各组件功能。
要计算策略决策,PDP必须具有有关属性的信息,这些信息由PIP提供。本文件中的PIP定义为:
策略信息点(PIP):作为属性或策略评估所需数据的检索源,提供PDP做出决策所需的信息。
在执行这些策略决策之前,必须对它们进行彻底的测试和评估,以确保它们满足预期的需要,这些功能由PAP执行。PAP可定义为:
策略管理点(PAP):提供一个用户接口,用于创建、管理、测试和调试DP和MP,并将这些策略存储在适当的策略库中。
PIP系统处理流程等同于典型的ETL数据处理流程,先从各种数据源收集各种数据,再通过统一的数据处理流程,将多维度的数据统一过滤整合,最后统一存储,一个标准的流程架构(PIP)如下图:
数据存储方面,目前业界综合使用最多的是ES,或ES结合某个列式存储数据库比如Hbase,或文档数据库比如mangoDB。Es结合其他数据库的方式只用于海量数据的查询检索,如果数据量未到该量级(比如单次查询的数据量约小于1亿条记录)则无需这么做
PDP和PIP对接可以采用2种对接方案,如下图:
注意,这种改造的好处是可以将PDP和PIP分离,分不同的进程甚至部署到不同的服务器上,但在目前硬件资源有限的情况下没有实际意义,这么配置会带来2方面负面作用:
A,虽然PDP的资源占用大幅减少,但其一大半工作被PIP分担,PIP同样会占用硬件资源,启动2个服务肯定比单个服务占用更多的资源,同时增加了额外的数据交互开销(比如原来用户信息和设备信息等直接通过登录请求携带过来,但流程分离后需要在PIP里单独开启用户和设备数据同步流程)。
B,本来PDP和PIP在一个进程全部读写内存效率最高,分离后至少也要用Redis做数据同步,处理性能和实时性两者必有一个会严重下降。
综合评估,大数据处理是建立在大量硬件资源的前提上,采用硬件换取效率,在资源不够的情况下,整个系统还是交互越少效率越高。