使用ABAC安全时,如何查找规则?

When using ABAC security, how do you look up rules?

实施 ABAC/XACML 时,规范指示您应该使用 PEP 拦截对敏感数据的请求,PEP 会将请求路由到 PDP(PEP 包括有关主题、环境、资源和调用 PDP 时的操作的属性).

PDP 然后确定需要评估哪些规则以做出访问决策。

来自维基百科: https://en.wikipedia.org/wiki/XACML

XACML provides a target,[5] which is basically a set of simplified conditions for the subject, resource, and action that must be met for a policy set, policy, or rule to apply to a given request. Once a policy or policy set is found to apply to a given request, its rules are evaluated to determine the access decision and response.

Policy set, policy and rule can all contain target elements.

据我了解,PDP 如何决定 PIP 中的哪些规则适用是特定于实施的,但这似乎是流程中非常重要的一部分——例如,如果您错过了一条规则,您将不会评估请求正确。人们用什么方法来实现这个?什么有效,什么无效? (我不情愿地倾向于查找 EAV-ish table。)

您总是使用一组策略配置 PDP。您可以为 PDP 提供任意数量的策略和策略集(策略组)但是您必须指定入口点,即必须有一个根政策。然后,该根策略可能包含和/或 link 到其他策略(或策略集)。

PDP 根据来自 PEP 的传入请求单独决定调用和评估哪些策略。 PEP 不知道有多少策略。您不会错过您在问题中陈述的规则。 PDP 有责任不这样做。您通常不会实施自己的 PDP。您会使用现成的。有几个开源引擎,例如SunXACML 和商业替代品,例如公理化。

PIP 用于属性值检索,不用于策略检索。