因此,我认为我对ABAC的工作原理掌握得很好,但是关于它的工作原理,还有一些事情让我感到困惑。
首先,让我先介绍一下我对ABAC的理解(也许我的理解存在缺陷)
在我的示例中,假设我使用abac的系统是一个Web应用程序:
- 通过静态API路由将对资源的请求发送到服务器
- 路线剖析请求,从请求中提取所有相关数据
- 然后,路由代码以PEP可以理解的格式将此数据传递到PEP(策略执行点)。
- PEP然后将这些数据传递到PDP(策略决策点)
- 然后,PDP(知道正在请求什么资源)可以从PRP(策略检索点)获取正确的策略
- 一旦检索到正确的策略,PDP就可以请求主题(请求资源的一个),对象(资源)和任何环境变量(例如,
time of day
)的所有相关属性为简便起见,请从PIP(政策信息点)
- 然后,PDP将使用新获取的属性来做出有关资源的决定,该决定是:主体可以对资源采取想要采取的行动吗?作为对/错的回应。
- 如果为true,则执行操作;如果为false,则路由将返回正确的错误代码(但仍不确定如何显示失败的实际原因)
因此,按照上述步骤操作:
- 这是ABAC运作方式的准确代表吗?
- ABAC如何处理资源列表(例如:我有一个页面列出所有食谱,但每个食谱都附有策略)?对于要检索的每个资源,是否都必须经过我上面列出的步骤?如果使用XACML,它是否可以处理资源列表?
- 我假设abac系统根据请求的资源来检索策略,但这实际上是它如何知道要检索哪个策略的?